Отстреливаемся! xtables - прощайте мои азиатские "братья" (Debian / ALT Linux)

Jul 10, 2017 19:10

Давно собирался сделать, да всё как говорится руки не доходили. Ввиду того, что азиатские братья всё больше и больше проявляют интерес к моим серверам, сканируя рабочие порты и пытаясь выудить из них какую-либо информации и проникнуть внутрь, пришлось таки взять в руки автомат.
И в роли автомата выступает модуль для iptables - xtables.
Вбиваем в поиск по репам:

# apt-cache search xtables
Среди результатов, нас интересует.
xtables-addons и xtables-addons-geoip-utils.
Устанавливаем. За собой они ещё подтянут perl-Text-CSV_XS, необходимый для обработки .CSV.
А ещё нужно подтянуть руками
kernel-modules-xtables-addons-std-def (в зависимости от вашего ядра).
иначе при попытке добавить правило в iptables, будете видеть "iptables: No chain/target/match by that name." Само оно почему-то подтянуться не захотело.
Лучще всего конечно, устанавливать из исходиков, т.к. в репах зачастую лежит какая-нибудь бородатая версия (к примеру у меня это 1.39 за 2011ый год, при том что на данный момент последняя 2.13
https://sourceforge.net/projects/xtables-addons/files/Xtables-addons/
Но т.к. я собираюсь обновить систему в ближайшее время на 2 версии выше, то для меня важнее, чтобы на обновлении вылезкло как можно меньше косяков и несоотвествий, при обновлении.
Для того, чтобы не дёргать всю систему, подгружаем модуль в ядро в ручную
# modprobe x_tables
Далее заходим cd /usr/libexec/xtables-addons
Выполняем xt_geoip_dl (скачиваем актуальные базы geoip).
# mkdir /usr/share/xt_geoip
# ./xt_geoip_build -D /usr/share/xt_geoip *.csv
После выполнения последней команды, будет выведена таблица стран, которые затем указываются через запятую в параметрах "--src-cc" (страна источник), "--dst-cc" (назначение). Все параметры можно узнать, выполнив "iptables -m geoip -help".

Блокируем азию (filter)

-A INPUT -m geoip --src-cc CN, TW, KR -j DROP
И на случай, если всё-таки гости проникли внутрь, но это не живой человек а бот, то и
-A OUTPUT -m geoip --dst-cc CN -j DROP
Подключаться к SSH на 22 порт можно только из Беларуси
-A INPUT -p tcp -dport 22 -m geoip ! -src-cc BY -j REJECT
Запрещаем исходящие ICMP в некоторые страны
-A OUTPUT -p icmp -m geoip -dst-cc ES -j REJECT
Блокировка всех стран, кроме Беларуси
-I INPUT -m geoip ! --src-cc BY -j DROP

Коды стран можно глянтуь тут https://en.wikipedia.org/wiki/ISO_3166-1
Статья не идеал, требует доработки, но общий смысл понятен.

ddos, lan, altlinux, xtables, nat, geoip, iptables

Previous post Next post
Up