Настройка фаервола iptables в Linux

iptables – это программа-межсетевой экран (firewall) для операционных систем Linux, которая позволяет настраивать правила фильтрации сетевого трафика на уровне ядра операционной системы. С помощью iptables можно разрешать или блокировать прохождение трафика на основе различных критериев, таких как IP-адрес источника и назначения, порты, протоколы и т.д.

 

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

 

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

 

Типы правил

Помимо трех основных типов правил (input, forward, output), существует еще несколько вспомогательных, которые можно использовать для более точной настройки работы iptables.

Межсетевой экран имеет три основных состояния: принимать все пакеты, блокировать все пакеты или разрешать только те, которые соответствуют определенным правилам.

Для контроля этого поведения используется состояние межсетевого экрана, которое может принимать одно из трех состояний:

ACCEPT — разрешить соединение.

DROP — блокировать соединение.

REJECT — блокировать соединение и отправлять обратный сигнал.

Также существуют дополнительные состояния межсетевого экрана, которые можно использовать для более точной настройки правил:

 

Разрешаем и блокируем конкретные соединения

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

 

Мы будем использовать команду iptables –A, чтобы добавлять правила к существующим цепочкам. Iptables будет начинать с начала списка и проходить по всем правилам, пока не найдет совпадение. Если нужно поместить какое-то правило перед уже имеющимся, то можно использовать команду iptables -I [цепочка] [номер], чтобы указать номер позиции в списке, которую должно занять новое правило.

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

Для просмотра текущих настроек iptables по умолчанию можно использовать команду iptables -L.

 

Соединения с одного IP-адреса

Правило ниже позволяет заблокировать все соединения с IP-адреса 10.10.10.10:

iptables -A INPUT -s 10.10.10.10 -j DROP

Соединения с диапазона адресов

Правило ниже позволяет заблокировать соединения из диапазона IP-адресов 10.10.10.0/24. Для указания диапазона адресов можно использовать стандартную запись маски подсети через слэш или описывать ее в полном варианте:

iptables -A INPUT -s 10.10.10.10/24 -j DROP

Соединения на конкретный порт

 

Ниже показано, как заблокировать SSH-соединения с хоста 10.10.10.10:

iptables -A INPUT -p tcp --dport ssh -s 10.10.10.10 -j DROP

Вместо SSH можно указать любой протокол или номер порта. Часть кода –p tcp говорит iptables о типе соединения, которое использует протокол. Если вы блокировали протокол, который использует UDP вместо TCP, то тогда нужно было бы написать –p udp.

Вот так можно заблокировать SSH-соединения с любого IP-адреса.

iptables -A INPUT -p tcp --dport ssh -j DROP

 

Команды

Для просмотра текущих настроек iptables по умолчанию можно использовать команду

iptables -L

Для удаления всех сконфигурированных правил можно использовать такую команду:

iptables -F

Сохранение изменений:

Ubuntu: iptables-save

RedHat\Centos: service iptables save

Прочее: iptables save

 

  • 0 Пользователи нашли это полезным

Помог ли вам данный ответ?