Как проверить безопасность своего сайта: чек-лист и бесплатные инструменты

Опубликовано: Обновлено: web9 мин чтения
Как проверить безопасность своего сайта: чек-лист и бесплатные инструменты

Проверить безопасность своего сайта можно за час и бесплатно. Нужно убедиться, что поисковики не пометили сайт как опасный, HTTPS и заголовки безопасности настроены, CMS и плагины обновлены, наружу не торчат служебные файлы и лишние порты, а в коде нет посторонних вставок. Ниже — чек-лист из восьми шагов с командами и инструментами, которые подходят для WordPress, Drupal, Joomla и самописных сайтов.

Главное

  • Первым делом проверьте репутацию сайта: Google Safe Browsing и раздел «Проблемы безопасности» в Search Console покажут, видят ли посетители красное предупреждение.
  • HTTPS проверяется в SSL Labs, заголовки безопасности — в MDN HTTP Observatory. Цель — оценка A и выше.
  • Главный источник взломов — устаревшие плагины: в 2025 году на них пришлось 91% новых уязвимостей экосистемы WordPress.
  • Пассивный скан OWASP ZAP (zap-baseline.py) находит типовые ошибки настройки за несколько минут и не атакует сайт.
  • Сканируйте только свой сайт или сайт, владелец которого письменно разрешил проверку.

Что понадобится

  • Права владельца: доступ к админке сайта, к хостингу или серверу (SSH) и к Google Search Console или Яндекс.Вебмастеру.
  • Компьютер с curl; для шагов 5 и 8 — Docker и nmap (есть для Linux, macOS и Windows).
  • Свежая резервная копия сайта — на случай, если найдёте заражение и придётся чистить файлы.

В примерах ниже вместо example.com и 203.0.113.10 подставьте свой домен и IP-адрес своего сервера.

Шаг 1. Проверьте репутацию сайта

Если сайт попал в чёрный список, браузер покажет посетителям полноэкранное предупреждение, а поисковик понизит или уберёт его из выдачи.

Предупреждение браузера: сайт помечен как атакующий и заблокирован
Так выглядит предупреждение браузера, если сайт попал в список опасных.
  • Google Safe Browsing — статус сайта: введите домен; должно быть «Опасный контент не обнаружен».
  • Google Search Console → «Безопасность и меры, принятые вручную» → «Проблемы безопасности». Аналог в Яндекс.Вебмастере — «Диагностика → Безопасность и нарушения».
  • VirusTotal: проверка URL сразу по десяткам антивирусных баз и чёрных списков.

Шаг 2. Проверьте HTTPS

Откройте Qualys SSL Labs и запустите тест домена. Что должно быть:

  • оценка A или A+;
  • включены только TLS 1.2 и TLS 1.3, старые SSL 3.0, TLS 1.0 и 1.1 выключены;
  • сертификат выдан на все имена (example.com и www.example.com) и продлевается автоматически;
  • HTTP перенаправляется на HTTPS кодом 301.

Если сайт не открыт в интернет (тестовый стенд), используйте консольный testssl.sh:

git clone --depth 1 https://github.com/testssl/testssl.sh.git
./testssl.sh/testssl.sh example.com

Шаг 3. Проверьте заголовки безопасности

Заголовки HTTP говорят браузеру, как защищать посетителя: запрещают встраивать сайт в чужие фреймы, ограничивают источники скриптов, требуют HTTPS. Быстрая проверка из терминала:

curl -sI https://example.com | grep -iE 'strict-transport|content-security|x-content-type|x-frame|referrer-policy|permissions-policy'

Подробный разбор с оценкой даст MDN HTTP Observatory.

Минимальный набор заголовков безопасности
Заголовок Что делает Пример значения
Strict-Transport-Security Браузер открывает сайт только по HTTPS max-age=31536000; includeSubDomains
Content-Security-Policy Ограничивает, откуда загружаются скрипты и стили; главная защита от XSS default-src 'self'; frame-ancestors 'self'
X-Content-Type-Options Запрещает браузеру «угадывать» тип файла nosniff
X-Frame-Options Защищает от встраивания сайта в чужой фрейм (кликджекинг) SAMEORIGIN
Referrer-Policy Ограничивает, какой адрес страницы уходит на другие сайты strict-origin-when-cross-origin
Permissions-Policy Отключает ненужные API: камеру, микрофон, геолокацию camera=(), microphone=(), geolocation=()

Источники: MDN Web Docs, OWASP HTTP Headers Cheat Sheet.

Content-Security-Policy включайте осторожно: строгая политика может сломать счётчики, рекламу и встроенные виджеты. Начните с заголовка Content-Security-Policy-Report-Only и посмотрите, что он заблокировал бы.

Шаг 4. Проверьте версии CMS, плагинов и тем

Устаревший плагин — самая частая причина взлома сайтов на CMS. Проверьте обновления и целостность файлов.

