さて、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サーバーへのシリアルコンソールを用いた接続を行ったことがないので実感できないのですが
時間を見つけてシリアルコンソールからの接続を試したいと思います!