A geração de icmp requer acesso bruto a um soquete que, por sua vez, requer acesso root. Ping, portanto, executa o suid, portanto, o uid para o proprietário do soquete é root e não test.
Eu tenho um comportamento estranho de iptables
que não consigo explicar nem entender.
Eu tenho um usuário test
que tem seu grupo primário test
. Quero bloquear qualquer acesso de rede desse usuário.
Agora, se eu disser
iptables -A OUTPUT -o eth0 -m owner --uid-owner test -j DROP
e eu su test
e depois recebo o seguinte:
ping serverfault.com # WORKS
nmap -sP serverfault.com # fails
wget serverfault.com # fails
No entanto, se eu descarregar o iptables novamente, diga:
iptables -A OUTPUT -o eth0 -m owner --gid-owner test -j DROP
(observe a diferença: gid
em vez de uid
), então recebo o seguinte
ping serverfault.com # fails
nmap -sP serverfault.com # fails
wget serverfault.com # fails
Como você pode ver, a regra parece corresponder às duas vezes, mas somente quando eu bloquear o grupo primário também o ICMP é bloqueado. Isso é um bug ou isso faz algum sentido que eu não tenho conhecimento?
Quer dizer, eu poderia simplesmente bloquear os dois e ser feliz, mas quero entender por que eles se comportam de maneira diferente.
Minha iptables
versão é v1.4.4
.
Tags iptables user-permissions icmp