Луганский информационный порталЛуганский блог • Пользователь • 10102228 • kolka73

Фильтрация пользователе по IP адресу, настройка Линукс сервера

Фильтрация пользователе по IP адресу, настройка Линукс сервера
Работая над одной партнерской программой для сайта знакомств столкнулся с задачей фильтрации трафика по странам. Причин такой настрой ки сервера очень много - одна из главных это американские женихи! Как не странно наши Иваны и Андреи за сервис платить не желают! Их в бан! Да и спама меньше при таких настройках сервера. Мне задали задачу заблокировать зону RU, а CN отдать полный канал, а на все остальные в два раза меньше.. Разумеется, вбивать полностью все подсети руками неудобно, да и они часто меняются. Логичнее всего было сделать это с помощью geoip. Самое эффективное — это конечно прикрутить geoip к ядру. В моем случае на серверах был Debian, по этому и рецепт привожу под него. Сначала скачаем исходники
apt-get install linux-source-2.6.18
tar xjf /usr/src/linux-source-2.6.18.tar.bz2 -C /usr/src/
apt-get source iptables
wget people.netfilter.org/peejix/patchlets/geoip.tar.gz
wget ftp.netfilter.org/pub/patch-o-matic-ng/snapshot/patch-o-matic-ng-20070414.tar.bz2
tar xjf patch-o-matic-ng-20070414.tar.bz2
tar xzf geoip.tar.gz -C patch-o-matic-ng-20070414/patchlets/
Теперь будем собирать
cd patch-o-matic-ng-20070407/
KERNEL_DIR=/usr/src/linux-source-2.6.18/ ./runme geoip
Говорим «да» и выходим. Самое время поставить все нужное для сборки, если еще не ставили:
apt-get install build-essential
Скопировав текущий конфиг ядра, я просто вношу изменения:
cd /usr/src/linux-source-2.6.18/
make oldconfig
geoip match support (IP_NF_MATCH_GEOIP) [N/m/?] (NEW)
Тут нужно сказать «m» для сборки модуля. Затем:
make modules_prepare
cp net/ipv4/netfilter/ipt_geoip.ko /lib/modules/$(uname -r)/kernel/net/ipv4/netfilter/
depmod
modprobe ipt_geoip
echo "ipt_geoip" >> /etc/modules
Точно так же собираем библиотеку для iptables:
make KERNEL_DIR=/usr/src/linux-source-2.6.18/ extensions/libipt_geoip.so
cp extensions/libipt_geoip.so /lib/iptables/
Самая малость — база GeoIP
Для подготовки надо скачать бесплатную базу, хотя лучше взять платный вариант — он точнее. В любом случае подготовка базы будет идти с помощью csv2bin, который нужно собрать:
wget people.netfilter.org/peejix/geoip/tools/csv2bin-20041103.tar.gz
tar xzf csv2bin-20041103.tar.gz
cd csv2bin/
make
Ну и собственно конвертируем бесплатный вариант базы:
wget www.maxmind.com/download/geoip/database/GeoIPCountryCSV.zip
unzip GeoIPCountryCSV.zip
./csv2bin ../GeoIPCountryWhois.csv
Появляются 2 фалйа geoipdb.bin и geoipdb.idx которые надо бросить в /var/geoip:
mkdir /var/geoip
mv geoipdb.* /var/geoip/
После этого можно работать с mod_geoip, например так:
iptables -A INPUT -p tcp --dport 80 -m geoip --src-cc CN -j REJECT
Отбрасываем трафик с CN. А еще можно метить и менять полосу с помощью TC.
Вариант с приложением: NGINX
Если у вас не собирается ядро, или вообще VDS, то можно сделать почти все тоже самое, поставив на фронтенд nginx с mod_geoip. Прежде убедитесь, что nginx собран с поддержкой mod_goip. У меня он стоял, у кого нет — придется пересобрать, но это не сложно.
Саму базу необходимо конвертировать с помощью geo2nginx.pl (лежит в архиве с исходником nginx) и закинуть в конфиг:
perl geo2nginx.pl < GeoIPCountryWhois.csv > geo.conf
cp geo.conf /etc/nginx/
Использовать проще пареной репы:
geo $country {
default no;
include /etc/nginx/geo.conf;
127.0.0.0/24 ru;
}
Пример с RU трафиком:
if ($country ~* ru )
{
rewrite ^(.*)$ baidu.com/;
}
Как всегда у быстрого решения всегда найдется минус — в этом случае в виде паузы перед запуском nginx, так как база читается в память.
Запись сделана 2009-10-23
Старница для печати

<<< главная >>>
Protected by Copyscape Web Plagiarism Checker
<<<< назад >>>>

Анонс поста для вставки в блог или на сайт:

RSS экспорт записей блога:

1 2 3 4
Кликните по понравившейся кнопке чтобы получить её код.

У нас ищут:

Лучшие мысли в сети!


Кто должен ремонтировать крышу на моем доме Кто должен ремонтировать крышу на моем доме Я проживаю в многоквартирном доме в ЛНР (считаю, что у нас должно работать юридическое право, как в России, так как у нас все построено по вашей юридической схеме решения вопросов). У нас на доме течет крыша уже не перв...

Кадры реального боя с участие Брюса Ли Кадры реального боя с участие Брюса Ли Брюс Ли уникальный спортсмен, мастер восточных единоборств, человек который достиг такой силы и выносливости, что мог без труда одной ладошкой без каких либо замахов повергать противника в нокаут. Я раньше не видел ролик...

BLOGS - NEWS

помощью vargeoip сервера


Яндекс.Метрика