FreeBSD Использование geoip модуля nginx для защиты от ddos атак
Автор: admin Раздел: Безопасность
На многих администрируемых серверах, всегда сталкиваюсь с 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 атак. Конечно возможно выдумать изобилие другого выбора использования исходного модуля для решения разных задач сопряженных с географическим расположением гостя веб-сайта. |