Якщо iptables ядра повністю порожні ( iptables -F
), це зробить те, що ви запитаєте:
# iptables -A INPUT -p tcp --dport 22 -s 192.168.0.0/24 -j ACCEPT
# iptables -A INPUT -p tcp --dport 22 -s 127.0.0.0/8 -j ACCEPT
# iptables -A INPUT -p tcp --dport 22 -j DROP
Це говорить про те, що всім локальним адресам дозволено спілкуватися з портом TCP 22, що localhost отримує однаковий розгляд (так, 127. * не просто 127.0.0.1), а пакети з кожної іншої адреси, що не відповідають цим першим двом правилам, безцеремонно потрапляють у трохи відро . Ви можете використовувати REJECT
замість, DROP
якщо ви хочете активне відхилення (TCP RST), а не зробити порт TCP 22 чорною дірою для пакетів.
Якщо ваша локальна мережа не використовує блок 192.168.0. *, Вам, природно, потрібно змінити IP-адресу та маскувати в першому рядку, щоб відповідати IP-схемі вашої локальної мережі.
Ці команди можуть не робити те, що ви хочете, якщо у вашому брандмауері вже налаштовано деякі правила. (Скажіть, iptables -L
як root, щоб дізнатися.) Що часто трапляється, це те, що одне з існуючих правил захоплює пакети, які ви намагаєтесь відфільтрувати, так що додавання нових правил не впливає. У той час як ви можете використовувати -I
замість -A
з iptables
командою зрощувати нові правила в середину ланцюжка , а не додаючи їх, як правило , краще , щоб дізнатися, як ланцюга отримують заселена при завантаженні системи і змінювати цей процес , так що ваші нові правила завжди отримати встановлені в правильний порядок.
RHEL 7+
В останніх системах типу RHEL найкращий спосіб зробити це використовувати firewall-cmd
або його еквівалент GUI. Це говорить firewalld
демону ОС, що ви хочете, а що насправді заповнює та маніпулює тим, що ви бачите через iptables -L
.
RHEL 6 і раніше
У старих системах типу RHEL найпростіший спосіб зміни ланцюгів брандмауера під час замовлення питань - це редагування /etc/sysconfig/iptables
. Інструменти брандмауера GUI та TUI брандмауера досить спрощені, тому щойно ви почнете додавати такі складні правила, як це, краще повернутися до старих хороших конфігураційних файлів. Остерігайтеся, як тільки ви почнете це робити, ви ризикуєте втратити свої зміни, якщо ви коли-небудь використовувати засоби брандмауера ОС для зміни конфігурації, оскільки він може не знати, як поводитися з такими правилами ручної роботи.
Додайте щось подібне до цього файлу:
-A RH-Firewall-1-INPUT -p tcp --dport 22 -s 192.168.0.0/24 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp --dport 22 -s 127.0.0.0/8 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp --dport 22 -j DROP
Куди ви додасте, це складний біт. Якщо ви знайдете рядок у цьому файлі, про який йдеться --dport 22
, просто замініть його на три рядки вище. В іншому випадку він, ймовірно, повинен пройти до першого існуючого рядка, який закінчується -j ACCEPT
. Як правило, вам потрібно буде ознайомитись із тим, як працює iptables , і тоді правильна точка вставки стане очевидною.
Збережіть цей файл, а потім скажіть, service iptables restart
щоб перезавантажити правила брандмауера. Не забудьте зробити це під час входу в консоль, на випадок, якщо ви будете товсто пальцем редагувати! Ви не хочете заблокувати себе з машини під час входу через SSH.
Подібність до команд, наведених вище, не випадково. Більшість цього файлу складається з аргументів iptables
команди. Відмінності щодо вищезазначеного полягають у тому, що iptables
команда скидається, а INPUT
назва ланцюга стає спеціальним RH-Firewall-1-INPUT
ланцюгом, характерним для RHEL . (Якщо ви хочете докладніше вивчити файл, ви побачите раніше у файлі, де вони перейменовані в INPUT
ланцюжок. Чому? Не можу сказати.)