iptables является утилитой, выполняющей функции межсетевого экрана. Настройка iptables производится в командной строке, с помощью правил iptables можно разрешать или блокировать прохождение трафика. Когда происходит попытка установления соединения с текущей машиной, iptables просматривает список правил в списке, чтобы понять, как нужно поступить в этом случае. Если правила нет, то выполняется действие по умолчанию.

Программа предустанавливается на всех Linux-дистрибутивах, но вы можете её обновить выполнив команду:

sudo apt-get install iptables

Типы правил

Существует три типа правил iptables — input, forward и output.

Input — Такие цепочки используются для контроля поведения входящих соединений. К примеру, если пользователь попробует подключиться к серверу по SSH, то iptables сравнит его IP-адрес со своим списком, чтобы разрешить или запретить доступ.

Forward — Правила этого типа используются для обработки входящих сообщений, конечный пункт назначения которых не является текущим сервером. К примеру, в случае маршрутизатора, к нему подключаются многие пользователи и приложения, но данные не посылаются на сам маршрутизатор, они лишь передаются ему, чтобы он мог перенаправить их адресату. Если вы не занимаетесь настройкой маршрутизации или NAT, то правила этого типа использовать в работе не будете.

Output — Такие цепочки используются для исходящих соединений. К примеру, если пользователь пытается отправить запрос ping к сайту google.com, iptables изучит цепочку правил, чтобы понять, что нужно делать в случае ping и этого сайт, и только потом разрешит или запретит соединение.

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

Поведение по умолчанию

Увидеть текущие настройки iptables по умолчанию можно с помощью команды sudo iptables -L | grep policy:

┌──(k1ber㉿kali)-[/home/kali]
└─$ sudo iptables -L | grep policy
Chain INPUT (policy ACCEPT)
Chain FORWARD (policy DROP)
Chain OUTPUT (policy ACCEPT)

Как видим, все цепочки разрешают приём трафика. Если у вас происходили какие либо изменения, можно вернуть стандартные настройки с помощью команд:

iptables --policy INPUT ACCEPT
iptables --policy OUTPUT ACCEPT
iptables --policy FORWARD ACCEPT

Либо можно запретить весь трафик: