CentOS 5.6 iptablesのログ出力を行う
投稿者:yasu 更新日時:2011年4月15日 15時02分33秒カテゴリ:CentOS, Linux, 自宅サーバー
iptablesで破棄されたアクセスのログを取ろうと思います。
ログファイルを別ファイルに出力してかつ毎週ローテーションしようと思います。
iptablesの設定
破棄されるアクセスのログを取りますので、最後のREJECTする前の行にログ出力の設定を追加します。
[root@centos ~]# vi /etc/sysconfig/iptables
# Firewall configuration written by system-config-securitylevel
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
~ 中略 ~
# ファイアーウォールのログを出力します
-A RH-Firewall-1-INPUT -j LOG --log-level debug --log-prefix '[iptables]:'
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT
[:]キー、[w]キー、[q]キーを順に押下して内容を保存しviエディタを終了します
# iptablesサービスを再起動します
[root@centos ~]# /etc/rc.d/init.d/iptables restart
ファイアウォールルールを適用中: [ OK ]
チェインポリシーを ACCEPT に設定中filter [ OK ]
iptables モジュールを取り外し中 [ OK ]
iptables ファイアウォールルールを適用中: [ OK ]
iptables モジュールを読み込み中ip_conntrack_netbios_ns [ OK ]
syslogの設定
iptablesのログ出力先を指定します。
[root@centos ~]# vi /etc/syslog.conf
# Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.* /dev/console
# iptablesのログ出力先を指定します
kern.debug /var/log/iptables.log
# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none /var/log/messages
# The authpriv file has restricted access.
authpriv.* /var/log/secure
# Log all the mail messages in one place.
mail.* -/var/log/maillog
# Log cron stuff
cron.* /var/log/cron
# Everybody gets emergency messages
*.emerg *
# Save news errors of level crit and higher in a special file.
uucp,news.crit /var/log/spooler
# Save boot messages also to boot.log
local7.* /var/log/boot.log
# iptables log
[:]キー、[w]キー、[q]キーを順に押下して内容を保存しviエディタを終了します
# syslogサービスを再起動します
[root@centos log]# /etc/rc.d/init.d/syslog restart
カーネルロガーを停止中: [ OK ]
システムロガーを停止中: [ OK ]
システムロガーを起動中: [ OK ]
カーネルロガーを起動中: [ OK ]
ログローテーションの設定
iptablesのログのローテーション設定を行います。
/var/log/messages /var/log/secure /var/log/maillog /var/log/spooler /var/log/boot.log /var/log/cron /var/log/iptables.log {
sharedscripts
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
/bin/kill -HUP `cat /var/run/rsyslogd.pid 2> /dev/null` 2> /dev/null || true
endscript
}
[:]キー、[w]キー、[q]キーを順に押下して内容を保存しviエディタを終了します
以上で設定は終了です。
しばらくして出力した/var/log/iptables.logを見てみると
Apr 15 02:00:39 centos kernel: '[iptables]:'IN=eth0 OUT= MAC=00:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:00 SRC=114.166.97.239 DST=192.168.0.xx LEN=516 TOS=0x00 PREC=0x00 TTL=53 ID=14481 PROTO=TCP SPT=65019 DPT=80 WINDOW=65535 RES=0x00 ACK PSH URGP=0
Apr 15 10:56:35 centos kernel: '[iptables]:'IN=eth0 OUT= MAC=00:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:00 SRC=58.4.67.21 DST=192.168.0.xx LEN=40 TOS=0x00 PREC=0x00 TTL=54 ID=33035 PROTO=TCP SPT=62597 DPT=80 WINDOW=16614 RES=0x00 RST URGP=0
Apr 15 10:56:39 centos kernel: '[iptables]:'IN=eth0 OUT= MAC=00:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:00 SRC=58.4.67.21 DST=192.168.0.xx LEN=40 TOS=0x00 PREC=0x00 TTL=54 ID=43980 PROTO=TCP SPT=58552 DPT=80 WINDOW=16412 RES=0x00 RST URGP=0
Apr 15 12:27:21 centos kernel: '[iptables]:'IN=eth0 OUT= MAC=000:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:00 SRC=180.11.99.99 DST=192.168.0.xx LEN=743 TOS=0x00 PREC=0x00 TTL=117 ID=17774 PROTO=TCP SPT=62767 DPT=80 WINDOW=66 RES=0x00 ACK PSH URGP=0
Apr 15 13:14:43 centos kernel: '[iptables]:'IN=eth0 OUT= MAC=00:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:00 SRC=218.42.83.100 DST=192.168.0.xx LEN=40
こんなアクセスがあった事がわかります。

