我正在尝试将删除的包记录到自定义文件而不是/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
。
缺少哪个配置?
解决了 问题是两者之间不应该有空格-和/
答案1
问题是 - 和 / 之间不应该有空格
答案2
这可以使用以下方法实现:
要禁用 syslog 中的 iptables 日志,请进行如下修改/etc/rsyslog.d/50-default.conf
:
*.*;auth,authpriv.none;kern.*=!kern.warning -/var/log/syslog
登录单独的文件;附加:
kern.=warning -/var/log/iptables.log
然后重新启动syslog
或rsyslog
和tail
日志
/etc/init.d/rsyslog restart
它syslog
也适用rsyslog
于
答案3
这是使用 的另一种方法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
.
答案4
ulogd 的工作解决方案
a)确保启动此模块
modprobe nf_log_ipv4
cp /etc/modules /etc/modules.bak
echo nf_log_ipv4 >> /etc/modules
b)编辑文件/etc/ulogd.conf启用这些插件(取消注释#)
plugin="/usr/lib64/ulogd/ulogd_inppkt_NFLOG.so"
plugin="/usr/lib64/ulogd/ulogd_filter_IFINDEX.so"
plugin="/usr/lib64/ulogd/ulogd_filter_IP2STR.so"
plugin="/usr/lib64/ulogd/ulogd_filter_PRINTPKT.so"
plugin="/usr/lib64/ulogd/ulogd_output_LOGEMU.so"
plugin="/usr/lib64/ulogd/ulogd_raw2packet_BASE.so"
在第一个注释的 # stack 之前添加此行
stack=firewall11:NFLOG,base1:BASE,ifi1:IFINDEX,ip2str1:IP2STR,print1:PRINTPKT,emu11:LOGEMU
最后在文件末尾添加这些行
[firewall11]
group=11
[emu11]
file="/var/log/iptables.log"
sync=1
c) 现在,我更喜欢使用 iptables 脚本的旧方法而不是 firewalld,在我的 iptables 脚本中我使用这些行进行日志记录。
# Log
iptables -N LOGGING
iptables -A INPUT -j LOGGING
iptables -A FORWARD -j NFLOG
iptables -A LOGGING -j NFLOG --nflog-prefix "[firewall-drop]:" --nflog-group 11
iptables -A LOGGING -j DROP
d) 最终部分
touch /var/log/iptables.log
systemctl restart ulogd
验证是否可以使用此命令
tail -f /var/log/iptables.log
您应该在事件后看到一些行:nmap portscan,或者只是 telnet 到您的计算机(希望已禁用或防火墙)。