Як працюють HTTP requests
На сторінці Analytics ви бачите реальні requests, зібрані з Nginx logs. Тут ви дізнаєтесь, що означає кожне поле та як відрізняти нормальний traffic від bot-ів, scanner-ів і suspicious activity.
Один request очима Nginx
Типовий access log line містить request time, client IP, HTTP method, path, status code, referrer та User-Agent. Ось розбір кожного поля:
Приклад (synthetic):
2025-12-23T18:21:10Z 203.0.113.10 "GET /wp-login.php HTTP/1.1" 404 153 "-" "python-requests/2.31"
В Analytics ви можете фільтрувати та інспектити схожі requests. Поля “path”, “status” та “User-Agent” часто показують, чи це normal visitor, чи automated scanning.
Показати приклади 404 в AnalyticsHTTP method
Method показує, що клієнт хоче зробити. Більшість нормального browsing використовує GET. POST використовується для submit data (forms або API payload).
Поширені methods
- GET — отримати page або resource
- POST — submit data (forms, APIs)
- HEAD — лише headers (часто використовують bots)
- OPTIONS — capabilities / preflight requests
Що може бути suspicious
- Багато POST requests до випадкових path (probing login panels)
- OPTIONS до багатьох endpoints (mass scanning)
Path (URL)
Path часто є найсильнішим сигналом. Automated scanners пробують well-known files та endpoints, шукаючи misconfiguration, secrets або vulnerable software.
/,/analytics/,/robots.txt,/favicon.ico
Scanners часто probe-ять WordPress та типові admin panels, навіть якщо ваш site їх не використовує.
/wp-login.php,/xmlrpc.php,/wp-admin//phpmyadmin/,/admin/
Attackers часто намагаються отримати доступ до environment files та configuration artifacts. Якщо їх випадково віддати, це може розкрити credentials та API keys.
.env,sendgrid.env,twilio.env,.config.yaml/admin/.env,/api/.env
phpinfo,/shell?,/app_dev.php
Protocol
Protocol versions на кшталт HTTP/1.1 або HTTP/2 зазвичай менше впливають на classification, але можуть бути корисні для debugging client поведінки.
Status code
Status codes — це короткі «відповіді» сервера на кожен HTTP-запит: все добре, ресурс не знайдено, доступ заборонено або всередині щось вибухнуло. Рівномірна суміш 200/301/304 зазвичай означає спокійне життя сайту. Раптові сплески 404 часто говорять, що хтось активно сканує ваші URL-и, а хвиля 401/403 натякає на спроби зайти туди, куди не запрошували. 500-ті коди — це вже дзвіночок для розробника, а 000 з no_http_request нагадують, що інтернет повний дивних клієнтів і «мовчазних» підключень.
| Код | Значення | Типова інтерпретація |
|---|---|---|
200 |
OK | Нормальний контент доставлено; якщо більшість відповідей 200 — з сайтом загалом усе добре. |
301/302 |
Redirect | Нормальні перенаправлення (HTTPS-примус, canonical URLs тощо); багато таких кодів — ок, поки не виникають redirect-петлі. |
304 |
Not Modified | Клієнт використовує кеш, сервер підтверджує, що контент не змінився; це економить трафік і прискорює відповіді. |
400 |
Bad Request | Сервер не зрозумів запит; часто це зламані або ручні запити від ботів/сканерів, але інколи й наслідок багу у фронтенді. |
401/403 |
Unauthorized / Forbidden | Користувачу відмовлено в доступі — потрібна авторизація або додаткові права; масові 401/403 з однієї IP можуть вказувати на брутфорс чи сканування закритих розділів. |
404 |
Not Found | Ресурс не знайдено; поодинокі 404 — норма, а от масові 404 по різних шляхах за короткий час зазвичай означають автоматичне сканування. |
500 |
Server Error | Помилка на стороні сервера — проблема в коді або середовищі, а не в користувачі; регулярні 500-ті — сигнал терміново дивитися логи застосунку. |
000 |
no_http_request | З’єднання встановлено, але повноцінний HTTP-запит не надійшов; часто це сканування портів, мережевий шум або «агресивні» боти, що нащупують сервіс. |
Bytes sent
Bytes sent — це розмір response. Малі responses разом із великою кількістю 404 часто йдуть від scanning. Великі responses зі status 200 можуть означати реальне споживання контенту.
Request time
Request time показує, скільки часу server витратив на відповідь. Slow requests можуть вказувати на перевантажені endpoints, проблеми з продуктивністю або attack patterns, що завдають шкоди дорогим операціям.
User-Agent
User-Agent ідентифікує client software. Browsers виглядають інакше, ніж scanners та scripts. Деякі bots явно себе декларують; інші використовують generic HTTP libraries.
Типові категорії
- Реальні browsers (Chrome/Firefox/Safari)
- Search engine bots (Googlebot, Bingbot)
- SEO crawlers (Ahrefs, Semrush)
- CLI/tools (curl, wget)
- HTTP libraries (python-requests, go-http-client, Java)
- Security scanners (masscan, censys, netcraft)
Red flags
- Порожній або відсутній User-Agent
- Відомі exploit signatures (наприклад, Shellshock patterns)
- Нетипові automated clients, що швидко б’ють багато path
Приклад: Shellshock signature
Pattern () { :; }; часто асоціюється з Shellshock exploit attempts.
Referrer
Referrer показує, звідки прийшов visitor. Search engines та внутрішня навігація можуть його встановлювати. Багато automated scans не мають referrer, але сама відсутність ще не є доказом malicious intent.
IP & Geo
IP адреса
IP address ідентифікує network endpoint, а не людину. Багато користувачів можуть ділити один IP (NAT), і той самий користувач може часто змінювати IP (mobile networks).
GeoIP
GeoIP — це estimation на основі IP ranges. Воно допомагає бачити тенденції (countries/cities), але не завжди є точним.
Нижче — невеликий словник типів підозрілих запитів, які виявляє Pushforce.dev на основі логів Nginx. Він допомагає зрозуміти, що означають мітки в аналітиці: де просто мережевий шум, а де вже спроби сканування, витоку конфігів чи запуску команд на сервері. Це не офіційний підручник з кібербезпеки, але чесний зріз того, що регулярно прилітає на будь-який публічний сервер.
Attack type glossary
— (не класифіковано)
Це запити, для яких ще не вистачає даних або правил, щоб назвати їх «нормальними» чи «поганими». attack_type тут або порожній/NULL, або ми свідомо не навішуємо ярлик. Корисна категорія, щоб спостерігати за новими патернами й не втратити потенційно цікаві аномалії.
crypto_mining
Спроби перетворити ваш сервер на безкоштовний майнінговий пул. У запитах з’являються Stratum-подібні payload-и, згадки про mining.subscribe, xmrig та інші «крипто-ключові слова». Якщо такі запити проходять, зловмисник може спробувати завантажити та запустити майнер уже на вашій інфраструктурі.
router_vpn_scan
Сканування типових endpoint-ів для роутерів, VPN-пристроїв та панелей адміністрування. У логах часто видно шляхи на кшталт /cgi-bin/luci, специфічні URL-и для Cisco/ MikroTik/ OpenWrt та інші device-патерни. Мета атакуючого — знайти відкритий інтерфейс керування або відому вразливість, щоб отримати контроль над пристроєм.
config_leak_scan
Пошук витоку конфігів і секретів: .env, /.git, phpinfo, різні debug- та backup-файли. Такі запити перевіряють, чи не залишив хтось випадково відкритим доступ до налаштувань, токенів або вихідного коду. Один вдалий збіг може дати зловмиснику повний доступ до бази даних, API-ключів чи внутрішніх сервісів.
bot_scanner
Узагальнені сканери й боти, які швидко перебирають велику кількість URL-ів у пошуках чогось цікавого. Видають себе характерним User-Agent або дуже щільною послідовністю запитів до різних шляхів. Це можуть бути як «доброчесні» сканери, так і підготовчий етап перед більш таргетованою атакою.
binary_garbage
Бінарний «сміттєвий» payload у тілі або навіть у першому рядку запиту — щось, що зовсім не схоже на HTTP. Таке часто лишають після себе грубі сканери, помилково налаштовані клієнти або експерименти з нестандартними протоколами. Гарний індикатор того, що хтось використовує ваш порт не зовсім так, як це задумано веб-сервером.
remote_shell_attempt
Класика: спроби виконати shell-команди через URL або параметри запиту. У рядках запиту з’являються wget, curl, sh, ланцюжки з && / ; та інші ознаки RCE-подібних атак. Мета — змусити сервер завантажити й запустити сторонній скрипт або бінарник без вашого відома.
pattern_scan
Збіг із набором заздалегідь відомих suspicious-патернів (SUSPICIOUS_PATTERNS): .env, twilio.env, sendgrid.env, .config.yaml тощо. По суті це «шаблонний» пошук вразливих або чутливих файлів, які часто випадково опиняються у публічному доступі. Добре показує, які саме секрети або конфіги найбільше цікавлять автоматизовані скрипти в інтернеті.
other_suspicious
Запити, які виглядають підозріло за сукупністю ознак, але не вписуються чітко в жодну з категорій вище. Тут працюють евристики: дивні шляхи, нетипові параметри, підозрілий ритм звернень тощо. Це зручний «буфер» для ручного аналізу й місце, де часто народжуються нові окремі типи атак.
Практичні сценарії
Scanning / enumeration
- Багато різних path за короткий час
- Переважно status 404
- User-Agent схожий на script/library
Secrets hunting (.env)
- Path містить .env або назви config файлів
- Часто без referrer
- Повторювані attempts по багатьох hosts
Normal visitor
- Browser User-Agent
- 200/304/301 трапляються найчастіше
- Path відповідає структурі вашого site
Blocked / restricted access
- Багато 401/403 codes
- Requests до admin або приватних URL-ів
Хочете подивитись реальні приклади?
Відкрийте Analytics і натискайте help-links біля полів — вони повернуть вас сюди, прямо до потрібного пояснення.