ntpd sendo executado como não-raiz, mas os pacotes de saída correspondem como uid 0

4

Eu configurei minha cadeia OUTPUT iptables padrão para os pacotes DROP. Em seguida, criei uma regra de firewall para permitir que o usuário ntp enviasse os pacotes ntp:

iptables -A OUTPUT -m owner --uid-owner ntp -p udp --dport 123 -j ACCEPT

No entanto, a cada 10 a 20 minutos eu veria:

ntpd[27769]: sendto(<snip>) (fd=22): Operation not permitted

Em seguida, removi a parte -m owner --uid-owner ntp da regra e adicionei uma regra de log antes dela:

iptables -A OUTPUT -p udp --dport 123 -j LOG --log-level debug \
    --log-prefix "Spotted a NTP packet: " --log-uid

ntpd começou a trabalhar novamente e, no buffer de anel do kernel, eu vejo:

Spotted a NTP packet: <snip> PROTO=UDP SPT=123 DPT=123 LEN=56 UID=0

Estou usando a opção --log-uid para o LOG target e ntpd está sendo executado como o usuário 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

No entanto, o log mostra UID=0 . Tenho certeza de que nada mais no sistema está enviando pacotes ntp, e já que não estou mais recebendo o Operation not permitted , tenho certeza de que é de fato ntpd que está enviando o pacote.

Eu acho que estou bem com a não correspondência do usuário ntp para esses pacotes; no entanto, alguém pode explicar por que o iptables não está mostrando UID=38 para esses pacotes?

    
por Corey Henderson 05.01.2012 / 22:56

2 respostas

6

Para um programa usar uma porta menor que 1024, ele deve ser root. Muitos aplicativos como o NTP serão iniciados, abra a porta como root e, em seguida, elimine privilégios para alguma conta definida para todo o resto.

    
por 05.01.2012 / 23:17
1

Há um erro na regra "iptables":

iptables -A OUTPUT -m owner --uid-owner ntp -p udp --dport 123 -j ACCEPT

Se você usar - uid-owner , será necessário definir uid - valor numérico.
Para o nome do programa, você precisa de outra opção: - cmd-owner . A regra correta é:

iptables -A OUTPUT -m owner --cmd-owner ntp -p udp --dport 123 -j

Explicação detalhada Você pode ler um ótimo livro Oskar Andreasson .

    
por 23.05.2015 / 21:16

Tags