■以下のデーモン化から、initスクリプトは、保存/復元/初期化のみ行う方針に変更
Lennyのiptablesをデーモン化
http://d.hatena.ne.jp/labunix/20120208
※ユーザ設定はすべて「/etc/smallfirewall」スクリプトから行う。
■万一に備えてシリアルコンソールで接続出来るようにしておく。
VMwarePlayerで、Squeeze on Squeeze シリアルコンソール接続
http://d.hatena.ne.jp/labunix/20120215
■shの参照先は、Lennyでは「bash」、squeezeでは「dash」
$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 2011-10-15 21:24 /bin/sh -> dash
■以下をダウンロード
smallfirewall.tar.gz(2012/02/18)
http://sourceforge.jp/users/labunix/pf/smallfirewall/
$ md5sum smallfirewall-20120218_v0.1.tar.gz
b0e7ef654473748e251bad480e082e57 smallfirewall-20120218_v0.1.tar.gz
■展開と配置
※インストール時に「insserv」と「chkconfig」を導入します。
※デフォルトでは、eth0のリッスン中のTCPとUDPを許可するだけです。
(拒否もログもありません)
$ tar zxvf smallfirewall-20120218_v0.1.tar.gz
$ cd smallfirewall-20120218
$ sudo ./install.sh
■先に導入しておくかuninstall.infoを空にしておくと、「./install -u」時に削除されません。
$ sudo apt-get install -y insserv chkconfig
$ dpkg -l | grep "insserv\|chkconfig" | awk '{print $1"\t"$2}'
ii chkconfig
ii insserv
■「/etc/smallfirewall」の設定に失敗したら「iptables-save」から復旧
$ sudo /etc/init.d/iptables stop && sudo /etc/init.d/iptables start
■「/etc/smallfirewall」の設定に成功したら、保存と復元チェック。
$ sudo /etc/init.d/iptables restart
■設定内容の確認方法の例
$ sudo iptables -L -v -n
■smallfirewallのカスタマイズ
デフォルトでは許可ポリシーにeth0のtcp/udpのINPUT/FORWARD/OUTPUTの許可を重ねるだけです。
※READMEを読んでsmallfirewallスクリプトを修正して下さい。
■「lo」についての記述が無い
※以下のようにします。
仮想NICも同様にして、慣れるまでは各NICを以下のように許可することをお勧めします。
iptables -A INPUT -i lo -j ACCEPT
iptables -A FORWARD -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
■ログを出す
※大量のログが出る事が予想される為、デフォルトでは設定がありません。
※ポリシーでDROPするのは初めはログ取得後にします。
iptables -A INPUT -j LOG --log-prefix "iptables-in : " --log-level=info
iptables -A FORWARD -j LOG --log-prefix "iptables-fo : "
iptables -A OUTPUT -j LOG --log-prefix "iptables-ou : "
iptables -P INPUT DROP
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
■ログを見ながら設定の変更
$ sudo tail -f /var/log/syslog | grep iptables
■テスト時の反映手順
$ sudo /etc/init.d/iptables stop
$ sudo /bin/bash -x /etc/smallfirewall
$ echo "成功したら" > /dev/null; sudo /etc/init.d/iptables restart
$ echo "失敗したら" > /dev/null; sudo /etc/init.d/iptables stop && sudo /etc/init.d/iptables start
■icmpについての記述が無い。
tcp/udpと関連するケースもあるので、ログ取得前にDROPする際はご注意下さい。
iptables -A INPUT -p icmp -j DROP
iptables -A OUTPUT -p icmp -j DROP
■他ネットワークからの通信の設定が無い。
ログを見ながら時間をかけて設定する必要があります。
環境に大きく左右されます。
正しく設定できてから、ポリシーをDROPに変更して下さい。