A
Ботнеты, используемые в дешевых (или "школьных") ддос-атаках состоят почти на 100% из иностранных IP-адресов: там может быть много зараженных китайских, иранских, иракских, индонезийских машин. Русские провайдеры более-менее реагируют на абузы, поэтому ддос русскими ботами сопоставим с некоторыми потерями для ддосера, а значит стоит дороже.
update
Удобнее и эффективнее использовать Cloudflare с защитой по странам.
Спрашивается, зачем нам пускать на сервер IP азиатских стран или даже фильтровать такой траффик, когда его можно целиком перекрыть. Один из таких способов: привязка к серверу Nginx модуля Geoip, что позволит указать в настройках список разрешенных или запрещенных стран.
1) Итак, первым делом устанавливаем Nginx и модуль Geoip.
2) Далее идем на страницу http://www.maxmind.com/app/geolitecountry и скачиваем latest GeoLite Country Binary Format, это бесплатный вариант базы стран и соответствующих им блоков IP адресов. Распаковываем архив и кидаем файл GeIP.dat в папку /usr/local/etc/nginx/conf/geo (FreeBSD) или /etc/nginx/conf.d (CentOS) . Осталось отредактировать конфиги nginx.
Открываем nginx.conf, дописываем в секцию http следующий блок директив:
Этот блок map, означает, что все страны находящиеся в базе данных, являются запрещенными по умолчанию, а в файле good_countries, будут перечислены разрешенные страны. Если у вас например ситуация, когда разрешенных стран больше чем запрещенных, можно легко инвертировать данную логику и создать файл bad_countries со списком запрещенных стран, разрешив все остальные.
Теперь настройки хоста. Я предпочитаю держать хосты в отдельной папке, например hosts, каждый в своем файле.
Теперь вернемся к файлу good_countries. Тут все предельно просто, коды стран, которым разрешен доступ на сайт, перечислены в следующем формате:
Чтобы изменения вступили в силу нужно перезагрузить Nginx:
Проверить, работает geoip модуль или нет, можно, удалив из списка разрешенных стран свою, и попробовав зайти на сайт.
В основу материала взята статья: http://gnu.su/news.php?extend.1453
update
Удобнее и эффективнее использовать Cloudflare с защитой по странам.
Спрашивается, зачем нам пускать на сервер IP азиатских стран или даже фильтровать такой траффик, когда его можно целиком перекрыть. Один из таких способов: привязка к серверу Nginx модуля Geoip, что позволит указать в настройках список разрешенных или запрещенных стран.
1) Итак, первым делом устанавливаем Nginx и модуль Geoip.
2) Далее идем на страницу http://www.maxmind.com/app/geolitecountry и скачиваем latest GeoLite Country Binary Format, это бесплатный вариант базы стран и соответствующих им блоков IP адресов. Распаковываем архив и кидаем файл GeIP.dat в папку /usr/local/etc/nginx/conf/geo (FreeBSD) или /etc/nginx/conf.d (CentOS) . Осталось отредактировать конфиги nginx.
Открываем nginx.conf, дописываем в секцию http следующий блок директив:
Код:
geoip_country /usr/local/etc/nginx/conf/geo/GeoIP.dat; # подключаем GeIP базу
map $geoip_country_code $bad_country { # модуль map создает переменные, значения которых зависят от других переменных, очень полезная штука
default 1; # значение по умолчанию
include geo/good_countries; # инклудим файл, к нему вернемся чуть позже
}
Теперь настройки хоста. Я предпочитаю держать хосты в отдельной папке, например hosts, каждый в своем файле.
Код:
server {
listen IP:80;
server_name testhost.com;
if ($bad_country){ # если данная переменная установлена, то есть если страна не перечислена в файле good_countries
return 444; # выдаем клиенту пустой ответ ( незачем отдавать 403 ошибку или еще какую-либо )
}
}
Код:
TM 0;
UA 0;
UZ 0;
RU 0;
Код:
/etc/init.d/nginx reload
В основу материала взята статья: http://gnu.su/news.php?extend.1453
Последнее редактирование модератором: