Статистика трафика и атак
Содержание |
Обзор
Модуль ngx_http_statistics в SEnginx собирает статистику трафика и атак.
Вся статистика хранится в оперативной памяти, поэтому при остановке или перезапуске SEnginx статистика обнуляеся. При перезагрузке конфигурации SEnginx статистика не сбрасывается.
Статистика подерживает следующие счетчики:
Статистика трафика
- Количество запросов в обработке ("cur_rec")
- Количество запросов, обработанных с момента запуска сервера ("rec")
- Количество ответов, отправленных сервером с разными кодами ответа ("res_Nxx")
- Количество байтов, отправленных сервером ("sent")
- Количество байтов, полученных сервером ("recvd")
Статистика трафика доступна только на стороне сервера, upstream не поддерживается.
Статистика атак
- SQL Injection ("sql") обработанных Naxsi
- Cross Site Scripting ("xss") обработанных Naxsi
- Remote File Inclusion ("rfi") обработанных Naxsi
- Dir Traversal ("dt") обработанных Naxsi
- Evading Tricks ("evade") обработанных Naxsi
- File Uploads Threat ("fu") обработанных Naxsi
- Libinjection XSS ("libinjection_xss") обработанных Naxsi (с SEnginx 1.8.1)
- Libinjection SQL ("libinjection_sql") обработанных Naxsi (с SEnginx 1.8.1)
- Cookie Poisoning ("cp")
- Web Defacement ("wd")
- Проверки Robot Mitigation ("rm")
Эта функция доступна с SEnginx 1.5.14
Доступность в статистике перечисленных типов атак зависит от того, включена ли соответствующая функция в конфигурации. В настоящее время атаки, о которых сообщает ModSecurity, в статистике не учитываются.
Директивы
statistics_zone
Синтаксис | statistics_zone size; |
По умолчанию | |
Контекст | http |
Создать в разделяемой памяти зону статистики размером size.
Пример:
statistics_zone 10m;
Для серверов, по которым должна собираться статистика, должна быть указана директива "virtual_server_name" с уникальным именем, которое обычно совпадает с server_name. Если "virtual_server_name" не задано, статистика по серверу не будет собираться.
Пример:
statistics_zone 10m; server { listen 80; server_name www.abc.com; virtual_server_name www.abc.com; ... }
statistics
Синтаксис | statistics; |
По умолчанию | |
Контекст | location |
Указывает location, в котором отображается статистика.
Пример:
location /stats { statistics; }
Формат данных
Статистика формируется в формате JSON:
{ "timestamp":123455678, "servers":[ { "name":"server1", "traffic":{"cur_req":10,"req":100,"res_2xx":50,"res_3xx":20,"res_4xx":15, "res_5xx":15,"sent":1453,"recvd":3541}, "attack":{"sql":10,"xss":10,"rfi":5,"dt":2,"evade":1,"fu":1,"libinjection_xss":0,"libinjection_sql":0,"cp":1,"wd":3, "rm":50,"other":0} }, { "name":"server2", "traffic":{"cur_req":10,"req":100,"res_2xx":50,"res_3xx":20,"res_4xx":15, "res_5xx":15,"sent":1453,"recvd":3541}, "attack":{"sql":10,"xss":10,"rfi":5,"dt":2,"evade":1,"fu":1,"libinjection_xss":0,"libinjection_sql":0,"cp":1,"wd":3, "rm":50,"other":0} }, ...] }
Демо
Смотрите в файле /html/demo.html.