Debian
為 iptables 配置自定義日誌文件
我正在嘗試將刪除的包記錄到自定義文件而不是
/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 ULOG
ULOG 模組沒有概念,--log-level
因此您可以刪除這些選項。它還使用--ulog-prefix
代替--log-prefix
.