iptables がログに記録されないのはなぜですか?

iptables がログに記録されないのはなぜですか?

Ubuntu 16.04 で実行されている Linux サーバーがあります。今日は侵入検知システムである PSAD をインストールしました。

PSAD は iptables のログファイルを分析することで機能します。したがって、PSAD を使用する前に最初に行うべきことは、iptables のログ記録を有効にすることです。

sudo iptables -A INPUT -j LOG
sudo iptables -A FORWARD -j LOG

ポート スキャンを実行し、その後 PSAD ステータスを呼び出しました。ポート スキャンが発生したことが表示されるはずですが、何も表示されませんでした。まだポート スキャンが行われていないというだけです。

しばらくして、iptablesがログを記録していないことに気付きました。iptablesのログが記録されたログファイルはありません。調べてみました。

  • /var/log/messagesデフォルトではここにあるはずですが、ファイルは空です
  • /var/log/kern.log
  • /var/log/syslog

何もない。UFWを使用していることは特筆に値するかもしれない。私はPSADとUFWに関するチュートリアルしかし、まだ何も起こりません。チュートリアルで作成された新しいファイルにもログはありません。

理由は何でしょうか? サーバーを自分でセットアップしたわけではありません。最も重要なセキュリティ対策は私より前に実施されています。一部のパッケージが削除されたのかもしれません。サーバーは安全でなければなりませんので、ご協力いただければ幸いです。

答え1

IP テーブル内のルールは上から下に適用されます。

ルールがパッケージに適用される場合、そのルールはルールの定義に従って処理され、(異なる設定が行われていない場合は) ルール チェーンから外れます。

つまり、LOG ルールが他のルールの下に配置されている場合、そのルールは以前のルールで処理されなかったパッケージにのみ適用されます。

代わりにすべてのパッケージをログに記録する場合は、対応するルール チェーンの一番上に LOG ルールを配置します。


ちなみに、iptablesのデフォルトのログファイルは次の場所にあります。/var/log/kern.log

答え2

おそらくカーネル ログが (r)syslog で無効になっています。/etc/rsyslog.conf ファイルに以下を追加し kern.warn /var/log/firewall.log、syslog をリロードします。

その後、次のようなルールを作ります。iptables -A -p tcp --dport 22 -j LOG --log-prefix " ALERT " --log-level=warning

SSH ポートをスキャンします。

答え3

次の行のコメントを解除します/etc/rsyslog.conf:

module(load="imklog") # provides kernel logging support

そして実行する

service rsyslog restart

ログを確認するには

tail -f /var/log/syslog

または:

date; stat /var/log/syslog

関連情報