В настоящий момент подсистема accesslog находится в режиме бета-тестирования.
Подсистема является дополнительно лицензируемым модулем.
В MITIGATOR добавлена подсистема accesslog, которая, анализируя логи защищаемого Web-сервера (HTTP, HTTPS), выявляет аномалии и атакующие адреса.
Защищаемые сервера отправляют свои логи на Анализатор, используя syslog RFC 3164 (UDP, TCP, TLS).
Анализатор может быть установлен на одном из экземпляров MITIGATOR, как одна из его подсистем, или располагаться отдельно на внешнем сервере.
Дальнейшие шаги предполагают, что экземпляр MITIGATOR уже установлен. В противном случае предварительно выполните установку одним из способов.
Чтобы включить accesslog на постоянной основе, необходимо в docker-compose.yml
изменить значение параметра scale
c 0 на 1.
services:
...
accesslog:
...
scale: 1
...
После настройки необходимо перезапустить MITIGATOR:
docker-compose down && docker-compose up -d
Предполагается, что на внешний сервер уже установлены Docker, docker-compose и wireguard-dkms.
На сервере создайте docker-compose.yml
для подсистемы accesslog:
mkdir -p /opt/mitigator-accesslog
Скачайте docker-compose.yml
:
wget https://docs.mitigator.ru/v22.12/dist/accesslog/docker-compose.yml \
-O /opt/mitigator-accesslog/docker-compose.yml
Создайте службу для запуска подсистемы на внешнем сервере:
Скачайте файл сервиса:
wget https://docs.mitigator.ru/v22.12/dist/docker-compose@.service \
-O /etc/systemd/system/docker-compose@.service
Активируйте службу:
systemctl enable docker-compose@mitigator-accesslog
На внешнем сервере запустите сервисы:
Войдите на docker.mitigator.ru
docker login docker.mitigator.ru
Перейдите в рабочую директорию
cd /opt/mitigator-accesslog
Загрузите образы
docker-compose pull
Запустите сервис
systemctl start docker-compose@mitigator-accesslog
Проверьте связность между сервером анализатора и экземплярами MITIGATOR:
Выполните команду
docker-compose exec gateway wg
Убедитесь в наличии handshake между всеми участниками VPN-сети.
Экземпляры MITIGATOR взаимодействуют через Wireguard, между ними создается виртуальная сеть (VPN). Для того чтобы accesslog мог взаимодействовать с системой MITIGATOR, необходимо настроить для него VPN также как для всех экземпляров внутри кластера.
По желанию пользователя имена переменных MITIGATOR_VPN_ADDRESS
и
MITIGATOR_VPN_PREFIX
для accesslog могут быть изменены на более подходящие.
Рекомендуется выбирать для accesslog адрес внутри VPN, отстоящий от адресов
экземпляров, например 10.8.3.254
. При этом все адреса должны быть внутри
одной сети /24.
Для работы анализатора логов как на экземпляре MITIGATOR, так и на внешнем
сервере, необходимо задать адрес и порт внутри VPN, по которым доступен
анализатор логов. Адрес и порт задаются в виде 10.8.3.254:7200
на странице
«Настройка системы» в карточке «Общие параметры защиты».
Анализатор получает логи на портах:
NGINX позволяет сразу отправлять свои логи по syslog без использования сторонних приложений (syslog-ng, rsyslog).
По умолчанию nginx использует формат логов «combined», который не содержит
информацию о времени обработки запроса $request_time
. Свой формат логов
можно определить в файле /etc/nginx/nginx.conf
.
log_format myformat '$remote_addr - $remote_user [$time_local] "$request" $request_time $status $body_bytes_sent "$http_referer" "$http_user_agent"';
Здесь myformat
– имя формата лога.
В файле настроек сайта, например, /etc/nginx/sites-enabled/default
, задайте:
access_log syslog:server=192.0.2.1:7201,tag=123456789abcdefg myformat;
Здесь server=192.0.2.1:7201
– IP-адрес и порт анализатора логов.
Через tag=
задается секретный идентификатор (токен), позволяющий определить,
к какому сервису относится запись в логе, его знают только администраторы
защищаемого сервиса и политики защиты. Токен должен содержать 16 символов.
Если tag=
задан пустым, то в качестве токена в MITIGATOR используется
IP-адрес, с которого отправляется access_log.
access_log syslog:server=10.10.10.4:7201,tag= myformat;
Перезапустите NGINX.
systemctl restart nginx
Если nginx защищаемого сервера находится за прокси или балансировщиком трафика,
то должна быть настроена подстановка реальных IP-адресов отправителей из заголовка
X-Forwarded-For
. Для этого требуется наличие в nginx модуля http_realip_module
.
Проверить, что модуль http_realip_module
установлен можно с помощью команды:
2>&1 nginx -V | tr -- - '\n' | grep http_realip_module
Если модуль не установлен, следует
пересобрать nginx
с параметром --with-http_realip_module
.
В файле /etc/nginx/nginx.conf
на защищаемом сервере в секции http
:
set_real_ip_from 192.168.0.1/32;
Здесь 192.168.0.1/32 – IP-адрес Proxy-сервера.
real_ip_header X-Forwarded-For;
В файле /etc/nginx/nginx.conf
на Proxy-сервере в секции server
:
X-Real-IP header
proxy_set_header X-Real-IP $remote_addr;
Приблизительная конфигурация файла /etc/syslog-ng/conf.d/mitigator_log.conf
приведена ниже:
source s_source {
file("/var/log/nginx/access.log" flags(no-parse));
};
destination d_MITIGATOR {
syslog("10.10.10.4" transport("udp") port(7201));
};
log {
source(s_source);
destination(d_MITIGATOR);
};