您可以为此使用Linux内核中的iptables支持。好处是,它不需要任何其他软件即可使用。缺点是它需要设置root特权(但是,如果您正在谈论端口443(这是特权端口),则大多数解决方案都可能需要root特权)。
添加类似以下内容的iptables规则:
sudo iptables -I INPUT -p tcp --dport 443 --syn -j LOG --log-prefix "HTTPS SYN: "
(-I INPUT
根据您的口味调整零件。)
触发规则后,内核将发出系统日志条目。例如,使用输入规则,日志条目可能类似于:
12月5日09:10:56主机名内核:[1023963.185332] HTTPS SYN:IN = ifX OUT = MAC = 80:80:80:80:80:80:80:80:80:80:80:80:80:08:00 SRC = ABCD DST = WXYZ LEN = 52 TOS = 0x00 PREC = 0x20 TTL = 119 ID = 11901 DF PROTO = TCP SPT = 37287 DPT = 443 WINDOW = 8192 RES = 0x00 SYN URGP = 0
然后,您可以使用任何常规的日志监视工具来对此信息执行有用的操作。如果您的syslog实现支持它,您甚至可以将它们定向到一个单独的日志文件中,从而有效地满足将连接数据写入带有第二个时间戳的文件的需求,而无需其他软件。
请注意,该LOG
目标是一个非终止目标,这意味着遵循该目标的所有规则仍将被评估,并且LOG规则本身不会拒绝或接受该数据包。这使得LOG
目标对于调试防火墙规则也很有用。
为避免大量日志,请考虑将limit
模块与此结合使用。有关详细信息,请参见iptables(8)手册页。