WordPress — через WP-CLI на сервере:

wp core check-update                 # есть ли новая версия ядра
wp plugin list --update=available    # плагины с доступными обновлениями
wp theme list --update=available
wp core verify-checksums             # файлы ядра совпадают с эталоном wordpress.org
wp plugin verify-checksums --all     # то же для плагинов из каталога wordpress.org

Снаружи уязвимые плагины и темы покажет WPScan. Для сведений об уязвимостях нужен бесплатный API-токен с wpscan.com (у бесплатного тарифа есть суточный лимит запросов):

docker run -it --rm wpscanteam/wpscan --url https://example.com --enumerate vp,vt --api-token ВАШ_ТОКЕН

Drupal и SilverStripe — Droopescan определяет версию CMS, установленные модули и темы:

pip install droopescan
droopescan scan drupal -u https://example.com
Справка droopescan в терминале: команды scan и stats, примеры сканирования Drupal и SilverStripe
Droopescan: проверка сайтов на Drupal и SilverStripe.

Найденные версии сверьте с бюллетенями безопасности своей CMS и с базой NVD. Всё, что можно обновить, обновите. Плагины, которые давно не обновлялись или которыми вы не пользуетесь, удалите.

Шаг 5. Запустите пассивный скан OWASP ZAP

ZAP — бесплатный сканер веб-приложений. Режим baseline за минуту обходит сайт и анализирует ответы: отсутствующие заголовки, cookie без флагов Secure и HttpOnly, утечки версий ПО, смешанный контент. Атак в этом режиме нет, поэтому его безопасно запускать на рабочем сайте:

docker run -v "$(pwd)":/zap/wrk/:rw -t ghcr.io/zaproxy/zaproxy:stable \
  zap-baseline.py -t https://example.com -r zap-report.html

Отчёт zap-report.html появится в текущей папке. Начните с предупреждений уровня High и Medium.

Активные сканеры (полный скан ZAP, Nikto, WPScan с перебором) отправляют на сайт тысячи запросов, могут нагрузить его и сработать на защиту хостинга. Запускайте их только на своём сайте, лучше на тестовой копии, и предупредите хостинг-провайдера.

Шаг 6. Найдите открытые служебные файлы

Частая находка при проверке — забытая копия базы, файл .env с паролями или открытый каталог .git, из которого можно скачать весь исходный код сайта. Проверьте типовые пути на своём сайте:

for p in .git/HEAD .env .htpasswd wp-config.php.bak backup.zip backup.sql phpinfo.php .DS_Store; do
  printf '%-20s %s\n' "$p" "$(curl -s -o /dev/null -w '%{http_code}' "https://example.com/$p")"
done

Для каждого пути ожидается 403 или 404. Ответ 200 — повод немедленно удалить файл или закрыть путь в настройках веб-сервера. Заодно убедитесь, что открытие каталога без index-файла не показывает список файлов (autoindex off в nginx, Options -Indexes в Apache).

Шаг 7. Поищите вредоносный код на сервере

Взломанный сайт может выглядеть нормально: вредоносный код показывает спам или перенаправления только поисковикам или посетителям с мобильных. Проверьте файлы на сервере:

# PHP-файлы, изменённые за последние 7 дней
find /var/www/example.com -name '*.php' -mtime -7 -ls

# PHP-файлов в каталоге загрузок быть не должно
find /var/www/example.com/wp-content/uploads -name '*.php'

# типичные приёмы обфускации
grep -rlE 'eval\s*\(\s*(base64_decode|gzinflate|str_rot13)' /var/www/example.com --include='*.php'

Совпадение — ещё не доказательство взлома: некоторые легальные плагины тоже используют base64_decode. Сравните подозрительный файл с оригиналом из дистрибутива. Дополнительно прогоните каталог сайта антивирусом ClamAV (clamscan -ri /var/www/example.com) и посмотрите, нет ли в админке незнакомых пользователей с правами администратора.

Шаг 8. Проверьте открытые порты сервера

Если сайт на своём VPS, посмотрите, какие службы доступны из интернета:

nmap -sV -Pn --top-ports 1000 203.0.113.10

Для обычного веб-сервера снаружи должны быть открыты 80 и 443, плюс SSH (лучше с входом только по ключу). Открытые MySQL (3306), Redis (6379), панели управления и FTP закройте файрволом или ограничьте доступ своими IP-адресами.

Проверка результата

После исправлений повторите проверки и сохраните результаты — это ваша точка отсчёта:

  • Safe Browsing и Search Console — без предупреждений;
  • SSL Labs — A или A+, Observatory — не ниже B;
  • wp plugin list --update=available (или аналог для вашей CMS) — пустой список;
  • в отчёте ZAP нет предупреждений High и Medium;
  • служебные пути отвечают 403 или 404, лишних портов нет.

