Блокировка в iptables по IP адресу и порту


Блокировка в iptables — правило, позволяющее предотвратить поступление запросов по порту, интерфейсу или с определенного ip адреса.



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


Данные правила являются дополнением к базовому firewall.



Блокировка в iptables


Определенные сетевые пакеты при попадании на серверную машину извне могут получать статус INVALID. Такие пакеты не несут никакой нужной информации и их можно сразу отбрасывать.

iptables -A INPUT -m conntrack --ctstate INVALID -j DROP



Базовая блокировка

Нежелательный адрес можно заблокировать следующим образом:

iptables -A INPUT -s 15.15.15.51 -j DROP



Добавленное правило можно увидеть в выводе iptables-save на сервере

Блокировка в iptables по IP адресу и порту


Пакеты при этом не будут доходить, отправителю при этом будет возвращаться ответ port unreacheable

Это говорит о наличии firewall и фильтрации, то есть предоставляет обращающемуся к серверу информацию. По крайней мере он знает что такой сервер есть и он в сети.



Чтобы полностью скрыть от потенциального злоумышленника сканирующего сеть в поисках уязвимой машины можно использовать не DROP, а REJECT. Тогда никакого ответа на запрос не последует.

iptables -A INPUT -s 15.15.15.51 -j REJECT



При фильтрации можно указывать только адрес или, например, адрес и интерфейс на который запросы с него принимать не следует

iptables -A INPUT -i eth0 -s 15.15.15.51 -j DROP



Входящие и исходящие соединения по порту


iptables предоставляет возможность для более гибкой блокировки. Можно заблокировать  все входящие запросы на любой порт — например на порт 80 (веб-сервер)

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



Или исходящие соединения на любой порт — например на порт 25 (почтовая служба на отправку)

iptables -A OUTPUT -m state --state NEW -m tcp -p tcp --dport 25 -j DROP



Также существуют некоторые базовые политики безопасности, устанавливать которые является хорошей практикой


Они позволяют в какой-то степени пресечь отправку очень большого количества пакетов и являются простейшим фильтром DDOS

iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP

iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP

iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP



Стоит помнить, что от мощной атаки iptables не защитит.

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



Читайте про то как очистить правила iptables.

Сказать спасибо