Правило iptables / pf разрешить только приложение / пользователя XY?

8

Я думаю, что не существует решения iptables / pf, позволяющего разрешить использование приложения XY, например, на исходящем tcp порту 80, eth0. Итак, если у меня есть идентификатор пользователя: «500», то как я могу заблокировать любые другие соединения, кроме упомянутых на порту 80 / outbound / tcp / eth0? (например: просто privoxy использует порт 80 на eth0)

Дополнительно: virtualbox тоже использует порт 80? когда браузер на гостевой ОС посещает сайт .. как это объявить? - установка обычного пользователя будет слишком большой дырой

LanceBaynes
источник
по общему признанию, может быть проще, если вы разделите этот вопрос на 2 (или более) вопроса ... материал bsd будет сильно отличаться от материала linux ... и во многих отношениях у вас также будет вопрос о виртуальной коробке. Лично я считаю, что «как разрешить XY для приложения / пользователя только через iptables» и «как разрешить XY для приложения / пользователя только через pf» - это хорошие вопросы.
ксенотеррацид

Ответы:

8

Вот iptablesкоманда, чтобы разрешить определенный uidчерез определенный порт.

iptables -A OUTPUT -p tcp -m tcp --dport 80 -m owner --uid-owner username -j ACCEPT 

со страницы руководства

[!] --uid-owner userid [-userid] Соответствует, если файловая структура сокета пакета (если она есть) принадлежит данному пользователю. Вы также можете указать числовой UID или диапазон UID.

что касается virtualbox ... Я полагаю, что он запускает свое собственное ядро ​​... так что вы можете использовать --uid-ownervirtualbox на операционной системе хоста, но затем иметь --uid-ownerправило владельца на виртуальной машине.

Также может быть полезно отметить, что она --gid-ownerтакже существует, и вы можете создать группу browserи sgidприложения для браузера, чтобы она работала с эффективной группой, browserи затем в эту группу были включены только пользователи, которых вы хотите просматривать ... это не будет идеальное решение ... но большинство пользователей не будут пытаться запускать какие-либо другие приложения в этой группе, поэтому, как я полагаю, обычно ограничивают исходящие для этого приложения. Я не пробовал это, поэтому я не на 100%, что это будет работать, как я описал.

xenoterracide
источник