Однострочный скрипт, блокирующий доступ к ресурсу с диапазонов IP адресов Крыма, Донецкой и Луганской области.
Запускать из-под рута:
wget `curl -s https://db-ip.com/db/download/ip-to-city-lite | grep -E -o 'https://download.db-ip.com/free/dbip-city-lite-20[0-9]{2}-[0-9]{2}.csv.gz'`&& gunzip dbip-city-lite-*.csv.gz && mv dbip-city-lite-* dbip-city-lite-csv && for IP in $(cat dbip-city-lite-csv | grep -E -i "'Crimea|Lugansk|Luhans|Donetsk|Донецьк|Донецк|Крим|Крым|Луганс'" | sed 's/","/-/' | cut -d ',' -f 1 | sed 's/"//' | grep -E -o '(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)' | uniq | sort -n); do iptables -A INPUT -m iprange --src-range $IP -j DROP; done && rm -f dbip-city-lite-csv*
Ну и, если надо, по частям:
Скачиваем базу
wget `curl -s https://db-ip.com/db/download/ip-to-city-lite | grep -E -o 'https://download.db-ip.com/free/dbip-city-lite-20[0-9]{2}-[0-9]{2}.csv.gz'`
Распаковываем
gunzip dbip-city-lite-*.csv.gz
Переименовываем
mv dbip-city-lite-* dbip-city-lite-csv
Читаем список и блокируем с помощью iptables
for IP in $(cat dbip-city-lite-csv | grep -E -i "'Crimea|Lugansk|Luhans|Donetsk|Донецьк|Донецк|Крим|Крым|Луганс'" | sed 's/","/-/' | cut -d ',' -f 1 | sed 's/"//' | grep -E -o '(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)' | uniq | sort -n); do iptables -A INPUT -m iprange --src-range $IP -j DROP; done
Чистим за собой
rm -f dbip-city-lite-csv*