пятница, 26 февраля 2010 г.

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

http://www.find-ip-address.org/ip-country/ - генерит сети (файл .htaccess для apache - вибираешь Allow или Deny) чтобы потом им рубить всякие нехорошие страны откуда рулит спам и т.д.
http://ipinfodb.com - аналог

Ставим:geoip
Переносим тестовый конфиг в рабочий: mv /etc/GeoIP.conf.default /etc/GeoIP.conf (не нужно идентичные)
Теперь пробуем для любого (я делал для своего) определить принадлежность IP адреса стране:
geoiplookup 95.79.205.111
GeoIP Country Edition: RU, Russian Federation
Теперь получим список всех клиентов, подключенных к нашему серверу:
netstat -apnt | awk '{print $5}' | tr ':' ' ' | awk '{print $1}' | sort | uniq > /tmp/ips
А теперь получаем список стран, соответствующих IP адресам наших клиентов:
for ip in `cat /tmp/ips`; do geoiplookup $ip; done | tr ',' ' ' | awk '{print $4}' | sort | uniq -c
лучше $5 - там имя страны полностью !
Теперь, если вы точно уверены, что, например, посетителей с Зимбабве в числе 1500 человек у Вас ну точно нету, то можете написать скрипт, который забанит неугодных ботов :) Кроме этого, есть модуль для iptables, который позволяет отсекать посетителей в зависимости от страны.

Прикручивает скриптом к айпитейблз (не забываем создать цепочку iptables -N drop_nets)
#!/bin/sh
#
# Get lists http://www.find-ip-address.org/ip-country/
# putting prefixes to deny, and output in the CIDR.
# Farewell China!
#
# ps: Do not forget to edit the list in the call zcat.
#
sudo iptables -F drop_nets
for LDENY in $( zcat \
AP_cidr_deny.txt.gz \ # Asia/Pacific region
CN_cidr_deny.txt.gz \ # China
IN_cidr_deny.txt.gz \ # India
KR_cidr_deny.txt.gz \ # Korea
MY_cidr_deny.txt.gz # Malasia
); do
echo $LDENY | grep "[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*/[0-9]*" >/dev/null&& \
sudo iptables -A drop_nets -s $LDENY -j DROP
done

Если хотим прикрутить как модуль айпитейбл, тогда:

