* iptables ログ [#pd15596a]
** 目的 [#w0c58407]
- INPUTポリシーをDROPにして、必要なポートのみ許可する。許可されないアクセスは全てロギングする。
- ログは独自のファイルに書き出して、ロテートする。
** ロギング [#d281569d]
*** logdropチェーンを作成する [#o3a83eb5]
iptables -N logdrop
iptables -A logdrop -j LOG --log-prefix "IPTABLES-LOG: "
iptables -A logdrop -j DROP
logdropチェーンはLOGした後にすぐにDROPする。
*** 最後のルールにlogdropを指定する [#z4acac30]
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -j logdrop
iptables -P INPUT DROP
必要なポリシー・ルールを設定した後に、最後にlogdropを指定するルールを設定する。
*** 参考:許可するアクセスをロギングする [#k53c80d7]
iptables -N logaccept
iptables -A logaccept -j LOG --log-prefix "IPTABLES-ACCEPT-LOG: "
iptables -A logaccept -j accept
上のようなlogacceptチェーンを作って、これまで-j ACCEPTで許可していたルールを-j logacceptへ変更する。
*** 参考:ログレベルの指定 [#n1b5e8e8]
- ログレベルはデフォルトではファシリティはkern、プライオリティwarn、ログファイルは/var/log/messages。ファシリティは変更できないが、プライオリティを変更する場合はオプションに"--log-level info"等と追加する。
- http://www.turbolinux.com/products/server/11s/user_guide/x9487.html#AEN9579
** シスログの切り出し[#v79b8a71]
vi /etc/rsyslog.d/iptables.conf
:msg, contains, "IPTABLES-LOG:" -/var/log/iptables.log
& ~
/etc/rc.d/init.d/rsyslog restart
*** 参考 [#o06f6d74]
- 複数のログに切り出す場合は以下のように設定を増やす。
:msg, contains, "IPTABLES-LOG:" -/var/log/iptables.drop.log
& ~
:msg, contains, "IPTABLES-ACCEPT-LOG:" -/var/log/iptables.accept.log
& ~
- http://www.rsyslog.com/doc/rsyslog_conf_filter.html
- 「&」は前の行とつなぐという意味、「~」は前の行のコマンドでフィルターされたログを破棄するという意味。
** ログロテート [#gff9c245]
vi /etc/logrotate.d/iptables
/var/log/iptables.log {
rotate 5
weekly
compress
missing ok
notifempty
service rsyslog reload 2> /dev/null || true
}
** 参考 [#fa751f71]
- http://blog.shadypixel.com/log-iptables-messages-to-a-separate-file-with-rsyslog/
- http://www.atmarkit.co.jp/flinux/rensai/linuxtips/747logrotatecmd.html
- http://toastresearch.com/2011/04/09/packet-logging-with-iptables/
*** アクセスをACCEPTした接続をログする [#vb909ba4]
http://stackoverflow.com/questions/21771684/iptables-log-and-drop-in-one-rule