11月 102011
 
シェアする

さて、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 ~]#

どうやら、私が利用しているVPSsyslogの設定は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 ~]#

以上

このエントリーをはてなブックマークに追加

  3 コメント

  1. […] klogdちゃん、こんにちは。iptablesのログ出力ができない!の巻 […]

  2. こちらにも情報を載せておきます。シリアルコンソールの方に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は別な方法があるみたいです。検証はしていません。

    ちなみに数字ですが、
    左からコンソールログレベル、メッセージログレベル、最小コンソールログレベル、デフォルトコンソールログレベルです

  3. くりくりさん
    情報の共有ありがとうございます。
    私はいまだにLinuxサーバーへのシリアルコンソールを用いた接続を行ったことがないので実感できないのですが
    時間を見つけてシリアルコンソールからの接続を試したいと思います!

コメント大歓迎!質問も受け付けておりますヽ(*´∀`)ノ