Как настроить межсетевой экран для конкретной службы в Linux?

Как настроить межсетевой экран для конкретной службы в Linux?

Как мне настроить какой-то брандмауэр, который позволит использовать открытые порты в системе только определенным программам (предпочтительно RHEL)?

Например, если я хочу yumиметь возможность подключаться и обновляться в обычном режиме, но хочу заблокировать исходящие веб-запросы, такие как просмотр страниц, мне все равно нужно будет открыть порты 80, 443, 53 и UDP-53.

Однако мне нужно, чтобы брандмауэр мог различать yumи веб-браузер.

решение1

iptablesимеет возможность проверки пользователя программы.

Используя флаги --uid-ownerили --gid-owner, вы можете ограничить сеть только определенными пользователями (root?), а www-dataпакеты вашего веб-сервера (может работать как ) будут отбрасываться.

Конечно, это ограничение накладывается на пользователя/группу, а не на программу, но большинство служб сегодня работают со своими собственными пользователями и группами.

Пример:

iptables -I OUTPUT -m owner --uid-owner www-data -jDROP

Пример, который ограничит исходящий сетевой доступ для всех, кроме пользователя root:

iptables -P OUTPUT DROP
iptables -I OUTPUT -m owner --uid-owner root -jALLOW

Другой подход — настроить правила с помощью SELinux(обычно в комплекте с продуктами RedHat). Лично я считаю, что это будет сложнее в управлении.

Связанный контент