Настройка IPTables

IPTables — утилита командной строки, является стандартным интерфейсом управления работой межсетевого экрана (брандмауэра).

Ключи для работы с цепочками:
-A — добавить новое правило.
-D — удалить правило.
-F — удалить все правила.
-R — замена правила.
-L — вывод списка всех правил.

INPUT — входящий трафик.
OUTPUT — исходящий трафик.
FORWARD — пересылаемый(транзитный) трафик.

Параметры:
-p — протокол, может быть all,icmp,tcp,udp.
-s — ip адрес/хост источника.
-d — ip адрес/хост назначения.
-i — интерфейс на который пришел пакет.
-o — интерфейс с которого уйдет пакет.
—sport — порт источника.
—dport — порт назначения.

Действия:
ACCEPT — разрешить пакеты.
REJECT — блокировать пакеты с сообщением об отказе.
DROP — блокировать пакеты (более приоритетный вариант чем REJECT).

Примеры просмотра правил:

iptables -nvL
iptables -n -L -v --line-numbers
iptables -L INPUT -n -v
iptables -L OUTPUT -n -v --line-numbers
iptables -L OUTPUT -n --line-numbers | less
iptables -L OUTPUT -n --line-numbers | grep 192.168.2.14
iptables -L INPUT --line-numbers

Просмотр NAT правил:

iptables -L -t nat

Примеры удаления правил:

iptables -D INPUT 3
iptables -D INPUT -s 192.168.2.14 -j DROP

Сброс правил:

iptables -F

Управление службой:

service iptables stop/start/restart/save

Например разрешаем доступ на порт 22 только с определенной подсети (для ssh можно также ограничить конфигом самого ssh):

iptables -A INPUT -d 192.168.0.0/24 -p tcp --dport 22 -j ACCEPT

Лимит подключений на порт 80:

iptables -A INPUT -p tcp --dport 80 -m limit --limit 50/second -j ACCEPT

Пример для FTP сервера:

iptables -A INPUT -p tcp --dport 21 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

Пример для pop3, pop3s:

iptables -A INPUT -p tcp --dport 110 -j ACCEPT
iptables -A INPUT -p tcp --dport 995 -j ACCEPT

Пример для imap , imaps:

iptables -A INPUT -p tcp --dport 143 -j ACCEPT
iptables -A INPUT -p tcp --dport 993 -j ACCEPT

Установка политик по умолчанию на отбрасывание:

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

Чтобы разрешить ping:

iptables -A INPUT -p icmp -j ACCEPT
iptables -A OUTPUT -p icmp -j ACCEPT

Бан IP:

iptables -A INPUT -s xx.xx.xx.xx -j DROP
Бан подсети:
iptables -A INPUT -s xx.xx.xx.xx/24 -j DROP
Разбан:
iptables -D INPUT -s xx.xx.xx.xx -j DROP

Ограничить количество подключений на определенный порт:

iptables -A INPUT -p tcp -m tcp --dport ПОРТ -m connlimit --connlimit-above КОЛИЧЕСТВО_ПОДКЛЮЧЕНИЙ --connlimit-mask 32 -j DROP
iptables -A INPUT -p tcp -m tcp --dport ПОРТ --tcp-flags FIN,SYN,RST,ACK SYN -j ACCEPT

Вариант запрета сканирования портов (блокируются IP с которых идут пакеты помимо разрешенных портов):

iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -A INPUT -p all -i ИНТЕРФЕЙС -j ACCEPT
iptables -A OUTPUT -p all -o ИНТЕРФЕЙС -j ACCEPT
iptables -A INPUT -m recent --rcheck --seconds ВРЕМЯ_БАНА_В_СЕК --name STOPSCAN -j DROP
iptables -A INPUT -p tcp -m multiport ! --dports ПОРТ1,ПОРТ2,ПОРТn -m recent --set --name STOPSCAN -j DROP
iptables -A INPUT -p tcp --syn --dport ПОРТ1 -j ACCEPT
iptables -A INPUT -p tcp --syn --dport ПОРТ2 -j ACCEPT
iptables -A INPUT -p tcp --syn --dport ПОРТn -j ACCEPT
iptables -A INPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p all -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

Можно сделать резервную копию правил в файл, а также восстановить их из него командами:

iptables-save > iptables.dump
iptables-restore < iptables.dump

Смотрите также:
Скрипт быстрой настройки IPTables

Добавить комментарий