iptablesの設定

こちらを参考に設定しました。
各shellを読んでみる(解説は書いてあるが書いて覚える)

1.iptables.shの作成(iptablesを再起動し、ルールを再設定)
1-1.ifconfigコマンドを使ってeth0の内部(LAN)ネットマスクを取得。(例.255.255.255.0)
1-2.netstatコマンドを使ってeth0の内部(LAN)ネットワークアドレス取得。(例.192.168.1.0)
1-3.iptablesの停止
1-4.デフォルトのルールを設定。(送信のみ許可、受信、通過は破棄)
1-5.自ホスト、LAN内からのアクセス、LAN内から外部に出て行ったアクセスの返答の許可。
1-6.SYN Cookies*1(スウィン クッキーズ)を有効にする。
1-7.ブロードキャストアドレス宛pingに応答しない。(Smurf攻撃対策)*2
1-8.ICMP Redirectパケットを拒否(ICMP Redirectって何だ?)
1-9.Source Routedパケットは拒否(Source Routedパケットって何だ?)
1-10.ログの設定
1-11.iptables_functionsスクリプト(後で作る)でIPアドレスリストを取得
1-12.日本からのみアクセス許可するユーザ定義チェイン*3を作成
1-13.中国、韓国、台湾からのアクセスを拒否するユーザ定義チェインを作成
1-14.IPアドレスリストを削除
1-15.中国、韓国、台湾からのアクセスをログに記録してアクセス拒否
1-16.各種サービスのポートの設定
1-17.拒否IPアドレスからのアクセスはログに記録せずに破棄
1-18.ルールにマッチしなかったアクセスはログに記録して破棄
1-19.ルールの保存
1-20.iptables再起動

2.iptables_functionsの作成(http://nami.jp/ipv4bycc/cidr.txtより最新のIPアドレスリストを取得)
2-1.cidr.txtを取得し、/tmp/にコピーを作る。(cidr.txtが取得できない場合、/tmp/にあるコピーを最新版のIPアドレスリストとするため)

3./etc/cron.daily/iplist_check.shの作成(1日一回実行される、シェル)
3-1.2のiptables_functionsを使用し、前日と比べてIPアドレスリストが変更されているかを確認する
3-2.変更されている場合、1のiptables.shでiptablesのルールを再設定する。


難しい…。これくらい書けるようになりたいです。


2chで見つけた、ICMP Redirect、Source Routedパケットにつての説明

・Source-route なパケットは全て捨てる
・ICMP でも Route Redirect は必ず捨てるか、ルータで無効にする

前者の理由は、Spoofing の防止をより確実にすることにあります。
IP Spoofing をする目的はフィルタをすり抜けることにありますが
(内部アドレスを騙ることによって通常より制限が緩いであろうフィルタに
マッチするようにする)、このときに戻りのトラフィックが攻撃者のマシンに
戻ってこない(なぜなら戻りトラフィックの終点 = 内部アドレス)ので、
Source Route オプションを用いて攻撃者のところに戻すようにするのです。
このような使われ方を防止するために、IP Source Route Option のついた
パケットは全て捨てた方がよいです。Source route は現在では通常の用途で
使われることはほとんどないので捨てて何か支障が出るということは
ありません(かなり特殊な用途でのみ用いられます。Source Route の必要性は
DiffServ などのポリシーベースルーティング機構によって置換されるでしょう)。

後者の理由は、ICMP Route Redirect を用いると、任意のルータにおいて
任意の宛先へのパケットを任意のルータへ向けることが可能になるため、
実質的にパケットの盗聴が可能になるためです。なお、このような危険性を
考慮して通常のルータでは ICMP Route Redirect は無効になっているはずです。

*1:http://ja.wikipedia.org/wiki/SYN_cookies

*2:http://e-words.jp/w/SmurfE694BBE69283.html

*3:iptablesコマンドのACCEPTの部分を定義したチェインに変えると日本からのみアクセスを許可する