Блокувати вихідні з'єднання на RHEL7 / CentOS7 з firewalld?


12

RHEL7 / CentOS7 оснащена новою firewalldслужбою брандмауера, яка замінює iptables service(обидва вони використовують iptablesінструмент для взаємодії з Netfilter ядра під ним).

firewalldможна легко настроїти, щоб заблокувати вхідний трафік, але, як зазначав Томас Вернер 1,5 роки тому, "обмежити вихідний трафік неможливо просто за допомогою firewalld простим способом". І наскільки я бачу, ситуація не змінилася з того часу. Або так? Чи є можливість заблокувати вихідний трафік firewalld? Якщо немає інших "стандартних" способів (на RHEL7 distro) блокування вихідного трафіку, крім ручного додавання правил через iptablesінструмент?

Відповіді:


13

Я не знайшов жодного варіанту в цьому приємному графічному інтерфейсі, але це можливо через прямий інтерфейс

Щоб увімкнути лише вихідний порт 80:

firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 0 -p tcp -m tcp --dport=80 -j ACCEPT
firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 1 -j DROP

Це додасть його до постійних правил, а не до правил виконання.
Вам потрібно буде перезавантажити постійні правила, щоб вони стали правилами виконання.

firewall-cmd --reload

для відображення постійних правил

firewall-cmd --permanent --direct --get-all-rules

відображення правил виконання

firewall-cmd --direct --get-all-rules

Як можна досягти цього, використовуючи фактичну мову з великими правилами?
Кейсі

@Casey На мій погляд, багаті правила суворо застосовуються для ланцюгів INPUT.
Рис

Я припускаю, що вищезазначені правила працюють лише для ipv4(iptables). Можливо, бажано мати подібні правила для ipv6(для ip6tables) або eb(для ebtables).
mwfearnley

Також це призвело до вбивства мого SSH-з'єднання з сервером! Дивіться відповідь користувача 253068 про те, як зберегти встановлені з'єднання.
mwfearnley

6

Після того, як я сам собі задав те саме питання, і трохи подумавши, я зібрав кілька приємних правил обмеження вихідного трафіку на HTTP / HTTPS та DNS-запити:

Дозволити встановлені з'єднання:

# firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 0 -m state --state ESTABLISHED,RELATED -j ACCEPT

Дозволити HTTP:

# firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 1 -p tcp -m tcp --dport 80 -j ACCEPT

Дозволити HTTPS:

# firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 1 -p tcp -m tcp --dport 443 -j ACCEPT

Дозволити для запитів DNS:

# firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 1 -p tcp -m tcp --dport 53 -j ACCEPT
# firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 1 -p udp --dport 53 -j ACCEPT

Заперечуйте все інше:

# firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 2 -j DROP

Слід спочатку перевірити, опустивши аргумент "- постійний".

Я ні в якому разі не експерт, але це, здається, добре працює у мене :)


У якийсь момент вам може бути корисним видалити правила. Видалення єдиних прямих правил здається складним, але для кувалди firewall-cmd [--permanent] --direct --remove-rules ipv4 filter OUTPUTвсе-таки видалять групу.
mwfearnley

1

Щодо GUI; Я думаю, ви знайдете це в розділі " Пряма конфігурація ". Для доступу до нього потрібно вибрати його у " Перегляд ". Я можу помилитися.

Бічна примітка

Видалити правила; ви повинні вийти та повернутися знову.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.