Debian

為 iptables 配置自定義日誌文件

  • December 19, 2019

我正在嘗試將刪除的包記錄到自定義文件而不是/var/log/messages.

為此,我在配置文件的末尾添加了這兩行:

   -A INPUT -m limit --limit 5/min -j LOG --log-prefix "IPTables-INPUT-Dropped: " --log-level 4
   -A OUTPUT -m limit --limit 5/min -j LOG --log-prefix "IPTables-OUTPUT-Dropped: " --log-level 4

這是因為我預設將 INPUT 和 OUTPUT 鏈配置為 DROP,所以如果包不符合任何先前的規則,它將被記錄並丟棄。

但是,我無法將它們記錄到自定義文件中。他們登錄成功/var/log/messages,但我希望他們能夠登錄/var/log/iptables.log。我創建了/etc/rsyslog.d/iptables.conf包含以下內容的文件:

   :msg, contains, "IPTables-INPUT-Dropped: " - /var/log/iptables.log
   & ~

然後我重新啟動了 rsyslog,/etc/init.d/rsyslog restart並發送了一些我知道會被丟棄的包。但是,它們沒有登錄 iptables.log,它們仍在登錄中/var/log/messages

缺少哪個配置?

已解決問題是**-/** 之間不應該有空格

問題是 - 和 / 之間不應該有空格

這是另一種使用ulogd. 我建議使用這種機制,因為它會停止使用核心日誌記錄機制-m LOG(這也有填充日誌的嚴重副作用dmesg)。

首先,您需要 ulogd,您可以使用apt-get install ulogd. 編輯您的/etc/ulogd.conf,啟用此模組(通過刪除#行首的 ):

plugin="/usr/lib/ulogd/ulogd_LOGEMU.so"

並更改/添加部分[LOGEMU]

[LOGEMU]
file="/var/log/iptables.log"
sync=1

然後重新啟動你的 ulogd /etc/init.d/ulogd restart。然後而不是在您的 iptables 規則上-j LOG使用。-j ULOGULOG 模組沒有概念,--log-level因此您可以刪除這些選項。它還使用--ulog-prefix代替--log-prefix.

引用自:https://unix.stackexchange.com/questions/88994