debian 12 установка xt_geoip.ko и бан китайцев по GeoIP

Dec 01, 2024 14:26

Любят у нас владельцы VPS идти по сложному пути
VPS стоит с ядром ( с именем cloud в имени)
root@my-vps:/usr# uname -a
Linux my-vps 6.1.0-28-cloud-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.119-1 (2024-11-22) x86_64 GNU/Linux
И это особенность нам аукнется
Сначала пытаем загрузить модуль xp_geoip.ko
Смотрим список что уже загружено
lsmod | grep x_tables
Ну и соотвественно там модуля нашего еще нет
Ставим пакеты
apt-get install xtables-addons-common
apt-get install iptables-persistent libxtables-dev libtext-csv-xs-perl
apt-get install libmoosex-types-netaddr-ip-perl pkg-config

И во время установки он тянет headers от ядра в системе и проблемка в том что он тянет дефолтный пакет для ядра ( а нам нужно с именем cloud )
Если вы прошляпили этот момент то при загрузки модуля будет ругаться типа так
modprobe xt_geoip
modprobe: FATAL: Module xt_geoip not found in directory /lib/modules/6.1.0-28-cloud-amd64
А все потому что он загрузил все для ядра 6.1.0-28-amd64
Спустя час понимания процесса про%ба ( где и что потеряно )
apt-cache search headers | grep cloud
apt-get install linux-headers-6.1.0-28-cloud-amd64
и вот только тогда модуль загрузится
modprobe xt_geoip
и в ответ в списке он появится
lsmod | grep x_tables
x_tables 61440 5 nft_compat,xt_multiport,xt_geoip,ipt_REJECT,ip_tables
Создаем каталог
mkdir -p /usr/share/xt_geoip/
Качаем наши гео базы городов в каталог /usr/share/xt_geoip/
wget -O dbip-country-lite.csv.gz "https://download.db-ip.com/free/dbip-country-lite-$(date +'%Y-%m').csv.gz" ( ссылку ищите в гитхаб если забанят )
распаковка
gunzip dbip-country-lite.csv.gz
Теперь нам нужно конвертировать базу в формат который понимает iptables
cd /usr/share/xt_geoip/
проверяем что база лежит в каталоге
ls
dbip-country-lite.csv
запуск конвертера
/usr/libexec/xtables-addons/xt_geoip_build
В результате в каталоге /usr/share/xt_geoip/ должно появиться много мелких файлов по странам

Проверяем что правила iptables у нас в постоянной загрузке
для ручного поиска еще пару пакетов
apt-get install geoip-bin
apt-get install geoip-database
можно потом проверять ручками
geoiplookup 218.92.0.225
и правим
/etc/iptables/rules.v4
добавлая пару строк в нужное место (полностью их баним или только по ssh )

-A INPUT -m geoip --src-cc CN -j LOG --log-prefix "Iptables: CHINA: "
-A INPUT -m geoip --src-cc CN -j DROP

рестарт службы
и проверка
iptables -L -n -v
должны увидать строчки и растущий счетчик пакетов
3 180 LOG 0 -- * * 0.0.0.0/0 0.0.0.0/0 -m geoip --source-country CN LOG flags 0 level 4 prefix "Iptables: CHINA: "
3 180 DROP 0 -- * * 0.0.0.0/0 0.0.0.0/0 -m geoip --source-country CN
вот как то так

geoip iptables

Previous post
Up