我将默认的 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):
# ps auxf | grep ntpd
ntp 27769 0.0 1.0 4512 4508 ? SLs Jan04 0:00 ntpd -u ntp:ntp -p /var/run/ntpd.pid
Run Code Online (Sandbox Code Playgroud)
然而日志显示UID=0
。我的系统上的其他正面没有被发出NTP报文,并且因为我不再得到Operation not permitted
,我敢肯定它是,实际上ntpd
多数民众赞成在发送数据包。
我想我可以不匹配这些数据包的 ntp 用户;但是,有人可以解释为什么 这些数据包没有显示 iptablesUID=38
吗?
归档时间: |
|
查看次数: |
855 次 |
最近记录: |