Соответствие владельца iptables сбрасывает icmp для GID, но не для UID
У меня странное поведение iptables
что я не могу объяснить или понять.
У меня есть пользователь test
которая имеет свою основную группу test
, Я хочу заблокировать любой доступ к сети от этого пользователя.
Теперь, если я скажу
iptables -A OUTPUT -o eth0 -m owner --uid-owner test -j DROP
и я su test
и тогда я получаю следующее:
ping faultserver.ru # WORKS
nmap -sP faultserver.ru # fails
wget faultserver.ru # fails
Однако, если я снова сброслю iptables и скажу:
iptables -A OUTPUT -o eth0 -m owner --gid-owner test -j DROP
(обратите внимание на разницу: gid
вместо uid
) то получаю следующее
ping faultserver.ru # fails
nmap -sP faultserver.ru # fails
wget faultserver.ru # fails
Итак, как вы можете видеть, правило кажется совпадающим оба раза, но только когда я блокирую основную группу, также блокируется ICMP. Это ошибка или есть какой-то смысл, о котором я не знаю?
Я имею в виду, я мог бы просто заблокировать оба и быть счастливым, но я хочу понять, почему они ведут себя по-разному.
мой iptables
версия v1.4.4
,
1 ответ
Генерация icmp требует прямого доступа к сокету, который, в свою очередь, требует корневого доступа. Поэтому Ping запускает suid, поэтому для владельца сокета используется uid root, а не test.