debek Asked: 2018-02-14 01:58:05 +0800 CST2018-02-14 01:58:05 +0800 CST 2018-02-14 01:58:05 +0800 CST 在 centos 7 上记录 iptables 事件 772 我的centos 7 上有iptables。我的firewalld 已禁用。如何记录我的 iptables 事件?在 debian 上它是 dmesg 选项,但我不知道如何在 centos 上设置它。 我想记录我所有的 iptables 事件。没有具体规定。 centos iptables 5 个回答 Voted telcoM 2018-02-14T02:20:06+08:002018-02-14T02:20:06+08:00 当数据包匹配iptables ... -j LOG规则时,会生成内核日志消息。您可以使用选项指定消息的严重级别,--log-level <level>其中<level>可以是标准系统日志级别标识符之一:emerg、alert、crit、error、warning、notice或。infodebug 这些日志消息被处理rsyslog:如果严重级别足够低,rsyslog可能会完全丢弃这些消息。由于 iptables 日志消息来自内核,因此它们的日志类别将始终为kern. 因此/etc/rsyslog.conf,请查看要处理的消息的最低严重性级别kern.*,以及它们将存储到哪个日志文件中。iptables -j LOG然后为您的规则设置适当的严重性级别。 或者使用iptables ... -j LOG --log-prefix <prefix>选项为 iptables 消息添加可识别的前缀,然后使用 的高级功能rsyslog将 iptables 消息写入单独的日志文件。 Best Answer debek 2018-02-15T00:11:28+08:002018-02-15T00:11:28+08:00 我找到了最适合我的解决方案:警告级别: iptables -A INPUT -j LOG --log-prefix "BAD_INPUT: " --log-level 4 iptables -A FORWARD -j LOG --log-prefix "BAD_FORWARD: " --log-level 4 iptables -A OUTPUT -j LOG --log-prefix "BAD_OUTPUT: " --log-level 4 调试级别: iptables -A INPUT -j LOG --log-prefix "BAD_INPUT: " --log-level 7 iptables -A FORWARD -j LOG --log-prefix "BAD_FORWARD: " --log-level 7 iptables -A OUTPUT -j LOG --log-prefix "BAD_OUTPUT: " --log-level 7 日志存储在: /var/log/messages 样本输出: Aug 4 13:22:40 centos kernel: BAD_INPUT: IN= OUT=em1 SRC=192.168.1.23 DST=192.168.1.20 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=0 DF PROTO=ICMP TYPE=8 CODE=0 ID=59228 SEQ=2 Aug 4 13:23:00 centos kernel: BAD_INPUT: IN=em1 OUT= MAC=a2:be:d2:ab:11:af:e2:f2:00:00 SRC=192.168.2.115 DST=192.168.1.23 LEN=52 TOS=0x00 PREC=0x00 TTL=127 ID=9434 DF PROTO=TCP SPT=58428 DPT=443 WINDOW=8192 RES=0x00 SYN URGP=0 Luis Vazquez 2021-08-17T14:11:50+08:002021-08-17T14:11:50+08:00 CentOS 7 使用 systemd 的 journald 作为默认日志系统,因此内核日志(如来自iptables的日志)不是定向到/var/log/messages而是定向到 journald,并且应该通过将-k(意思是内核日志)传递给 journalctl 来显示,如下所示: journalctl -k 在此处查看 journalctl 的人 或网络中的许多教程中的任何一个,以找出所有选项;但很可能您将使用-f跟踪日志,-b仅包括自上次启动以来的--since日志,按日期选择日志或--no-pager禁用输出上的默认寻呼机。 要生成日志,您必须使用-j LOGiptables 的操作,如其他响应中所述,并且很可能您希望包含--limit以防止日志泛滥: iptables -A INPUT -j LOG -limit 1/s --limit-burst 3 --log-prefix "INPUT REJECTED: " --log-level 4 Yurij Goncharuk 2018-02-14T02:06:44+08:002018-02-14T02:06:44+08:00 您可以通过此命令启用日志记录(例如对于 INPUT 链): iptables -A INPUT -j LOG Nasir Riley 2018-02-14T02:23:20+08:002018-02-14T02:23:20+08:00 iptables 将事件记录到/var/log/messagesCentOS 7 中。
当数据包匹配
iptables ... -j LOG
规则时,会生成内核日志消息。您可以使用选项指定消息的严重级别,--log-level <level>
其中<level>
可以是标准系统日志级别标识符之一:emerg
、alert
、crit
、error
、warning
、notice
或。info
debug
这些日志消息被处理
rsyslog
:如果严重级别足够低,rsyslog
可能会完全丢弃这些消息。由于 iptables 日志消息来自内核,因此它们的日志类别将始终为kern
. 因此/etc/rsyslog.conf
,请查看要处理的消息的最低严重性级别kern.*
,以及它们将存储到哪个日志文件中。iptables -j LOG
然后为您的规则设置适当的严重性级别。或者使用
iptables ... -j LOG --log-prefix <prefix>
选项为 iptables 消息添加可识别的前缀,然后使用 的高级功能rsyslog
将 iptables 消息写入单独的日志文件。我找到了最适合我的解决方案:警告级别:
调试级别:
日志存储在:
样本输出:
CentOS 7 使用 systemd 的 journald 作为默认日志系统,因此内核日志(如来自iptables的日志)不是定向到
/var/log/messages
而是定向到 journald,并且应该通过将-k
(意思是内核日志)传递给 journalctl 来显示,如下所示:在此处查看 journalctl 的人 或网络中的许多教程中的任何一个,以找出所有选项;但很可能您将使用
-f
跟踪日志,-b
仅包括自上次启动以来的--since
日志,按日期选择日志或--no-pager
禁用输出上的默认寻呼机。要生成日志,您必须使用
-j LOG
iptables 的操作,如其他响应中所述,并且很可能您希望包含--limit
以防止日志泛滥:您可以通过此命令启用日志记录(例如对于 INPUT 链):
iptables 将事件记录到
/var/log/messages
CentOS 7 中。