Назад | Перейти на главную страницу

Все журналы доступа nginx из 127.0.0.1 (поэтому нельзя использовать fail2ban)

Проблема

Я пытаюсь настроить fail2ban для блокирования атак ddos ​​с помощью показанного фрагмента Вот.

В основном он просматривает все запросы, и если какой-либо один IP-адрес делает более 240 запросов в течение 60 секунд, он блокирует их на два дня.

Однако все журналы в моем доступе к nginx относятся к 127.0.0.1, что делает все это бессмысленным.

Что могло заставить nginx регистрировать весь трафик как исходящий с сервера?

(Я запускаю Drupal в стеке LEMP с Конфигурация nginx от Perusio.)

Поскольку у вас есть varnish перед nginx, он думает, что все запросы исходят от 127.0.0.1, поскольку технически это так.

Чтобы решить эту проблему, используйте модуль реального ip nginx выбрать IP-адрес клиента из X-Forwarded-For заголовок, который Varnish автоматически добавляет к запросам (если вы не сказали этого не делать).

Пример конфигурации nginx:

set_real_ip_from 127.0.0.1;
real_ip_header X-Forwarded-For;

Пример конфигурации, о которой говорит Майкл, находится в конфигурации nginx верхнего уровня в /etc/nginx/nginx.conf, если вы используете конфигурацию Perusio.

http {
    ## MIME types.
    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    ## FastCGI.
    include /etc/nginx/fastcgi.conf;

    ## Default log and error files.
    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    ## Use sendfile() syscall to speed up I/O operations and speed up
    ## static file serving.
    sendfile on;
    ## Handling of IPs in proxied and load balancing situations.
    set_real_ip_from 0.0.0.0/32; # all addresses get a real IP.
    real_ip_header X-Forwarded-For; # the ip is forwarded from the load balancer/proxy

Вам нужно изменить 0.0.0.0/32 на 127.0.0.1.