ГлавнаяРегистрацияВходВ закладки

Главная » Статьи » FreeBSD » Безопасность
FreeBSD Использование geoip модуля nginx для защиты от ddos атак
На многих администрируемых серверах, всегда сталкиваюсь с ddos атаками на http. Не открою большею секрет, сказав что от доброй ddos атаки на сервере затвориться абсолютно не действительно, забьют подделывал и привет, дальше или ssh не доступен, либо хостер объединяет сервер за превышение трафика ( факты были ). Хотя уменьшать ущерб от маленький атаки на веб-сайт достаточно вероятно и на сервере. В исходном материале осмотрим применение geoip модуля nginx для высокой защиты от ddos атак.

Фактически для чего вобщем воспрещать доступ к веб-сайту по географическому признаку ? Правда элементарно 80% IP адресов участвующих в ddos нападению, обычно относятся государствам, обитатели каких ни в какое время не зайдут на этот веб-сайт, конечно сие чисто персонально для любого ресурса и ежели вы видите что часть ваших гостей доводит из Эфиопии либо Страна, объединять их, вы вряд-ли пожелаете. Около большинства-же моих покупателей, географическое размещение гостей, как правило ограничивается Европой и былым СССР, прочих возможно уверенно переступать.

Обрисовываемый метод блокировки нежелательных государств при помощи интернет сервера nginx и geoip модуля, в один, и ведь полностью, делему не разрешит, это только одна, из нескольких разнообразных граней ( наладка ядра, фаервола, настоящих сервисов, добавочного софта ), по минимизации ущерба, причиняемого этим вариантом атаки серверу и сайтам, на нем размещенным.

Планы, довольно частенько нуждающиеся в сходственного семейства охране, я по способности стремлюсь сначало подымать в отсутствие роли веб сервера apache, т. е. на вязке nginx - fastcgi.

Значит так, устанавливать и налаживать все это хозяйство станем на сервере под правлением операторной системы FreeBSD восьмой.2 and64.

Что-бы часть geoip получал, требуется добавочная книгохранилище, устанавливаем:

freebsd82 /usr/ports# make -C net/GeoIP install clean

Далее ставим nginx:

freebsd82 /usr/ports# make -C www/nginx install clean

в функциях сборки необходимо подключить geoip часть nginx, поставив галку против пт Enable http_geoip module.

Дальше идем на страничку http://www.maxmind.com/app/geolitecountry и закачиваем latest GeoLite Country Binary Format, сие даровой вид базы государств и определенных им блоков IP адресов. Распаковываем картотека и бросаем файл GeIP.dat в папку /usr/local/etc/nginx/conf/geo. Осталось отредактировать настройка nginx.

Обнаруживаем nginx.conf, дописываем в секцию http последующий блок директив:

Code:
geoip_country /usr/local/etc/nginx/conf/geo/GeoIP.dat; # подключаем GeIP базу
map $geoip_country_code $bad_country { # модуль map создает переменные, значения которых зависят от других переменных, очень полезная штука
    default 1; # значение по умолчанию
    include geo/good_countries; # инклудим файл, к нему вернемся чуть позже
}

Данный блок map, значит, что все государства находящиеся в информационной базе, представляются воспрещёнными по умолчанию, ну а в файле good_countries, станут перечислены разгаданные страны. Если около вас пример ситуация, когда разгаданных государств более чем воспрещённых, возможно легко обращать исходную логику и досоздать файл bad_countries со перечнем воспрещённых государств, разрешив все прочие.

Теперь же опции хоста. Я предпочитаю придерживать хосты в раздельной папке, например hosts, любой в своем файле.

Code:
server {
    listen       IP:80;
    server_name  testhost.com;

    if ($bad_country){ # если данная переменная установлена, то есть если страна не перечислена в файле good_countries
        return 444; # выдаем клиенту пустой ответ ( незачем отдавать 403 ошибку или еще какую-либо )
    }
.................
.................
}

Теперь же возвратимся к файлу good_countries. Здесь все максимально элементарно, государства, каким допустим доступ на веб-сайт, перечислены в последующем формате:

Code:
TM 0;
UA 0;
UZ 0;
RU 0;
.......
.......
и т.д.

Т. е., что-бы позволить какую-нибудь государство, довольно приплюсовать ее двухбуквенный код и 0, затем перезагрузить конфиг nginx:

Code:
freebsd82 /# nginx -s reload

Самочки коды государств, на раз 2, ищутся чрез google.

Испробовать, трудится geoip часть либо недостает, возможно, удалив из перечня разгаданных государств собственную, и попробовав зайти на веб-сайт.

Фактически такая всеобщая методика применения geoip модуля nginx для высокой защиты от ddos атак.

Конечно возможно выдумать изобилие другого выбора использования исходного модуля для решения разных задач сопряженных с географическим расположением гостя веб-сайта.
Просмотров: 4165
Дата: 2011-08-07 00:35:05
Комментариев: 0
Источник: