サーバーを公開すると、世界中から自分のサーバーにアクセス可能になってしまいます。無用なトラブルを避ける為にも、アクセス規制が有効です。 ここでは、CentOSでiptablesを使ったIPアドレスによる規制方法をまとめます。
具体的な設定方法は、よくまとめられているページを参考サイト欄で紹介しましたので、そちらを見つつ設定を詳しく見ていきたいと思います。 参考[1]のサイトはiptablesについてのmanページです。(Linuxでman iptablesとしたときの説明そのもの) 参考[2]と[3]はどちらも海外からの接続を遮断する内容が含まれているのですが、それぞれ長所と短所があります。
長所 | 短所 | |
参考[2] | サービス毎の細かい設定の記述がある | ファイルが複数に別れていてやや複雑 |
参考[3] | シンプル。 | サービス毎の細かい設定が少ない |
参考[3]の設定方法が必要かつ十分なので、ここでは参考[3]のページを解説していきます。
参考[3]では、iptablesを自動で設定するスクリプトファイルfilter_table.shを作成しています。 filter_table.shの内容を順番に見ていきます。
IPTABLES="/sbin/iptables" WGET="/usr/bin/wget" RM="/bin/rm"
ここでコマンドのパスを設定しています。 スクリプトファイルはrootで動かすと思うので、RMのところは以下のようにした方がよいでしょう。
RM="/bin/rm -f" <=-fを追加する。
国別IPアドレスの取得では、wgetコマンドにより、国別IPアドレスのファイルをダウンロードします。ここで-qオプションを外すとダウンロードの進捗を確認できます。このスクリプトは時間は終了まで時間がかかるため、進行度合いを確認するためには有効な手段だと思います。
$WGET http://ftp.apnic.net/stats/apnic/delegated-apnic-latest # APNIC <=-qを削除 $WGET ftp://ftp.arin.net/pub/stats/arin/delegated-arin-latest # ARIN
次に、既存の設定をクリアするスクリプトに入ります。クリア直後にスクリプトが停止した場合、サーバーに接続できなくなってしまうので、練習時は行頭に#を入れておくとよいです。
#$IPTABLES -F <=練習時は行頭に#を入れる。 #$IPTABLES -X #$IPTABLES -Z
少しすすんで、国別に拒否リストへ追加するパートです。ここでは、拒否リストに追加したくない国/地域は#でコメントアウトしておきます。
# 中国 #DROP_COUNTRY delegated-apnic-latest apnic CN <=中国は拒否しない #DROP_COUNTRY delegated-arin-latest arin CN <= ” # 韓国 DROP_COUNTRY delegated-apnic-latest apnic KR DROP_COUNTRY delegated-arin-latest arin KR # 北朝鮮 DROP_COUNTRY delegated-apnic-latest apnic KP DROP_COUNTRY delegated-arin-latest arin KP # 台湾 #DROP_COUNTRY delegated-apnic-latest apnic TW <=台湾は拒否しない #DROP_COUNTRY delegated-arin-latest arin TW <= ”
これ以降は、各サービス毎に許可か拒否かを選択する項目が続きます。 スクリプトの実行方法や設定の保存方法はサイトに書かれている通りですが、以下の順番にコマンドを入力すると、適用&再起動後も有効になります。
chmod u+x filter_table.sh <=実行権限付加 ./filter_table.sh <=フィルタ設定 /etc/init.d/iptables save <=フィルタ設定保存 /sbin/chkconfig iptables on <=再起動後も自動起動
/etc/init.d/iptables stop <=フィルタを停止(デフォルト設定に戻る) /etc/init.d/iptables save <=デフォルト設定状態として保存