Блокируем китайтрафик на сервере

Давно я хотел заняться ограничением доступа на сервера (особенно которые вещают стримы) на базе библиотеки GeoIP , но всё как-то отлаживал. Пока сегодня не заглянул в iftop. Большая часть адресов — китайгород. Приступаем к наведению порядка…

Есть хорошее дополнение xtables-addons которое работает-таки с либой GeoIP (как определить страну в php-скрипте на её базе писал здесь). Вот его и будем использовать для поставленной задачи. Тем более, что оно умеет определять страны в т.ч. по IPv6.
Ставим необходимые пакеты:

apt-get install iptables-dev xtables-addons-common libtext-csv-xs-perl pkg-config

Качаем, компилим и устанавливаем последнюю версию xtables-addons (на данный момент 2.12):

wget http://downloads.sourceforge.net/project/xtables-addons/Xtables-addons/xtables-addons-2.12.tar.xz
tar xf xtables-addons-2.12.tar.xz
cd xtables-addons-2.12
./configure
make
make install

В скачанном xtables-addons в папке geoip уже имеются скрипты, которые способны осуществить обновление базы с сервиса geolite.maxmind.com.
Для этого выполняем следующие команды (в идеале добавить в крон раз в мес):

cd geoip
./xt_geoip_dl
./xt_geoip_build GeoIPCountryWhois.csv
mkdir -p /usr/share/xt_geoip
cp -r {BE,LE} /usr/share/xt_geoip

Всё! Сервер готов фильтровать трафик с помощью iptables.
Блочим негодяев:

# блокируем входящий китайтрафик
iptables -A INPUT -m geoip --src-cc CN -j DROP
# блокируем исходящий китайтрафик
iptables -A OUTPUT -m geoip --dst-cc CN -j DROP

Страна (или если страны, то через запятую без пробелов) указываются в двухбуквенном обозначении согласно ISO-3166-1.
Если, например, надо заблочить все страны кроме Беларуси, то делается это так:

iptables -I INPUT -m geoip ! --src-cc BY -j DROP
Запись опубликована в рубрике Linux, Программирование с метками , , . Добавьте в закладки постоянную ссылку.

Добавить комментарий