首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ntpd以非root形式运行,但传出数据包与uid 0匹配。

ntpd以非root形式运行,但传出数据包与uid 0匹配。
EN

Server Fault用户
提问于 2012-01-05 21:56:59
回答 2查看 949关注 0票数 4

我将默认的iptables输出链设置为丢弃数据包。然后,我创建了一个防火墙规则,只允许ntp用户发送ntp数据包:

代码语言:javascript
复制
iptables -A OUTPUT -m owner --uid-owner ntp -p udp --dport 123 -j ACCEPT

然而,每隔10-20分钟我就会看到:

代码语言:javascript
复制
ntpd[27769]: sendto(<snip>) (fd=22): Operation not permitted

然后,我删除了规则的-m owner --uid-owner ntp部分,并在它之前添加了一个日志规则:

代码语言:javascript
复制
iptables -A OUTPUT -p udp --dport 123 -j LOG --log-level debug \
    --log-prefix "Spotted a NTP packet: " --log-uid

ntpd再次开始工作,在内核环缓冲区中,我看到:

代码语言:javascript
复制
Spotted a NTP packet: <snip> PROTO=UDP SPT=123 DPT=123 LEN=56 UID=0

我使用--log-uid切换到LOG目标,ntpd作为ntp用户(uid=38)运行:

代码语言:javascript
复制
# 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

然而日志显示的是UID=0。我肯定系统上没有其他的东西正在发送ntp数据包,而且由于我不再得到Operation not permitted,我确信实际上是ntpd在发送数据包。

我想我可以不匹配这些数据包的ntp用户;但是,有人能解释为什么iptables没有为这些包显示UID=38吗?

EN

回答 2

Server Fault用户

回答已采纳

发布于 2012-01-05 22:17:45

对于使用端口小于1024的程序来说,它必须是根。许多应用程序(如NTP )将启动,以根用户身份打开端口,然后将特权降至其他所有已定义的帐户。

票数 6
EN

Server Fault用户

发布于 2015-05-23 19:16:57

在您的iptable规则中有错误:

代码语言:javascript
复制
iptables -A OUTPUT -m owner --uid-owner ntp -p udp --dport 123 -j ACCEPT

如果使用-- uid -owner,则需要定义uid-数值。

对于程序名,您需要另一个选项:--cmd-owner。正确的规则是:

代码语言:javascript
复制
iptables -A OUTPUT -m owner --cmd-owner ntp -p udp --dport 123 -j

详细的解释,你可以阅读在伟大的由奥斯卡安德烈森。

票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/347137

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档