Аннотация
В этой статье я хочу рассказать о том, как настроить iptables на O(1) без боли, а также сделаем, так, чтобы после перезагрузки наши изменения автоматически восстанавливались. Сделаем мы это без systemd-юнитов, cron и прочих других сложностей. Спойлер: вся установка пройдёт в 4 однострочных команды. Поехали!
Шаг 1: Установка (4 команды)
Я буду показывать это на Debian 13. Это гарантировано сработает на современных версиях Debian (>= 12), а также возможно на их производных (хотя там каких-то пакетов может не быть, смотрите репозиторий Вашего дистрибутива если это не Debian)
Шаг 1.1: установка всех нужных пакетов
Эта команда установит все необходимые пакеты:
$ sudo apt install iptables ipset netfilter-persistent iptables-persistent ipset-persistent
Шаг 1.2: создание чёрного списка
Создадим чёрный список, в котором будем хранить IP-адреса заблокированных машин (лимит = 5 миллионов, вы можете отредактировать под себя):
$ sudo ipset create blacklist hash:ip hashsize 65536 maxelem 5000000
Шаг 1.3: привяжем чёрный список к iptables
Скажем iptables: весь трафик от тех, кто находится в чёрном списке - блокировать
$ sudo iptables -I INPUT -m set --match-set blacklist src -j DROP
Шаг 1.4: сохранение изменений
И наконец, зафиксируем все изменения одной командой:
$ sudo netfilter-persistent save
Шаг 2: Ежедневные команды (инструкция)
Готово, мы установили и настроили всё необходимое. В этом разделе я расскажу вам о самых важных командах при работе с ipset. А именно: заблокировать IP, разблокировать IP, посмотреть информацию и как сохранить изменения, чтобы они пережили перезагрузку
Команда 1: блокировка IP
Эта команда заблокирует определённый IP:
$ sudo ipset add blacklist ip
Команда 2: разблокировка IP
Эта команда разблокирует определённый IP:
$ sudo ipset del blacklist ip
Команда 3: информация о чёрном спике
Данная команда покажет всю информацию о чёрном списке: название, размер, потребляемая память, заблокированные IP и многое другое!
$ sudo ipset list blacklist
Команда 4: сохранение изменений
Эту команду нужно вводить после каждой блокировки/разблокировки/любого другого изменения чёрного списка, чтобы изменения зафиксировались и не удалились после перезагрузки:
$ sudo netfilter-persistent save