Якщо 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ланцюжок. Чому? Не можу сказати.)