さて、iptablesで特定のルールに合致した物をログに出力する方法 を以前ご紹介させて頂きました。
iptablesを正しく設定し、「dmesg」コマンドでは正しくログを確認できた。
しかし、/var/log/messagesや別途指定した/var/log/iptablesには
iptablesのログ出力がなかった!
WHY!?
syslogdを再起動する時に以下のようなメッセージが出ていたが今まで困った事がなかったので あまり気にしていませんでしたが、ここを問い詰めたとこを解決しました。
[root@vps1 ~]# service syslog restart
Shutting down kernel logger : [PASSED ]
Shutting down system logger: [ OK ]
Starting system logger: [ OK ]
Starting kernel logger : [PASSED ]
[root@vps1 ~]#
コピー よーく見てみると「PASSED」って、klogdの起動も停止も“PASS ”されています ね。
そこで、 syslogの起動スクリプト/etc/init.d/syslogの記述 を確認してみました。
[root@vps1 ~]# grep 'passed' /etc/init.d/syslog
passed klogd skipped #daemon klogd $KLOGD_OPTIONS
passed klogd skipped #killproc klogd
[root@vps1 ~]#
コピー どうやら、私が利用しているVPS のsyslogの設定はklogdの起動も停止もしない設定 になっているようです。
このコメントアウト「passed klogd skipped #」を削除 し、kernel loggerがsyslog起動時に 共に起動し、かつkernelログをログファイルに出力できるようにしてやります。
設定変更 sedコマンドを用いて、/etc/init.d/syslog のバックアップを取りつつ 、 /etc/init.d/syslogの中 の「passed klogd skipped #」の記述を「」に置き換えます (削除します)。
[root@vps1 ~]# sed -i.BAK`date +%Y%m%d`~ 's/passed klogd skipped #//g' /etc/init.d/syslog
コピー 作成したバックアップを確認し、「diff」で差分もチェックしておきましょう。
[root@vps1 ~]# ls -la /etc/init.d/syslog*
-rwxr-xr-x 1 root root 2044 Nov 10 13:27 /etc/init.d/syslog
-rwxr-xr-x 1 root root 2088 Feb 3 2010 /etc/init.d/syslog.BAK20111110~
[root@vps1 ~]#
[root@vps1 ~]# diff /etc/init.d/syslog /etc/init.d/syslog.BAK20111110~
41c41
< daemon klogd $KLOGD_OPTIONS
---
> passed klogd skipped #daemon klogd $KLOGD_OPTIONS
48c48
< killproc klogd
---
> passed klogd skipped #killproc klogd
[root@vps1 ~]#
コピー 変更完了を確認したら後は、syslogの再起動を行うだけです。
[root@vps1 ~]# service syslog restart
Shutting down kernel logger: [ OK ]
Shutting down system logger: [ OK ]
Starting system logger: [ OK ]
Starting kernel logger: [ OK ]
[root@vps1 ~]#
コピー iptables でログの出力設定を行なっている場合は、設定している出力先のログファイルにて 正しくiptablesのログが出力されているか確認してください。また、今まで起動していなかった klodのプロセスも確認できると思いますので、ps auxww | grep logd | grep -v grep などで ご確認ください。
[root@vps1 ~]# ps auxww | grep logd | grep -v grep
root 19936 0.0 0.0 1808 576 ? Ss 13:42 0:00 syslogd -r -m 0
root 19939 0.0 0.0 1756 404 ? Ss 13:42 0:00 klogd -x
[root@vps1 ~]#
コピー 以上
コメント
[…] klogdちゃん、こんにちは。iptablesのログ出力ができない!の巻 […]
こちらにも情報を載せておきます。シリアルコンソールの方にiptablesのログが出力されて一秒間に何個も出力されることに悩まされてました。
それで出力を抑える方法をさがしていましたら、とめ方をみつけました。
デフォルトの設定
# cat /proc/sys/kernel/printk
出力をとめる
#echo “4 1 1 7” > /proc/sys/kernel/printk
これだと再起動後設定が元に戻るの
# vi /etc/sysctl.conf
kernel.printk = 4 1 1 7
ちなみにこの方法はCentOS6の場合です。CentOS5は別な方法があるみたいです。検証はしていません。
ちなみに数字ですが、
左からコンソールログレベル、メッセージログレベル、最小コンソールログレベル、デフォルトコンソールログレベルです
くりくりさん
情報の共有ありがとうございます。
私はいまだにLinuxサーバーへのシリアルコンソールを用いた接続を行ったことがないので実感できないのですが
時間を見つけてシリアルコンソールからの接続を試したいと思います!