Debian iptables geo блокировка доступа по странам

Вариант с использованием IPSET совместно с IPTABLES.

Все будет выполнено на шелл скриптах. Устанавливаем необходимое:

Теперь пишем наш скрипт /etc/RU/block_noRU_geoip.sh  для создания и обновления IPSET:

 

Обращаем внимание, что в скрипте есть закомментированные строки в виде #1# или #2# –  это разные источники списка ip  адресов и соответственно их обработки для ipset.

Если Вам импонируют другие источники кроме RIPE, то предварительно закомментировав строку $CURL -k http://stat.ripe.net/data/country-resource-list/data.json?resource=ru | $JQ -c '.data.resources.ipv4[]' | $SED 's/\"//g' > $FIPSET  , раскомментируйте все #1# или #2# комментарии в зависимости от выбранного источника.

Проверить, что у нас все загрузилось правильно, можно командой

Использование

Теперь применяем наш список из IPSET в IPTABLES … в нашем случае для запрета всех пакетов с ip отсутствующих в таблице russia_ru для UDP SIP

Обращаем внимание, что команда установит в самое начало списка наше правило, но это не всегда требуется, а иногда и вредно … вот пример заголовка моего файла конфигурации для iptables

-A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -m conntrack –ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -s 127.0.0.0/8 -j ACCEPT
-A INPUT -p gre -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i eth0 -s 10.0.0.0/8 -p udp -m udp –dport 5000:50000 -j ACCEPT
-A INPUT -i eth0 -s 172.16.0.0/12 -p udp -m udp –dport 5000:50000 -j ACCEPT
-A INPUT -i eth0 -p udp -m multiport –dports 5000:50000 -m set ! –match-set russia_run src -j LOG –log-prefix “BAD_SIP_No_Russia-IPSET: ” –log-level 6
-A INPUT -i eth0 -p udp -m multiport –dports 5000:50000 -m set ! –match-set russia_run src -j DROP

Журнал

Пишем журнал сетевого экрана, создать конфигурационный файл для rsyslog (считаем, что он у вас уже установлен в системе).

Открываем его любым текстовым редактором, например, nano и вносим туда следующие строчки:

Сохраняем изменения в файле. Первая строчка говорит rsyslog, что нужно искать в логе фразу “IPTables-Dropped: “, и когда он её находит, то переносит в файл /var/log/iptables.log
Вторая строчка просто дает понять rsyslog, чтобы найденные строки, подходящие под условия, не дублировались в основной лог /var/log/messages.
Перезапускаем rsyslog:

Все, подготовительный этап, позволяющий писать лог iptables в отдельный файл мы сделали.

Правило запрещающее входящий доступ к 443 порту сервера и отправляющее запись в журнал:

 

 

 

Источник: https://otito.pro/Firewall/GEOIP_DEBIAN-11_2

https://pc.ru/articles/iptables-pishem-v-log-vse-otfiltrovannye-pakety

https://serveradmin.ru/debian-nastroyka-servera/

 

Довольны?
[Оценок: 0 средняя: 0]
02.12.2023