Проблема
Я пытаюсь настроить 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.