ipset

Установка

apt-get update
apt-get install ipset

Создаем скрипт запуска
mcedit /etc/systemd/system/ipset-persistent.service

[Unit]
Description=ipset persistancy service
DefaultDependencies=no
Requires=netfilter-persistent.service
Requires=ufw.service
Before=network.target
Before=netfilter-persistent.service
Before=ufw.service
ConditionFileNotEmpty=/etc/iptables/ipset.conf

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/sbin/ipset restore -f -! /etc/iptables/ipset.conf

# save on service stop, system shutdown etc.
ExecStop=/sbin/ipset save -f /etc/iptables/ipset.conf

[Install]
WantedBy=multi-user.target

RequiredBy=netfilter-persistent.service
RequiredBy=ufw.service

Создаем файлик конфига
/etc/iptables/ipset.conf

create blacklist hash:ip family inet hashsize 1024 maxelem 65536
add blacklist 1.1.1.1

Далее

sudo systemctl daemon-reload
sudo systemctl start ipset-persistent
sudo systemctl enable ipset-persistent

Можно добавить блокировку руками
ipset -A blacklist 1.1.1.1

После чего сохранить данные
sudo systemctl stop ipset-persistent

Так же можно читать данные из файла, вот пример части скрипта.

#!/bin/bash

ipset flush blacklist

list=$(cat /etc/iptables/blacklist1; cat /etc/iptables/blacklist2)
for ipnet in $list
 do
 ipset -A blacklist $ipnet
 done

Ну и конечно не забываем добавить правила в iptables

# http drop
-A INPUT -m set --match-set blacklist src -p tcp --dport 80 -j DROP
-A INPUT -m set --match-set blacklist src -p tcp --dport 443 -j DROP

# http
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT

[ Править ]

@kiranananda