我将默认的 iptables OUTPUT 链设置为 DROP 数据包。然后我创建了一个防火墙规则,只允许 ntp 用户发送 ntp 数据包:
iptables -A OUTPUT -m owner --uid-owner ntp -p udp --dport 123 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
但是,每 10-20 分钟我就会看到:
ntpd[27769]: sendto(<snip>) (fd=22): Operation not permitted
Run Code Online (Sandbox Code Playgroud)
然后我删除了-m owner --uid-owner ntp
规则的一部分并在它之前添加了一个日志规则:
iptables -A OUTPUT -p udp --dport 123 -j LOG --log-level debug \
--log-prefix "Spotted a NTP packet: " --log-uid
Run Code Online (Sandbox Code Playgroud)
ntpd
再次开始工作,在内核环形缓冲区中,我看到:
Spotted a NTP packet: <snip> PROTO=UDP SPT=123 DPT=123 LEN=56 UID=0
Run Code Online (Sandbox Code Playgroud)
我正在使用--log-uid
切换到LOG
目标,并ntpd
以 ntp 用户身份运行 (uid=38):
# …
Run Code Online (Sandbox Code Playgroud)