以下の通りの方針に従って設定を行う
- 入力(INPUT),転送(FORWARD)は許可したもの以外は破棄(DROP)
- 出力(OUTPUT)は基本的に許可(ACCEPT)
入力で許可するもの以下のとおり
- sshサーバへの接続は許可
- ローカルループバックインターフェースからの接続は許可
- pingなどICMPパケットを許可
- 自サーバから接続済みの通信に関するパケットを許可
ip偽装攻撃対策
- プライベートIPアドレスからの接続は破棄
- ローカルループバックからの接続は拒否
- 特殊なアドレス(リンクローカル,TEST-NET,クラスD,クラスE)からの接続は拒否
Smarf攻撃対策
- ブロードキャストのパケットを破棄
上記に対応する iptables の設定は以下
/etc/sysconfig/iptables
# Generated by iptables-save v1.4.7 on Wed Apr 2 03:07:56 2014
*filter
# 入力(INPUT),転送(FORWARD)は許可したもの以外は破棄(DROP)
:INPUT DROP [26:2578]
:FORWARD DROP [0:0]
# 出力(OUTPUT)は基本的に許可(ACCEPT)
:OUTPUT ACCEPT [4:432]
# sshサーバへの接続は許可(xxxxxxは実際はsshのポート番号)
-A INPUT -p tcp -m tcp --dport xxxxxx -j ACCEPT
# 自サーバから接続済みの通信に関するパケットを許可
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# ローカルループバックインターフェースからのパケットは許可
-A INPUT -i lo -j ACCEPT
# icmpパケットを許可
-A INPUT -p icmp -j ACCEPT
# ip偽装対策1(プライベートアドレスからのパケットは破棄)
-A INPUT -s 10.0.0.0/8 -j DROP
-A INPUT -s 172.16.0.0/12 -j DROP
-A INPUT -s 192.168.0.0/16 -j DROP
# ip偽装対策2(特殊なアドレスからのパケットを拒否)
-A INPUT -s 127.0.0.0/8 -j DROP # ローカルループバックアドレス
-A INPUT -s 169.254.0.0/16 -j DROP # ローカルアドレス
-A INPUT -s 192.0.2.0/24 -j DROP # TEST-NET
-A INPUT -s 224.0.0.0/4 -j DROP # クラスD
-A INPUT -s 240.0.0.0/5 -j DROP # クラスE
# Smarf攻撃対策(ブロードキャストパケットの破棄)
-A INPUT -d 0.0.0.0/8 -j DROP
-A INPUT -d 255.255.255.255/32 -j DROP
COMMIT
サービスの起動/停止
起動
$ sudo /etc/init.d/iptables start
停止
$ sudo /etc/init.d/iptables stop
再起動
$ sudo /etc/init.d/iptables restart