Iptables – дуже гнучкий брандмауер, який за замовчуванням вбудований в більшість операційних систем Linux. У цій статті ми розберемо основи роботи з iptables, команди, які можна використовувати.
Перевірка поточного статусу iptables
За допомогою наступної команди ви можете переглянути поточну політику вашого брандмауера:
sudo iptables –L –v
Визначення правил
Використовуючи таку команду, ми можемо створювати ланцюг правил для iptables. Не всі параметри потрібно вказувати при додаванні нового правила.
-A означає «Додати», і нове правило буде додано в кінці ланцюга.
-I можна використовувати, якщо вам потрібно вставити правило замість іншого.
sudo iptables -A -i <интерфейс> -p <протокол (tcp / udp)> -s <источник> –dport <порт> -j <цель>
Включити трафік localhost
Почнемо з включення трафіку localhost за допомогою наступної команди.
sudo iptables -A INPUT -i lo -j ACCEPT
Тут ми використовували параметр -i для того щоб вказати інтерфейс, використовуваний для зв’язку з localhost.
Включити з’єднання через HTTP, SSH та SSL-порт
Щоб звичайні з’єднання, такі як HTTP (порт 80), HTTPS (порт 443) і SSH (порт за замовчуванням 22), як і раніше могли використовуватися – потрібно додати їх до нашого ланцюгу INPUT. Зверніть увагу, що ми використовували -p для вказівки протоколу і відповідного порту. Якщо ви використовуєте порт SSH, відмінний від стандартного, змініть його на той, який ви використовуєте.
sudo iptables -A INPUT -p tcp –dport 22 -j ACCEPT sudo iptables -A INPUT -p tcp –dport 80 -j ACCEPT sudo iptables -A INPUT -p tcp –dport 443 -j ACCEPT
Фільтрувати пакети по джерелу
Якщо ви хочете приймати або відхиляти пакети на основі конкретної IP-адреси, ви можете вказати це за допомогою опції -s. Наприклад, наступна команда відхилить пакети з IP-адреси 192.168.0.1.
sudo iptables -A INPUT -s 192.168.0.1 -j DROP
Ви також можете вказати діапазон (підмережа):
sudo iptables -A INPUT -s 192.168.0.0/24 -j DROP
Обмеження входять TCP-підключень/запобігання DDoS-атак
За часту на серверах трапляються флуд-атаки. Вони використовуються для DDoS-атак на інший сервер з використанням вашої пропускної спроможності за рахунок використання протоколу TCP. Ми можемо пом’якшити це, використовуючи наступну команду.
sudo iptables -A INPUT -p tcp –syn -m limit –limit 1/s –limit-burst 3 -j DROP
Це означає, що ми дозволяємо вхідні з’єднання, поки не буде досягнута межа:
–limit 1/s: максимальна середня швидкість зіставлення в секундах.
–limit-burst 3: максимальне початкова кількість пакетів
Відключення усього іншого трафіку
Так само, можна відкинути весь інший трафік, який нам не потрібен, щоб запобігти несанкціонованому доступу.
sudo iptables -A INPUT -j DROP
Відкрити порт на сервері
Якщо після налаштування ви встановили програмне забезпечення, яке вимагає відкриття порту, можна використовувати команду:
iptables -t filter -A INPUT -p tcp --dport 8045 -j ACCEPT
8045 – потрібний порт
Є так само можливість відкрити діапазон портів, приклад команди:
iptables -t filter -A INPUT -p tcp --dport 1560:1590-j ACCEPT
Цією командою ми відкрили порти 1560-1590 для вхідних пакетів які передаються по протоколу TCP.
Якщо треба відкрити порт на вихідні повідомлення – потрібно вказати замість INPUT – OUTPUT.
Видалення правил
Якщо потрібно видалити правила і почати з нуля, ви можете використовувати команду flush. Він видаляє кожне правило, вказане в усіх ланцюжках.
sudo iptables -F
Якщо потрібно видалити певне правило, для початку треба перевірити якому рядку воно відповідає.
sudo iptables -L –line-numbers
Ви отримаєте список правил з відповідними номерами.
Chain INPUT (policy ACCEPT) num target prot opt source destination 1 ACCEPT all — 192.168.0.4 anywhere 2 ACCEPT tcp — anywhere anywhere tcp dpt:https 3 ACCEPT tcp — anywhere anywhere tcp dpt:http 4 ACCEPT tcp — anywhere anywhere tcp dpt:ssh
Для видалення правила вказуємо номер в нашій команді:
sudo iptables -D INPUT 2
Збереження змін
Створені нами правила iptables зберігаються в пам’яті. Це означає, що при перезавантаженні все зміни будуть стерті. Щоб зберегти їх потрібно використовувати команду:
sudo /sbin/iptables-save
Або:
/sbin/service iptables save
Ви так само можете використовувати інші більш зручні фаєрволи для захисту Вашого сервера, наприклад csf \ apf.