Шпаргалка по iptables
iptables — это утилита для настройки брандмауэра в Linux, основанного на Netfilter. Используется для фильтрации пакетов и организации NAT.
Всегда проверяйте правила перед сохранением! Ошибка может заблокировать вам доступ к серверу.
Основные цепочки
INPUT — обработка входящего трафика
OUTPUT — обработка исходящего трафика
FORWARD — пересылаемый трафик (маршрутизация)
PREROUTING — изменения пакетов до маршрутизации
POSTROUTING — изменения пакетов после маршрутизации
Базовые команды
Посмотреть текущие правила:
|
1 2 |
iptables -L -v -n # Краткий список правил iptables -S # Вывести правила в виде команд |
Добавить правило:
|
1 |
iptables -A ЧЕЙН -p ПРОТОКОЛ --dport ПОРТ -j ДЕЙСТВИЕ |
Пример: Разрешить SSH
|
1 |
iptables -A INPUT -p tcp --dport 22 -j ACCEPT |
Удалить правило (по номеру):
|
1 |
iptables -D ЧЕЙН НОМЕР |
Пример:
|
1 |
iptables -D INPUT 1 |
Сброс всех правил:
|
1 2 3 |
iptables -F # Очистить все цепочки iptables -X # Удалить кастомные цепочки iptables -Z # Сбросить счетчики |
Сохранение правил:
|
1 |
iptables-save > /etc/iptables.rules |
Загрузка сохраненных правил:
|
1 |
iptables-restore < /etc/iptables.rules |
Примеры настроек брандмауэра
Блокировка IP-адреса:
|
1 |
iptables -A INPUT -s 192.168.1.100 -j DROP |
Открыть доступ к порту (например, HTTP 80):
|
1 |
iptables -A INPUT -p tcp --dport 80 -j ACCEPT |
Блокировка всех подключений кроме определенного IP:
|
1 2 |
iptables -P INPUT DROP iptables -A INPUT -s 192.168.1.50 -j ACCEPT |
Лимит соединений (не более 10 за минуту с IP):
|
1 2 |
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 10 -j DROP |
SNAT (Замена исходного IP-адреса, NAT):
|
1 |
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE |
Редирект (Port Forwarding, DNAT):
|
1 |
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.100:80 |
Полезные советы
Проверка логов iptables:
|
1 2 |
dmesg | grep iptables journalctl -k | grep DROP |
Добавление правил с логированием:
|
1 2 |
iptables -A INPUT -p tcp --dport 23 -j LOG --log-prefix "Telnet blocked: " iptables -A INPUT -p tcp --dport 23 -j DROP |
Автозагрузка iptables при старте системы:
|
1 2 |
netfilter-persistent save netfilter-persistent reload |
(Пакет iptables-persistent должен быть установлен: apt install iptables-persistent)