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

Linux: ограничение исходящих сообщений для отдельных приложений

Я набрал:

netstat -atlpvn

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

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

Спасибо

EDIT: это решение не работает с ядра 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 и установленных соединений.

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

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

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