Блокировка в 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 на сервере
Пакеты при этом не будут доходить, отправителю при этом будет возвращаться ответ 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.