Как защитить сайт дальше

  • Автообновления ядра и плагинов или хотя бы еженедельная проверка: массовые атаки на свежие уязвимости начинаются через часы после публикации.
  • Двухфакторная аутентификация для всех администраторов, отдельные учётные записи вместо общей.
  • Резервные копии по правилу 3-2-1: три копии, на двух типах носителей, одна — вне сервера. Проверяйте, что копия восстанавливается.
  • WAF перед сайтом (например, бесплатный тариф Cloudflare) отсекает часть автоматических атак, но не заменяет обновления.
  • Минимум лишнего: удалите неиспользуемые плагины, темы, тестовые копии и старые дампы базы.
  • Повторяйте проверку раз в месяц и после каждого крупного обновления. Шаги 2, 3 и 5 легко автоматизировать по расписанию.

Ключевые цифры

11 334новых уязвимостей нашли в экосистеме WordPress в 2025 году — на 42% больше, чем в 2024-м
91%из них — в плагинах, 9% — в темах; в ядре WordPress всего 6
5 часовмедианное время от раскрытия до массовой эксплуатации для самых атакуемых уязвимостей

Источник: Patchstack, State of WordPress Security in 2026.

Чек-лист: что проверять и чем
Что проверяем Инструмент Где запускать Как часто
Репутация, чёрные списки Google Safe Browsing, Search Console, VirusTotal Браузер Раз в неделю, лучше с уведомлениями
HTTPS и TLS SSL Labs, testssl.sh Браузер / терминал Раз в месяц и после смены сертификата
Заголовки безопасности MDN HTTP Observatory, curl Браузер / терминал После изменений настроек сервера
Обновления CMS и плагинов WP-CLI, WPScan, Droopescan Сервер / Docker Раз в неделю
Типовые ошибки настройки OWASP ZAP baseline Docker Раз в месяц
Служебные файлы curl по списку путей Терминал После каждого деплоя
Вредоносный код find, grep, ClamAV, verify-checksums Сервер Раз в неделю или при подозрениях
Открытые порты nmap Терминал После изменений на сервере

Источники: документация инструментов, OWASP Top 10:2025.

Что это значит: наши выводы

  • 1 хорошая новость
  • 1 риск
  • 1 за чем следить
  • 1 что сделать
  • Хорошая новостьБазовая проверка бесплатна

    Все инструменты из чек-листа бесплатны, а первый проход занимает около часа даже без опыта в безопасности.

  • РискПлагины устаревают быстрее, чем кажется

    Почти половина уязвимостей WordPress в 2025 году на момент раскрытия ещё не имела исправления. Неиспользуемый плагин — лишняя дверь.

  • За чем следитьТихие признаки взлома

    Новые администраторы, незнакомые PHP-файлы в загрузках, спам в выдаче по вашему домену — повод для внеплановой проверки.

  • Что сделатьРегулярность вместо разовой проверки

    Включите уведомления Search Console, автообновления и ежемесячный прогон ZAP — и сохраняйте отчёты для сравнения.

Частые вопросы

Как часто проверять безопасность сайта?

Обновления и репутацию — раз в неделю, полный чек-лист — раз в месяц и после крупных изменений: смены хостинга, темы, установки новых плагинов.

Достаточно ли онлайн-сканера?

Нет. Онлайн-сервисы видят сайт только снаружи: заголовки, сертификат, известные чёрные списки. Изменённые файлы на сервере, лишних администраторов и устаревшие плагины без доступа к серверу и админке надёжно не найти.

Можно ли так проверить чужой сайт?

Пассивные проверки репутации и сертификата — да, это публичная информация. Сканирование уязвимостей, перебор путей и портов чужого сайта без письменного разрешения владельца незаконно. Все шаги этой статьи рассчитаны на ваш собственный сайт.

Что делать, если сайт помечен как опасный?

Найдите и удалите вредоносный код (шаг 7), смените все пароли и ключи, обновите CMS и плагины, затем запросите повторную проверку в Search Console и Яндекс.Вебмастере. Если не уверены, что нашли всё, восстановите сайт из чистой резервной копии.

Нужен ли WAF, если сайт за Cloudflare?

Cloudflare и другие WAF отсекают часть массовых атак и ботов, но не исправляют уязвимый плагин и не закрывают прямой доступ к серверу в обход прокси. Обновления и проверки из чек-листа нужны в любом случае.

Материал подготовлен на основе документации OWASP, ZAP, MDN и отчёта Patchstack и актуален на дату обновления. Применяйте инструкции только к своим сайтам и серверам или с письменного разрешения их владельца.

Источник: OWASP, документация инструментов

Была ли статья полезной?
Оценок: 4, средняя: 2.8

1 comments On Как проверить безопасность своего сайта: чек-лист и бесплатные инструменты

Оставьте комментарий:

Email не публикуется. Комментарии проходят модерацию.