Как отобразить реальный IP-адрес клиента в логах Apache 2.4, работающем за прокси в Nginx.

В продакшене используется связка Nginx + Apache, где Nginx выступает в роли прокси-сервера для Apache. Рассмотрим как передавать реальный IP-адрес клиента в Apache с прокси Nginx, для отображения правильной информации в логах Apache, в противном случае в логах Apache будет по каждому запросу будет значится адрес прокси-сервера Nginx.

 

Nginx

В файле конфигурации вирутального хоста в секцию location необходимо добавить следующие параметры:

location / {
     ...
     proxy_set_header Host            $host;
     proxy_set_header X-Real-IP       $remote_addr;
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
     ...
}

 

Apache

В Apache 2.4 входит модуль mod_remoteip, который может перезаписывать удаленный IP-адрес. Настроим его чтобы он принимал проброс IP-адреса клиента с прокси-сервера Nginx.

 

Создаем конфигурацию для модуля mod_remoteip. Выполняем команду:

cat << EOF > /etc/apache2/conf-available/remoteip.conf
<IfModule remoteip_module>
        RemoteIPHeader X-Forwarded-For
        RemoteIPTrustedProxy 127.0.0.1
        RemoteIPInternalProxy 127.0.0.1
</IfModule>
EOF
ИНФОРМАЦИЯ. В случае если у вас проси-серве Nginx и Apache разнесены по разным серверам, то в параметре RemoteIPInternalProxy необходимо указать IP-адрес прокси-сервера.

Читать далее

Защита Nginx от атак HTTP 404 | 429 с помощью Fail2Ban на Debian.

Рассмотрим как обрабатывать HTTP 404 в логах веб-сервера Nginx и блокировать злоумышленников которые пытаются найти уязвимости на опубликованных сайтах с помощью Fail2Ban.

Пример подобной атаки злоумышленников на веб-сайт размещенный на Nginx:

130.255.15.40 - - [08/Aug/2023:17:27:53 +0300] "GET /aslogo.jpeg HTTP/1.1" 404 41318 "-" "gobuster/3.1.0"
130.255.15.40 - - [08/Aug/2023:17:27:53 +0300] "GET /dexter.txt HTTP/1.1" 404 41318 "-" "gobuster/3.1.0"
130.255.15.40 - - [08/Aug/2023:17:27:53 +0300] "GET /dexter.html HTTP/1.1" 404 235 "-" "gobuster/3.1.0"
130.255.15.40 - - [08/Aug/2023:17:27:53 +0300] "GET /5553.md HTTP/1.1" 404 41318 "-" "gobuster/3.1.0"
130.255.15.40 - - [30/Aug/2023:17:00:13 +0300] "GET /admin HTTP/1.1" 429 162 "-" "Mozilla/5.0 (pc-x86_64-linux-gnu) Siege/4.0.7"
130.255.15.40 - - [30/Aug/2023:17:00:13 +0300] "GET /admins HTTP/1.1" 429 162 "-" "Mozilla/5.0 (pc-x86_64-linux-gnu) Siege/4.0.7"

 

# Устанавливаем пакет fail2ban, если он не установлен:

apt-get install fail2ban

# Создаем фильтр Fail2Ban для поиска запросов 404:

cat << EOF > /etc/fail2ban/filter.d/nginx-4xx.conf
[Definition]
failregex = ^<HOST> - - \[.*\] "(GET|POST).*HTTP.* (404|429)
ignoreregex =
EOF

# Настраиваем Fail2ban для блокировки 404 запросов. В конфигурационный файл -/etc/fail2ban/jail.local добавляем:

[nginx-4xx]
enabled  = true
port     = http,https
logpath  = /var/log/nginx/*access.log
maxretry = 20
findtime = 10
bantime  = 10m
ignoreip =

Читать далее