Зменшіть правила брандмауера наполовину - на одне правило iptables для tcp та udp


12

У мене на брандмауері є ряд правил iptables, які виглядають так:

iptables -A zone_lan_forward -p tcp -d 1.2.3.0/24 -j ACCEPT
iptables -A zone_lan_forward -p udp -d 1.2.3.0/24 -j ACCEPT

Чи є ярлик для наявності двох правил - одне для tcp і одне для udp - для кожної адреси? Я можу сказати, чи можу я зробити щось подібне:

iptables -A zone_lan_forward -p tcp,udp -d 1.2.3.0/24 -j ACCEPT

Відповіді:


22

Створіть новий ланцюжок, який прийме будь-які пакети TCP та UDP, і перейдіть до цього ланцюжка з окремих дозвольних правил IP / порту:

iptables -N ACCEPT_TCP_UDP
iptables -A ACCEPT_TCP_UDP -p tcp -j ACCEPT
iptables -A ACCEPT_TCP_UDP -p udp -j ACCEPT

iptables -A zone_lan_forward -d 1.2.3.0/24 -j ACCEPT_TCP_UDP

Це додає накладні витрати на кілька зайвих рядків, але вдвічі зменшує кількість правил TCP / UDP.

Я б не опустив цей -pаргумент, тому що ви не тільки відкриваєте брандмауер для ICMP, але і будь-який інший протокол. З сторінки man iptables на -p:

Зазначений протокол може бути одним з tcp, udp, icmp або всім, або він може бути числовим значенням, що представляє один з цих протоколів або інший. Ім'я протоколу з / etc / протоколів також дозволено.

Ви не можете слухати на будь-яких протоколів TCP, UDP і ICMP , за винятком прямо зараз , але хто знає , що майбутнє може тримати. Було б поганою практикою залишати брандмауер відкритим без потреби.

Відмова: Команди iptables від верхньої частини моєї голови; У мене немає доступу до коробки, на якій можна перевірити їх банкомат.


Це дуже елегантне рішення, яке не залишає брандмауер відкритим без потреби.
— Big McLargeHuge

4
Але цей спосіб створення нової ланцюга не вдасться, якщо фільтрація буде виконана через номер порту призначення. Хтось може підказати, як подолати вищезгадану проблему?
— Амор

@Amor У цьому прикладі, якщо ви використовували -p allвсі --dportправила zone_lan_forwardланцюга, це може досягти того, що ви шукаєте. Звичайно, я припускаю, що немає іншого способу потрапити на цей ланцюг за допомогою протоколу, який не є TCP / UDP ACCEPT_TCP_UDP. Очевидно, це ризикована стратегія, якщо кілька людей мають доступ до зміни правил, а хтось підходить і редагує ваші правила, не розуміючи цієї тонкощі.
— Семюел Хармер

Ооопс. Не помітили замовлення ланцюгів. Вам також потрібно змінити порядок ланцюгів у цьому прикладі для того, що я нещодавно сказав, що працює належним чином. Тож ACCEPT_TCP_UDPстрибки, до zone_lan_forwardяких потім стрибає ACCEPT.
— Семюел Хармер

2

Якщо вам не дуже важливий трафік ICMP (який ви можете заблокувати в усьому світі за допомогою правила), ви можете просто опустити прапор -p, і він охопить усі протоколи.


Чи варто дбати про трафік ICMP? Мене найбільше хвилює доступ до HTTP.
— Big McLargeHuge

Не зовсім. Ви можете заблокувати ICMP (ping), якщо ви хочете, але оскільки він обслуговує HTTP-трафік все одно, немає великого сенсу.
— Натан С

@NathanC, я думаю, що порада відкрити ВСІ порти, коли ОП запитує, як зменшити вдвічі його правила, може призвести до неприємностей зараз чи в майбутньому.
— Джед Даніельс

@JedDaniels перемикач -p вказує протоколи, а не порти. Відповідь нижче має альтернативу, якщо вони хочуть заблокувати щось, крім tcp & udp.
— Натан С

@NathanC Так, і видалення -p означає "відкрити всі протоколи, а не лише tcp або udp", що є необачним, якщо не небезпечним.
— Джед Даніельс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.