Re: Работа с ип адресом
Maxim Dounin
mdounin на mdounin.ru
Вт Ноя 1 17:28:21 UTC 2011
Hello!
On Tue, Nov 01, 2011 at 12:55:44PM -0400, xoper wrote:
> Доброго времени суток.
> Столкнулся с такой проблемой, сервер
> находится под ДДОС атакой уже
> несколько суток, вроде эту проблему
> победили на уровне nginx'a следующим
> образом:
> раз в 15 минут парсится access.log и
> выбираются плохие адреса с занесением
> в файл в виде
> ип_адрес 1;
> в конфиге нгинкса прописано так:
> http
> {
> ..........
> geo $remote_addr $ip_blocklist_out {
> default 0;
> include /home/test/ddos_ip;
> }
> server{
> ................
> if ($ip_blocklist_out = 1){
> rewrite ^/(.*) /index_ddos.htm last;
> return 403;
Just a side note: до "return" тут дело не дойдёт.
> }
>
> ..............
> }
> }
> Все работает LA с 66 упал до привычных 0.5
> но попались юзеры, у которых оказался
> хитрый провайдер:
> вместо $remote_addr подставляется "общий ип",
> а ип адрес пользователя прописывается
> в $http_x_forwarded_for, следовательно
> конструкция банит всю подсеть
> провайдера по $remote_addr.
> Так вот вопрос в следующем, как при
> наличии ип адреса в $http_x_forwarded_for
> учитывать его в geo фильтре а при
> отсутствии использовать $remote_addr.
> Спасибо.
Для этого в модуле geo есть директива proxy. Подробнее тут:
http://nginx.org/ru/docs/http/ngx_http_geo_module.html
Желательно туда не заносить всех подряд, а только реально
существующих провайдеров, которые делают так. В противном случае
такая блокировка будет легко и непринуждённо обходиться
дописыванием в запрос заголовка "X-Forwarded-For: <случайный ip>".
Maxim Dounin
Подробная информация о списке рассылки nginx-ru