3303 iptablesでJP以外を拒否したい

<<トップページへ

iptablesでJP以外を拒否したい
日時: 2007/10/13 23:55
名前: Pスタ
iptablesの設定で、中国/韓国/台湾からのアクセスを拒否する設定がありましたが、
私の場合、別段世界に発信するようなサイトではないため、JP以外を拒否する設定を
したいと考え、できるだけ多くの国コードを設定してリストに加えてみました。

# IPアドレスリスト取得
IPLISTGET http://ftp.apnic.net/stats/apnic/delegated-apnic-latest apnic # APNIC
IPLISTGET ftp://ftp.arin.net/pub/stats/arin/delegated-arin-latest arin # ARIN
IPLISTGET ftp://ftp.lacnic.net/pub/stats/lacnic/delegated-lacnic-latest lacnic # LACNIC
IPLISTGET ftp://ftp.ripe.net/ripe/stats/delegated-ripencc-latest ripencc # RIPE-NCC

↑取得できた内部の2文字のコードで出てきているもの全て(JP除く)を拒否した。
(ちょっと拒否するためのリストが長すぎて、控えましたが原因解決に必要で
あれば、迷惑かもしれませんがのっけます)

で、本題なのですが、拒否国を列挙したiptables.shを実行すると以下のところで
延々と次の処理にいかずとまってしまいます(1時間以上・・・)

ファイアウォールルールを適用中: [ OK ]
チェインポリシーを ACCEPT に設定中filter [ OK ]
iptables モジュールを取り外し中 [ OK ]
(delegateが消えてないので、「DROP_COUNTRY_MAKE」の処理中だとは思うのですが(^^))

今のところ環境によって時間がかかるという部分で納得しようとしてますが
実は、設定が有効にならない状態でいるならば、問題になってしまうので
次の点で情報お持ちの方、教えてください

1.「DROP_COUNTRY_MAKE」を大量に設定した際の処理時間の法則
 →つまり、どれだけ待てば良いのか?

2.iptables.shの処理を見る方法

3.JP以外を拒否する方法として別の方法があれば

おねがいします。

Re: iptablesでJP以外を拒否したい(1)
日時: 2007/10/14 10:05
名前: ZED
http://fedorasrv.com/iptables.shtml(2007.09.08)
で構築しているのであれば、

# 中国・韓国・台湾からのアクセスを破棄するユーザ定義チェインDROP_COUNTRY作成
iptables -N DROP_COUNTRY
DROP_COUNTRY_MAKE delegated-apnic-latest apnic CN # APNIC
DROP_COUNTRY_MAKE delegated-arin-latest arin CN # ARIN
DROP_COUNTRY_MAKE delegated-apnic-latest apnic KR # APNIC
DROP_COUNTRY_MAKE delegated-arin-latest arin KR # ARIN
DROP_COUNTRY_MAKE delegated-apnic-latest apnic TW # APNIC
DROP_COUNTRY_MAKE delegated-arin-latest arin TW # ARIN
# 以降,中国・韓国・台湾からのアクセスを破棄したい場合はDROPのかわりにDROP_COUNTRYを指定する

# 中国・韓国・台湾※からのアクセスをログを記録して破棄
# ※全国警察施設への攻撃元上位3カ国(日本・アメリカを除く)
# http://www.cyberpolice.go.jp/detect/observation.htmlより
iptables -A INPUT -j DROP_COUNTRY

を削除

#----------------------------------------------------------#
# 各種サービスを公開する場合の設定(ここから) #
#----------------------------------------------------------#
#----------------------------------------------------------#
# 各種サービスを公開する場合の設定(ここまで) #
#----------------------------------------------------------#

の間のACCEPT を ACCEPT_COUNTRY に変えてしまえば済む話です。
その他の通信はdropされます。

また、
(2)IPアドレスリスト更新チェック
も、
# チェック国コード
COUNTRY_CODE='JP CN KR TW'

COUNTRY_CODE='JP'

としてしまえば、劇的に早くなるでしょう。

1.に関してはサーバースペックにもよりますので、わかりません。
全部の国を指定したのであれば、丸1日なんてことも・・・
2.に関しては、ループ処理時にコンソールにprint文で文字を出力させれば可能です。
これについては、ググればいっぱい出てくるので、省略。

Re: iptablesでJP以外を拒否したい(2)
日時: 2007/10/14 10:08
名前: たう
>3.JP以外を拒否する方法として別の方法があれば

# 以降,日本からのみアクセスを許可したい場合はACCEPTのかわりにACCEPT_COUNTRYを指定する
(例)
# 外部からのTCP80番ポート(HTTP)へのアクセスを許可
# ※Webサーバーを公開する場合のみ
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
↓日本からのみにする
iptables -A INPUT -p tcp --dport 80 -j ACCEPT_COUNTRY

Re: iptablesでJP以外を拒否したい(3)
日時: 2007/10/14 11:12
名前: 管理人
>1.「DROP_COUNTRY_MAKE」を大量に設定した際の処理時間の法則
> →つまり、どれだけ待てば良いのか?
マシンスペックによりますが、iptablesのルール登録処理は時間がかかります。今回のように日本以外の全てのIPアドレスからのアクセスを破棄するようなルールを登録しようとした場合、数時間はかかってしまうと思います。やったことはありませんが。

>2.iptables.shの処理を見る方法
sh -x ./iptables.shとすれば、シェルスクリプリトの実行状況が表示されます。

>3.JP以外を拒否する方法として別の方法があれば
こちらは既にZED様、たう様が回答されているとおり、ACCEPTするサービスに対して、日本からのアクセスを許可するユーザ定義チェインACCEPT_COUNTRYを指定すればよいです。

Re: iptablesでJP以外を拒否したい(4)
日時: 2007/10/14 15:15
名前: Pスタ
ZED様、たう様、管理人様、回答ありがとうございます。

>3.JP以外を拒否する方法として別の方法があれば
たしかに、みなさんのご指摘どおりです。

う〜ん、当初これを考えていた記憶があるんですが、何故JP以外の国を列挙するように
変更したのか、思い出せない・・・・

もしかしたら、どの国コードでも該当しないIPアドレスがあるかもしれない。と
思ったからかなぁ。(自分の思考ログを思い出せない)



皆さんの指摘に従い、早速設定しました。

情報どおり、あっという間に設定が完了しました。(^_^)


ありがとうございました。

※古いスレッドには返信できない場合があります


■関連コンテンツ




▲このページのトップへ戻る

ご自由にリンクしてください(連絡は不要です)
本ページへのご意見・ご要望、誤字・脱字・リンク切れ等のご連絡はこちらからお願いします