Intereting Posts
Как показать значки рабочего стола в элементарной ОС? В чем разница между флагами FreeBSD, неизменяемыми и неподходящими? SLURM: имя пользовательского стандартного вывода yum пытается установить пакет PLUS зависимости – я НЕ хочу эту зависимость Получение ошибки при использовании sftp (get: Invalid Flag -r) Почему, когда я пытаюсь выполнить программу как обычный пользователь, мне становится отказано, и когда я выполняю его с помощью sudo, я получаю «Not Found» Kali Linux не будет подключаться к беспроводной сети как pdfjoin пейзаж и портретные изображения JPEG в один файл PDF? Установка Fedora 23 – нувориш Является ли Evince безопасным способом просмотра вредоносного PDF-файла? Вычтите две даты, используя Shell Scripting Базовая ОС для беспроводной передачи и приема Монит STUN / TURN сервер Передача аргументов в оболочку su-provided Есть ли способ перенаправить файл, который написан

Не удалось получить модуль владельца iptables (gid-owner) для работы

На моем ноутбуке ubuntu 16.04 я пытаюсь настроить правила iptables чтобы доступ в Интернет был запрещен всем приложениям по умолчанию и разрешен только для одной группы, называемой internet . Я не буду добавлять эту группу в свой собственный логин, но используйте sudo -g или sg для доступа к Интернету, когда захочу. Например:

 sudo -g internet firefox 

или

 sg internet -c "firefox" 

Однако этот подход не работает. Следующее правило iptables которое я добавил:

 /sbin/iptables -A OUTPUT -p tcp --dport 80 -m owner --gid-owner internet -j ACCEPT /sbin/iptables -A OUTPUT -p tcp --dport 443 -m owner --gid-owner internet -j ACCEPT /sbin/iptables -A OUTPUT -p udp --dport 53 -m owner --gid-owner internet -j ACCEPT 

Я тестировал вышеприведенные правила, когда я удаляю модуль владельца, он отлично работает, и интернет разрешен для всех приложений. Но когда я добавляю модуль gid-owner фильтр gid-owner , ни одно приложение не может получить доступ к Интернету (даже используя указанные команды sg и sudo -g ).

Что я делаю не так?

После долгих проб и ошибок я смог найти ответ на свой вопрос. Проблема была не в iptables или с версией Ubuntu / Linux, которую я использовал, а скорее была проблема с этим третьим правилом:

 /sbin/iptables -A OUTPUT -p udp --dport 53 -m owner --gid-owner internet -j ACCEPT 

Поскольку порт udp/53 используется для разрешения имен DNS, такие сервисы, как dnsmasq могут использоваться, поэтому разрешение имен не было, когда я пытался запустить программу с помощью internet группы, поскольку эти другие службы не были в этой группе. Однако в идеале эти службы должны иметь доступ к порту, поскольку они работают под учетной записью root ( и root может что-либо сделать! ), Но дизайн модуля владельца iptables, похоже, не соблюдает такие привилегии root.

Как только я удалил проверку модуля владельца из этого последнего правила, интернет начал работать:

 /sbin/iptables -A OUTPUT -p udp --dport 53 -j ACCEPT 

редактировать

Другой, не связанный напрямую, но связанная с этим проблема заключается в использовании модуля владельца для корневой группы. Мы склонны назначать доступ к корневой группе в Интернете (помимо или вместо internet группы) следующим образом:

 /sbin/iptables -A OUTPUT -p tcp --dport 80 -m owner --gid-owner root -j ACCEPT 

Однако это не работает на практике, потому что многие приложения не используют пользователя root для подключения к Интернету по соображениям безопасности. Например, следующая команда не будет работать даже после выполнения вышеперечисленного:

 sudo apt-get update 

Это потому, что программа apt внутренне использует _apt пользователя для загрузки пакетов по соображениям безопасности.