Шпаргалка по iptables

В этой небольшой публикации я подготовлю своего рода шпаргалку по работе с iptables. Поскольку iptables в своей основе использует, например, ufw. Подчеркну, что это далеко не исчерпывающий материал, а скорее именно шпаргалка по тем командам, которые я использую чаще всего.

Шпаргалка по iptables

Я лишь подготовлю для себя (и вас) краткую шпаргалку по основным командам.

Просмотр текущих правил iptables

Одна из самых часто используемых команд – просмотр всех текущих правил:

sudo iptables -S

Либо второй вариант – отображение всех правил с группировкой по цепочкам:

sudo iptables -L

Также можно указать название цепочки, для которой необходимо отобразить правила:

sudo iptables -L INPUT
sudo iptables -S OUTPUT

Просмотр с отображением порядкового номера правила для каждой цепочки:

sudo iptables -L --line-numbers

Добавление правил iptables

Для добавления правил iptables используется параметр -A (append).

iptables -A

Пример добавления правила для SSH:

sudo iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT

Пример добавления правила для HTTPS:

sudo iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT

Блокирование определенного IP-адреса:

sudo iptables -A INPUT -s 87.236.16.250 -j DROP

Добавление правила в определенную позицию в цепочке правил. Ниже пример для добавления разрешающего правила входящих HTTP подключений, которое будет находится третьим по порядку в цепоче INPUT.

sudo iptables -I INPUT 3 -p tcp --dport 80 -j ACCEPT

Изменение правил iptables

Для изменения правил iptables используется параметр -R (replace).

iptables -R

Удобнее все редактировать правила по их порядковому номеру. Например, сначала определим порядковый номер запрещающего правила для IP-адреса 87.236.16.250:

sudo iptables -L INPUT --line-numbers

Теперь отредактируем правило – изменим адрес на 1.1.1.1:

sudo iptables -R INPUT 4 -s 1.1.1.1 -j DROP

Удаление правил iptables

Для добавления правил iptables используется параметр -D (delete).

iptables -D

Удаление первого вхождения правила, которое запрещает подключение с IP-адреса 87.236.16.250. Если идентичных правил будет несколько, то удалиться только первое из них.

sudo iptables -D INPUT -s 1.1.1.1 -j DROP

Удаление правила для разрешения SSH подключений:

sudo iptables -D INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT

Удаление определенного номера правила в указанной цепочке. Пример для удаления правила №3 из цепочки INPUT.

sudo iptables -D INPUT 3

Удаление всех правил из определенной цепочки iptables.

sudo iptables -F OUTPUT

Удаление всех правил iptables.

sudo iptables -F

Минимальный набор правил

Вам не обязательно использовать непосредственно iptables. Вместо iptables современные дистрибутивы предлагаю другие инструменты. Например, ufw или firewall-cmd. Но, если вы все же решили использовать именно iptables, то нужно немного подготовить систему для этого.

Примеры ниже приведены для дистрибутива Linux Mint. Для других дистрибутивов последовательность действий будет примерно такая же.

Сначала необходимо создать файл для хранения правил iptables:

sudo nano /etc/sysconfig/iptables

Добави набор минимально необходимых правил.

configuration
∗filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-unreachable
-A FORWARD -j REJECT --reject-with icmp-host-unreachable
COMMIT

Сохраняем внесенные изменения.

В таблице ниже я приведу очень краткое описание каждой строчки из правил iptables.

ПравилоНазначение
*filterВсе строочки ниже будут добавлены в таблицу FILTER
:INPUT ACCEPT [0:0]Принимать все пакеты в цепочке INPUT
:FORWARD ACCEPT [0:0]Принимать все пакеты в цепочке FORWARD
:OUTPUT ACCEPT [0:0]Принимать все пакеты в цепочке OUTPUT
-A INPUT -m state –state RELATED,ESTABLISHED -j
ACCEPT
Принимать подключение от уже установленных соединений
-A INPUT -p icmp -j ACCEPTПринимать ICMP запросы
-A INPUT -i lo -j ACCEPTПринимать все подключения на loopback интерфейсе
-A INPUT -j REJECT –reject-with icmp-host-unreachableОтклонить все не разрешенные соединения в цепочке INPUT
-A FORWARD -j REJECT –reject-with icmp-host-unreachableОтклонить все не разрешенные соединения в цепочке FORWARD
COMMITПодтвердить применение правил выше

Сохранение правил iptables

По умолчанию, если вы добавляете какие-то правила iptables, то они не сохраняются после перезагрузки системы. Для того, чтобы это исправить вы можете использовать утилиту iptables-save.

Использование утилиты предельно простое:

sudo iptables-save

По мере работы Шпаргалка по iptables будет дополняться.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *