我将默认的 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)