Назад | Перейти на главную страницу

сопоставление владельца iptables отбрасывает icmp для GID, но не для UID

У меня странное поведение iptables что я не могу объяснить или понять.

У меня есть пользователь test который имеет свою основную группу test. Я хочу заблокировать любой доступ к сети для этого пользователя.

Теперь, если я скажу

iptables -A OUTPUT -o eth0 -m owner --uid-owner test -j DROP

и я su test и тогда я получаю следующее:

ping serverfault.com       # WORKS
nmap -sP serverfault.com   # fails
wget serverfault.com       # fails

Однако, если я снова сброшу iptables и скажу вместо этого:

iptables -A OUTPUT -o eth0 -m owner --gid-owner test -j DROP

(обратите внимание на разницу: gid вместо того uid) то я получаю следующее

ping serverfault.com       # fails
nmap -sP serverfault.com   # fails
wget serverfault.com       # fails

Итак, как вы можете видеть, правило, похоже, соответствует оба раза, но только когда я блокирую основную группу, также блокируется ICMP. Это ошибка или в этом есть какой-то смысл, о котором я не знаю?

Я имею в виду, что могу просто заблокировать и то и другое и быть счастливым, но я хочу понять, почему они ведут себя по-разному.

Мой iptables версия v1.4.4.

Генерация icmp требует прямого доступа к сокету, который, в свою очередь, требует корневого доступа. Таким образом, Ping запускает suid, поэтому uid для владельца сокета - root, а не test.