iptables -ログの採取


-- 概要 --------
iptables で DROP した接続のログをファイルに落とす。
iptables でログ採取の設定が可能。
ただし,デフォルトでは /var/log/messages に書き込むみたい。
messages がややこしくなるので,iptables のログは別のファイルに落とすようにする。
iptables 用のログファイルは,とりあえず /var/log/iptables 。
で,このファイルに書き込む設定は /etc/syslog.conf で。


-- 手順 --------
1./sbin/iptables でログ採取の設定。
2./etc/syslog.conf でログの書き込み場所の指定。
 ※messages に書き込まないようにも設定する。
3.書き込むログファイルの作成。
4.syslog デーモンの再起動。


-- 詳細 --------

1./sbin/iptables でログ採取の設定。

DROP 設定の直前に書き込む。

# /sbin/iptables -A INPUT -i [インターフェース名] -s [拒否したいIP] -j LOG


※必ず DROP とワンセットで直前に書き込むこと。



2./etc/syslog.conf でログの書き込み場所の指定。

/etc/syslog.conf に,次の2行を追加。


# iptables log
*kern.debug /var/log/iptables


※この時,同時に messages への書き込みをしないように設定する。
/etc/syslog.conf 内で,次の行を探す。


*.info;mail.none;news.none;authpriv.none;cron.none /var/log/messages


これに次のように文字を追加


*.info;mail.none;news.none;authpriv.none;cron.none;kern.none /var/log/messages



3.書き込むログファイルの作成。


# touch /var/log/iptables
でログファイルを生成。


# chmod 600 /var/log/iptables
でroot のみが書き込めるようにする。



4.syslog デーモンの再起動。

syslog.conf の設定を反映するために syslog デーモンを再起動。


# /etc/init.d/syslog restart


----------------

SYN flood を激しく受けてたので iptables で拒否してやったw
接続を確認すると、ほぼ同じアドレスブロックからの攻撃だったのでアドレスブロックごとね。

ってことで、iptables について...

コマンド:/sbin/iptables


-------------------------------------------
iptables の設定の順序は次のとおり。

1.ポリシーを決める。
2.ルールをクリアする。
3.ルールをキー入力する。
4.設定をセーブする。
5.iptables を再起動する。
-------------------------------------------


1.ポリシーを決める

 まず INPUT については、一旦すべて ACCEPT(許可) します。FORWARD は使わないので DROP(破棄) します。OUTPUT は、すべて ACCEPT(許可) します。


# iptables -P INPUT ACCEPT
# iptables -P FORWARD DROP
# iptables -P OUTPUT ACCEPT


※FORWARD はルータとして動作させるときに設定します。



2.ルールをクリアする

 ひとまず、ルールをクリアしておきます。

# iptables -F



3.ルールをキー入力する

 それではルールを入力していきましょう。


特定のIPアドレスからの接続を全て拒否
# iptables -A INPUT -i [インターフェース名] -s [発信元IPアドレス] -j DROP


特定のIPアドレスブロックからの接続を全て拒否(例えば 192.168.0.0/24)
# iptables -A INPUT -i [インターフェース名] -s 192.168.0.0/24 -j DROOP


////
icmp(ping)と自端末からの入力を許可
# iptables -A INPUT -p icmp -j ACCEPT
# iptables -A INPUT -i lo -j ACCEPT


Web、FTP、POP、smtp による接続を許可
# iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# iptables -A INPUT -p tcp --dport 21 -j ACCEPT
# iptables -A INPUT -p tcp --dport 110 -j ACCEPT
# iptables -A INPUT -p tcp --dport 25 -j ACCEPT


DNSサーバの運用があるなら次の2行を追加
# iptables -A INPUT -p tcp --dport 53 -j ACCEPT
# iptables -A INPUT -p udp --dport 53 -j ACCEPT


ssh による接続を許可
# iptables -A INPUT -p tcp --dport 22 -j ACCEPT


ローカルの他端末からWebminでの接続を許可(Webminのポート:10000)
# iptables -A INPUT -s 192.168.0.0/24 -p tcp --dport 10000 -j ACCEPT


TCPの接続開始と応答、FTPデータなどを許可
# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT


他の接続はすべて破棄(ポリシーの再設定)
# iptables -P INPUT DROP


////



4.設定をセーブする

 ここまでキー入力したルールは、サーバを再起動すると消えてしまいます。よって、ルールをセーブし、次回の起動時にも適用されるようにします。


ルールをセーブする
# /etc/init.d/iptables save



5.iptables を再起動する。
 それでは、念のため iptables を再起動してルールをしっかり適用させましょう。


iptables の再起動
# service iptables restart
現在のすべてのルールとユーザ定義チェインを初期化中:    [ OK ]
現在のすべてのルールとユーザ定義チェインを破棄:      [ OK ]
iptablesファイアウォールルールを適用中:          [ OK ]
                              [ OK ]

-------------------------------------------