Блокирование IP-адреса при помощи iptables и nftables в Linux
Иногда сталкиваюсь с необходимостью блокировать в моменте определённые IP-адреса на сервере смотрящие в интернет, чтобы защитить систему от атак или нежелательных подключений.
В Linux обычно всегда установлена по умолчанию одна из этих утилит — iptables
1 или nftables
2. Обе утилиты позволяют фильтровать трафик и контролировать доступ, но они имеют различия в функционале и синтаксисе. Рассмотрим как заблокировать IP-адрес с помощью iptables и nftables.
Вариант с iptables
Чтобы заблокировать входящие соединения с конкретного IP-адреса с помощью iptables, используйте команду:
iptables -A INPUT -s XXX.XXX.XXX.XXX -j DROP
Пояснения:
-A INPUT
: добавляет правило в цепочку INPUT (входящий трафик),-s XXX.XXX.XXX.XXX
: указывает IP-адрес, который нужно заблокировать,-j DROP
: означает, что пакеты с этого IP-адреса будут просто отброшены, без ответа.
Можно использовать REJECT
вместо DROP
:
DROP
— просто закрывает соединение и не отправляет ничего в ответ. Не дает информации о том, что порт заблокирован (порты показываются как «filtered»).REJECT
— сбрасывает соединение и отправляет в ответ сообщение, указанное в опции--reject-with
. По умолчанию отправляетсяhost is unreachable
. Требует дополнительных ресурсов на отправку ответов.
iptables -A INPUT -s XXX.XXX.XXX.XXX -j REJECT
iptables-persistent
, который автоматически сохраняет правила и восстанавливает их после перезагрузки.Для удаления правила по номеру или полному описанию, например, чтобы удалить заблокированный IP-адрес, используйте:
iptables -D INPUT -s XXX.XXX.XXX.XXX -j DROP
Вариант с nftables
Чтобы заблокировать входящие соединения с конкретного IP-адреса с помощью nftables, используйте команду:
nft add rule inet filter input ip saddr XXX.XXX.XXX.XXX drop
Пояснения:
inet
: это семейство протоколов, которое включает как IPv4, так и IPv6,filter
: это таблица фильтрации,input
: цепочка входящего трафика,ip saddr XXX.XXX.XXX.XXX
: указывает на фильтрацию пакетов с определённого исходного IP-адреса,drop
: действие, которое будет выполнено с пакетами (в данном случае, пакеты будут отброшены).
Если вы хотите, чтобы сервер отправлял уведомление о недоступности хоста, можно использовать команду с параметром reject:
nft add rule inet filter input ip saddr XXX.XXX.XXX.XXX reject with icmp host-unreachable
В отличии от iptables, nftables может сохранять правила без установки дополнительных пакетов. Сохранение настроек выполняется командой:
nft list ruleset > /etc/nftables.conf
Чтобы удалить правило, добавленное для блокировки IP-адреса с помощью nftables, можно использовать команду для удаления правила из таблицы.
nft delete rule inet filter input ip saddr XXX.XXX.XXX.XXX drop
- Iptables — это утилита для фильтрации и управления сетевым трафиком в операционных системах на базе Linux. Она работает через интерфейс Netfilter, который встроен в ядро Linux, и позволяет администраторам настраивать брандмауэр (межсетевой экран), блокируя или разрешая определенные виды трафика. ↩︎
- Nftables — это более новый инструмент для фильтрации сетевого трафика, который объединяет функциональность нескольких утилит, таких как
iptables
,ip6tables
,arptables
иebtables
, в одну систему. Основным преимуществом nftables является более простой синтаксис и улучшенная производительность. ↩︎
ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОДДЕРЖИ АВТОРА ДОНАТОМ
Обсуждение
Нет комментариев.