Фильтрация пакетов по географическому признаку с помощью iptables и geoip
Брутфорс-атаки не должны представлять реальной угрозы для хорошонастроенного сервера, но, тем не менее, они отвлекают и засоряютлог-файлы. Существуют различные решения для предотвращения подобныхатак. В этой заметке я расскажу вам о еще одном из них: GeoIP
GeoIP - это модуль для netfilter/iptables, который позволяет фильтровать приходящие пакеты по их географическому местоположению.
Этот модуль может быть использован не только для предотвращениябрутфорса. Например, его можно использовать для так называемой“расистской маршрутизации”, т.е. для ограничения доступа к серверупользователям из определенных стран. Оставим цели использования насовести системных администраторов, а в этой заметке я просто опишуустановку и настройку модуля
Все проверялось на Debian 4.0, но ничего debian-специфичного в процессенет, так что все должно работать и на других дистрибутивах GNU/Linux.Для установки нам понадобятся новый модуля для ядра, библиотеки дляiptables и база соответствия IP-адресов странам. Пересобирать ядро ненужно.
Итак:Подготовка
Первым делом нам понадобятся исходные тексты ядра, которое используется в системе. Для Debian Etch это 2.6.18# apt-get install linux-source-2.6.18Скачанные исходники будут лежать в /usr/src. Распакуем их:# tar xjf /usr/src/linux-source-.tar.bz2 -C /usr/src/Замените на версию вашего ядра. Для распакованного архива понадобится около 300 Мб свободного места.Теперь нам нужны исходные тексты iptables. Нет необходимостипересобирать сам iptables, но исходники понадобятся для сборки модуля.Для работы с ними удобно использовать временную директорию# mkdir ~/geoip
# cd ~/geoip/
# apt-get source iptablesВнимание, для использования apt-get source в вашей системе должен быть установлен пакет dpkg-devТеперь не хватает только самого geoip# wget http://people.netfilter.org/peejix/patchlets/geoip.tar.gzДля дальнейшей работы нам понадобится patch-o-matic-ng, его можно найти на Если у вас старое ядро, то, возможно, вам придется выбрать более старуюверсию, но для нашей заметки актуален последний снапшот:# wget http://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И распакуем исходники geoip в поддиректорию patchlets/ пакета patch-o-matic-ng# tar xzf geoip.tar.gz -C patch-o-matic-ng-20070414/patchlets/Наложение патчей
Применим необходимые патчи к ядру и iptables# cd patch-o-matic-ng-20070407/
# KERNEL_DIR=/usr/src/linux-source-/ IPTABLES_DIR=~/geoip/iptables-/iptables/ ./runme geoipНе забудьте заменить на используемые в вашей системе версии ядра и iptables.
Если все прошло успешно, то patch-o-matic-ng предоставит информацию о полученном патче и предложит применить его. Ответьте y.Сборка и установка модуля для ядра
Для сборки нам понадобится пакет build-essential. Если вы работаете нес Debian, то установите средства для разработки: gcc, make и т.д.# apt-get install build-essentialТак как нам потребуется немного переконфигурировать ядро, мы возьмем за основу уже имеющуюся конфигурацию:# cd /usr/src/linux-source-/
# make oldconfigНа вопрос:geoip match support (IP_NF_MATCH_GEOIP) [N/m/?] (NEW)Ответьте m, чтобы собрать geoip как модуль.Выполните подготовку для сборки модулей:# make modules_prepareЗатем соберите модули.. К сожалению, я не знаю как собрать толькоодин необходимый модуль, так что собираем все модули netfilter, покакто-нибудь не предложит лучший способ :)# make -C $(pwd) M=net/ipv4/netfilter/ modulesЕсли все нормально, то файл ipt_geoip.ko должен появиться в net/ipv4/netfilter/. Скопируем его к остальным модулям системы# 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
Соберем библиотеку:# cd ~/geoip/iptables-/iptables/
make KERNEL_DIR=/usr/src/linux-source-/ extensions/libipt_geoip.soНе забывайте заменять !!!Скопируем полученный файл к другим библиотекам iptablescp extensions/libipt_geoip.so /lib/iptables/Создание файла привязок IP-адресов к странам
Мы будем использовать свободно распространяемую базу с MaxMind. Она имеет заявленную точность в 98% и обновляется раз в месяц. Если длявас этого недостаточно, можно купить более точную платную версию тамже. Скачайте и распакуйте базу:# cd ~/geoip/
# wget http://www.maxmind.com/download/geoip/database/GeoIPCountryCSV.zip
# unzip GeoIPCountryCSV.zipВы можете открыть полученный файл в любом редакторе и увидите, чтоэто просто список, со значениями, разделенными запятыми. Поиск в такомфайле будет занимать много времени, поэтому мы преобразуем его вбинарный формат, используя утилиту csv2bin, также предоставленнуюавтором geoip.# wget http://people.netfilter.org/peejix/geoip/tools/csv2bin-20041103.tar.gz
# tar xzf csv2bin-20041103.tar.gz
# cd csv2bin/
# make
# ./csv2bin ../GeoIPCountryWhois.csvОна создаст два файла geoipdb.bin и geoipdb.idx, которые необходимо положить в /var/geoip# mkdir /var/geoip
# mv geoipdb.* /var/geoip/Теперь вы можете выполнять фильтрацию по географическому признаку :)# # Блокировка доступа к SSH всем, кроме Афганистана
# iptables -A INPUT -p tcp –dport 22 -m geoip ! –src-cc AF -j REJECT
# # Запрет на пинг хостов, расположенных во Франции, Италии и Испании
# iptables -A OUTPUT -p icmp -m geoip –dst-cc FR,IT,ES -j REJECT
# # Помощь
# iptables -m geoip –help

источник: http://eaglebearsecurity.com/news/filtracija_paketov_po_geograficheskomu_priznaku_s_pomoshhju_iptables_i_geoip/2009-09-27-489

Комментариев нет:

Отправить комментарий