Пасивна і активна перевірка сайту: у чому різниця
Пасивна перевірка читає те, що сайт і так показує кожному відвідувачу. Активне сканування надсилає додатковий трафік, щоб дізнатися більше. Розповідаємо, де в ZNIMOK проходить ця межа, чому саме там і як ви контролюєте перевірки свого сайту.
Два види перевірок
Терміни прийшли з тестування безпеки. У NIST SP 800-115, відомому посібнику з тестування безпеки, пасивне виявлення - це спостереження за трафіком без жодного пакета-запиту, а активне - надсилання пакетів, щоб системи відповіли. Активні методи знаходять більше і швидше, але створюють додаткове навантаження на мережу, можуть спрацювати як тривога в системах виявлення вторгнень і показують, звідки йдуть.
Перевірка вебсайту не може бути пасивною в такому суворому сенсі: їй потрібно запитати ваші сторінки. Тому ми описуємо свою перевірку через те, що вона робить. Публічна перевірка ZNIMOK надсилає ті самі запити, що й браузер чи пошуковий робот (GET і за потреби HEAD), робить це повільно і читає відкриті дані про домен. Усе, що виходить за ці межі, чекає, поки власник підтвердить, що керує сайтом.
Що бачить пасивна перевірка
- Записи DNS: SPF, DMARC, DKIM на поширених селекторах, MX, CAA, DNSSEC і CNAME, що вказують на сервіси, яких уже немає.
- Сертифікат TLS і налаштування HTTPS: дійсність, строк дії, перенаправлення з HTTP, HSTS.
- Заголовки відповіді головної сторінки: заголовки безпеки, прапорці файлів cookie, номери версій у
ServerчиX-Powered-By. - Технології та версії, які показує сайт, у порівнянні з даними про завершення підтримки й відкритими базами вразливостей.
- Чи відповідають на звичайний запит відомі файли й шляхи, як-от
security.txt,xmlrpc.phpабо забутийdebug.log. - Відкриті дані про домен: реєстраційні дані, імена хостів у журналах Certificate Transparency і відкриті порти, які вже є в публічних даних інтернет-сканувань, наприклад Shodan InternetDB. До самих портів ми при цьому не підключаємося.
Чого пасивна перевірка не бачить
- Усього, що за сторінкою входу: налаштувань адмінки, облікових записів, конфігурації плагінів.
- Чи можна реально скористатися вразливістю. Версія, що збігається з відомою CVE, означає «може бути вразливою, потрібно перевірити», а не «вразлива».
- Помилок у вашому власному коді, як-от SQL-інʼєкцій чи XSS: для них потрібне активне тестування форм і параметрів.
- Портів і сервісів, яких немає у відкритих даних, а також версій, які сервер приховує.
- Шкідливого коду і присутності в чорних списках: ZNIMOK цього не перевіряє.
Чистий пасивний звіт означає «у тому, що видно ззовні, нічого не знайшли», а не «сайт безпечний».
Що додають активні перевірки
Активні перевірки надсилають трафік, якого сайт не отримав би від звичайного відвідувача. Основні у ZNIMOK:
- Сканування портів: спроби зʼєднання з відібраним переліком портів ваших хостів, щоб побачити, які сервіси відповідають напряму з інтернету.
- Поглиблений аудит, який може надсилати POST-запити до API і форм самого власника.
- Менші проби, як-от тести open redirect, заголовка Host і WebSocket.
Вони корисні власнику, який хоче повнішу картину, і небажані, коли їх спрямовують на чужий сайт. Тому вони потребують підтвердження права власності.
Чому активним перевіркам потрібне підтвердження
У публічну форму кожен може вписати будь-яку адресу. Якби ця форма запускала сканування портів і POST-запити для будь-якого сайту, сторонні люди могли б тестувати сайти, на які не мають права, а навантаження й тривоги діставалися б власникам цих сайтів.
Тому активні перевірки запускаються лише для сайту зі збереженим підтвердженням права власності. На такому сайті вони можуть бути частиною будь-якої перевірки, зокрема запущеної кимось іншим, а їхні результати бачить лише підтверджений власник. Для сайту без підтвердженого права власності перевірка лише читає і спирається на відкриті дані.
Як підтвердити право власності
У кабінеті ZNIMOK (потрібен акаунт) кожен сайт отримує власний код підтвердження. Додайте код одним із трьох способів і натисніть «Підтвердити право власності»:
| Спосіб | Що додати | Коли зручно |
|---|---|---|
| TXT-запис DNS | Запис znimok-site-verification=<код> на основному домені |
Щоб підтвердити керування всім доменом |
| Файл | Файл /.well-known/znimok-ownership.txt, у якому є код |
Коли можна завантажувати файли, але не редагувати DNS |
| Meta-тег | <meta name="znimok-site-verification" content="<код>"> у head головної сторінки |
Конструктори сайтів, де можна редагувати head сторінки |
TXT-запис ми шукаємо на зареєстрованому домені. Файл і meta-тег завантажуємо через HTTPS з хоста сайту, основного домену та його www-версії. Код лише доводить, що ви керуєте сайтом: він не дає ZNIMOK ні логіна, ні доступу до сервера.
Якщо бачите наші запити і хочете їх зупинити
На сторінці про сканер описано, що саме запитує перевірка і як вона поводиться: мало паралельних запитів, паузи між ними і ще повільніший темп, коли сайт відповідає HTTP 429 або перевіркою фаєрвола. Якщо ваш сайт сповільнює чи блокує перевірку, звіт позначає покриття як часткове, а не видає чистий результат.
Якщо ви не хочете, щоб ZNIMOK узагалі перевіряв ваш сайт, напишіть на security@znimok.com з адреси на цьому домені, вкажіть адресу сайту і, якщо знаєте, IP-адресу з ваших логів. Кожне звернення ми опрацьовуємо вручну і відповідаємо. Ця сама адреса вказана в нашому файлі /.well-known/security.txt - форматі контактів для повідомлень про вразливості за RFC 9116.
Запитання
Чи може хтось запустити публічну перевірку мого сайту без мого дозволу?
Так, так само як будь-хто може відкрити ваш сайт у браузері. Якщо право власності на сайт не підтверджене, перевірка читає лише те, що вже відкрито. Якщо підтверджене, активні перевірки можуть запускатися й тоді, коли ваш сайт перевіряє хтось інший, але їхні результати бачите лише ви як підтверджений власник.
Чому безкоштовний звіт не показує портів зі сканування?
Для сайту без підтвердженого права власності перевірка порти не сканує: вона може показати порти, які вже є у відкритих даних інтернет-сканувань. На сайті з підтвердженим правом власності сканування портів запускається, а його результати бачить лише підтверджений власник.
Чи отримує ZNIMOK доступ до мого сайту після підтвердження?
Ні. Код лише доводить, що ви керуєте доменом чи сайтом. Це не пароль, і він не дає доступу ні до сервера, ні до акаунта хостингу, ні до CMS.
Джерела
- NIST SP 800-115: Technical Guide to Information Security Testing and Assessment (англійською) nvlpubs.nist.gov
- RFC 6962: Certificate Transparency (англійською) rfc-editor.org
- Shodan InternetDB API (англійською) internetdb.shodan.io
- RFC 9116: security.txt (англійською) rfc-editor.org