No linux seus iptables
instale o ipset e o iptables se ainda não estiver instalado.
ipset create banned_hosts hash:net family inet hashsize 65536 maxelem 200000 counters comment
iptables -I INPUT 1 -m set -j DROP --match-set banned_nets src
iptables -I FORWARD 1 -m set -j DROP --match-set banned_nets src
iptables -I FORWARD 2 -m set -j DROP --match-set banned_nets dst
iptables -I OUTPUT 1 -m set -j DROP --match-set banned_nets dst
Você terá que salvar e restaurar a lista antes / depois da reinicialização.
ipset save >/somewhere/ban.txt
ipset restore </somewhere/ban.txt
Se o seu linux usa o systemd, eu tenho algumas regras para automatizá-lo.
O arquivo deve ser parecido com isso, mas a lista de antes e depois pode ser diferente.
crie
/etc/systemd/system/basic.target.wants/ipset.service
[Unit]
Description=IP sets for iptables
After=ufw.service
Before=network.target
Before=iptables.service
Before=webmin-iptables.service
AssertPathExists=/src/all.txt
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/sbin/ipset restore -f /src/all.txt
ExecStop=/sbin/ipset save -f /src/all.txt
#ExecReload=/usr/libexec/ipset/ipset.start-stop reload
# Save current ipset entries on stop/restart.
# Value: yes|no, default: no
# Saves all ipsets to /etc/sysconfig/ipset if ipset gets stopped
Environment=IPSET_SAVE_ON_STOP=yes IPSET_SAVE_ON_RESTART=no
[Install]
WantedBy=basic.target