Linux: ограничение исходящих на основе приложения

Я набрал:

netstat -atlpvn

и заметил, что такие приложения, как gedit и python, имеют внешние адреса вне сети (сеть представляет собой один компьютер, подключенный к Интернету).

Есть ли способ для меня, чтобы ограничить, какие приложения разрешены исходящие? Например, я бы хотел, чтобы у firefox были исходящие соединения?

Спасибо

3 ответа

Насколько я знаю, единственный способ ограничить интернет-соединение для каждого отдельного приложения - это использовать возможности SELinux, и это включает в себя предоставление приложениям, которые должны иметь интернет-соединение, дополнительные привилегии. Я сомневаюсь, что предоставление Firefox дополнительных привилегий будет способствовать безопасности, и приложение, которое пытается получить доступ к Интернету, могло бы сделать это через Firefox или wget или любое другое "законное" приложение в любом случае. Кроме того, для сценариев, я думаю, вам придется предоставить возможности для переводчика (например, /usr/bin/python), который не делает различий в любом полезном способе.

Вы можете ограничить подключение к Интернету для каждого пользователя; см. примеры привязки программного обеспечения к различным сетевым интерфейсам и подключения к двойной сети. Или вы можете запускать приложения, которым вы не хотите предоставлять подключение к Интернету, в облегченной виртуальной среде, такой как LXC.

РЕДАКТИРОВАТЬ: это решение не работает, начиная с ядра 2.6.14 . Смотрите комментарий Жиля.

Вы можете использовать правила iptables в цепочке вывода, сопоставляя имена процессов с параметром --cmd-owner. Что-то вроде:

iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m owner --cmd-owner "firefox-bin" -j ACCEPT
iptables -A OUTPUT -m owner --cmd-owner "ssh" -j ACCEPT
iptables -A OUTPUT -j DENY

При этом вы разрешаете выходной трафик из firefox-bin, ssh и установленных соединений.

Вам, вероятно, понадобится приложение, такое как LeopardFlower, которое разрешает брандмауэр для каждого приложения. Кроме этого создайте отдельную учетную запись и запустите под ней firefox и используйте правило, например, ipatbles -A OUTPUT -m owner --uid-owner 1005 -j DROP, чтобы заблокировать весь трафик этого пользователя.

Другие вопросы по тегам