Блокировка IP по нескольким странам

Предположим, что стоит задача закрыть доступ к устройству для каких-то недружественных стран. В этом случае, необходимо получить IP адреса подсетей, принадлежащих этому государству, затем внести правила их обработки с помощью утилиты ipset

Установка ipset - yay -S ipset. После выполнения скрипта, указанного ниже, следует сохранить правила и включить сервис

# ipset save > /etc/ipset.conf

# systemctl start ipset.service

# systemctl enable ipset.service

Код блокировки по списку стран(block-by-countries.sh)


sudo ipset destroy countries
sudo ipset -N countries nethash
rm ips.txt
touch ips.txt
COUNTRIES=("uk" "pl")
for C in "${COUNTRIES[@]}"
do
        echo $C
        curl "https://raw.githubusercontent.com/herrbischoff/country-ip-blocks/master/ipv4/$C.cidr" -o list.txt
        cat list.txt >> ips.txt
        rm list.txt
done;

filename="ips.txt"
while read -r line; do
    iprange="$line"
    echo "Range to ban - $iprange"
    sudo ipset add countries $iprange
done < "$filename"
sudo iptables -I INPUT -m set --match-set countries src -j DROP   

Теги документа  ArchLinux