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

Коротко
- Быстрая онлайн-проверка сайта на безопасность занимает 15 минут, полная ручная проверка с сервером — 1–2 часа.
- Сайт должен открываться по HTTPS (порт 443) с действующим сертификатом и протоколами TLS 1.2 или 1.3.
- Из сервера наружу должны быть открыты обычно только порты 80, 443 и 22 (SSH); базу данных на порту 3306 закрывают от интернета.
- Права на файлы сайта обычно 644, на каталоги — 755; изменённые за последние 7 дней файлы проверяют командой find.
- Сертификат Let's Encrypt действует 90 дней, поэтому нужно автопродление.
- Плановую проверку делают раз в месяц и после каждого обновления CMS или плагинов; копии хранят по правилу 3-2-1.
Что входит в проверку сайта на безопасность
Проверка сайта на безопасность — это набор простых тестов: вы смотрите, как сайт защищает посетителей, файлы и данные. Сквозной пример этой статьи — интернет-магазин example.ru на WordPress, который работает на VPS (виртуальном сервере) под Linux. Если путаетесь в терминах, разберитесь, чем домен отличается от хостинга.
Проверка охватывает всё, через что магазин могут взломать или подменить на нём контент. Вот что входит в проверку:
- сертификат и HTTPS (защищённое соединение, порт
443) — узнайте, зачем сайту сертификат безопасности; - заголовки безопасности, например
Strict-Transport-Security; - вирусы и подмена контента на страницах;
- версии CMS (системы управления сайтом) и плагинов;
- права на файлы: обычно
644на файлы и755на каталоги; - открытые порты сервера и свежие резервные копии.
Быстрая онлайн-проверка занимает около 15 минут и показывает внешние проблемы: сертификат, заголовки, известные вирусы. Полная проверка с доступом к серверу занимает 1–2 часа. Для ориентира используйте OWASP Top 10 (Open Web Application Security Project) — список из 10 категорий самых частых уязвимостей веб-приложений. Проверять можно только свои ресурсы: сканирование чужих сайтов и серверов без разрешения запрещено.
Как понять, что сайт взломан: признаки
Первые признаки видны без команд. Браузер показывает красное предупреждение об опасном сайте, а посетители жалуются, что example.ru перебрасывает их на чужие страницы. В поисковой выдаче появляются неизвестные страницы с рекламой лекарств или азартных сервисов. Google Search Console и Яндекс Вебмастер в таких случаях отмечают сайт как небезопасный и присылают уведомление.
Косвенные признаки: нагрузка на процессор и исходящий трафик выросли в несколько раз, а посещаемость осталась прежней. Письма с адресов домена попадают в спам, потому что сервер мог начать рассылку без вашего ведома. Если нагрузку создаёт поток запросов, а не взлом, сверьтесь с описанием распределённой атаки (DDoS). Следить за скачками удобно через систему мониторинга Zabbix, а причину проблем с почтой проверьте в настройках SPF-записи.
Затем откройте логи веб-сервера: обычно они лежат в /var/log/nginx/ или /var/log/apache2/, точный путь зависит от настройки. Найти файлы, изменённые за последние 7 дней, поможет команда find /var/www -type f -mtime -7. Вот что подозрительно в её результате:
- файлы
.phpв каталогеwp-content/uploads; - файлы со случайными именами вроде
x1a9.php; - изменённые
index.phpи.htaccess; - любые файлы, которые вы не загружали сами.
Чем проверить сайт на безопасность онлайн
Онлайн-сервисы смотрят на сайт снаружи, как посетитель или поисковый робот. Каждая проверка занимает 1–5 минут, регистрация обычно не нужна. Сканируйте только свои домены, например example.ru: чужие сайты без разрешения проверять нельзя. Если не уверены, чей это адрес, сначала проверьте домен на занятость.
Внешний сканер видит только внешнюю часть: сертификат, заголовки ответа и код страниц. Права на файлы, открытые порты и устаревшие плагины на сервере он не покажет, их проверяют отдельно. Если сайт работает через Cloudflare, сканер оценивает защитный сервис, а не ваш сервер; как устроен Cloudflare, разобрано в отдельной статье.
Сервисы дополняют друг друга, поэтому пройдите их по очереди. Начните с сертификата и работы HTTPS на порту 443 (подробнее о порте HTTPS), затем проверьте заголовки и вирусы. В таблице — что даёт каждый сервис:
| Сервис | Что проверяет | Время | Что делать с результатом |
|---|---|---|---|
| SSL Labs | Сертификат и версии TLS (Transport Layer Security) | 3–5 минут | Оставьте TLS 1.2 и 1.3, отключите 1.0 и 1.1 |
| securityheaders.com | Strict-Transport-Security (HSTS), Content-Security-Policy, X-Content-Type-Options |
1 минута | Добавьте недостающие заголовки в настройки веб-сервера |
| Mozilla Observatory | Заголовки, cookie, редиректы | 1–2 минуты | Исправьте пункты с низкой оценкой |
| VirusTotal | Адрес сайта в базах антивирусных движков | 1–2 минуты | При срабатывании ищите вредоносный код в файлах |
| Sucuri SiteCheck | Вредоносный код, спам, чёрные списки | 2–3 минуты | При находках сверьте файлы с чистой копией |
| Search Console и Яндекс Вебмастер | Уведомления о взломе и нарушениях | 3–5 минут | Устраните проблему и запросите перепроверку |

Как провести проверку сайта на безопасность по шагам
Идите от внешнего к внутреннему: сначала то, что видит посетитель, затем заголовки и сканеры, в конце сервер. Шаги 1–6 занимают около 15 минут, а вместе с серверной частью проверка укладывается в 1–2 часа. В примерах ниже используется интернет-магазин на WordPress с доменом example.ru на VPS под Linux.
Проверяйте только свои сайты и серверы: сканировать чужие ресурсы без разрешения нельзя. У каждого шага есть ожидаемый результат. Если он не совпал, запишите отклонение и разберите его после проверки.
Пройдите по шагам по порядку:
- Сертификат. Откройте
https://example.ruи нажмите на значок замка. Ожидаемый результат: сертификат действителен, срок не истёк. Сертификат Let’s Encrypt живёт 90 дней, поэтому настройте автопродление Let’s Encrypt. Если замка нет, установите сертификат на сайт. - Заголовки. Выполните
curl -I https://example.ru. Ожидаемый результат: код ответа 200 или 301 и заголовкиStrict-Transport-Security(HSTS, принудительный HTTPS) иX-Content-Type-Options. - Протоколы. Прогоните домен через SSL Labs. Ожидаемый результат: включены TLS (Transport Layer Security) 1.2 и 1.3, версии 1.0 и 1.1 отключены.
- Вирусы и чёрные списки. Проверьте адрес в Sucuri SiteCheck и VirusTotal. Ожидаемый результат: вредоносный код не найден, домен не числится в списках угроз.
- Поисковые системы. Откройте разделы безопасности в Search Console и Яндекс Вебмастере. Ожидаемый результат: нет уведомлений о взломе и заражении.
- Версии и права. Сверьте версии CMS (Content Management System, системы управления сайтом) и плагинов с последними. Права на файлы обычно 644, на каталоги 755, на
wp-config.php600 или 640. Ожидаемый результат: обновлений в очереди нет, лишних прав нет. - Порты и логи. Подключитесь к серверу по SSH (откройте PuTTY и войдите на сервер) и проверьте открытые порты. Ожидаемый результат: снаружи доступны обычно только 80, 443 и 22, порт 3306 базы данных закрыт, в логах веб-сервера нет всплесков запросов и подозрительных адресов. Если свой сервер вызывает вопросы, изучите ответы о VPS.

Как проверить сервер и хостинг: порты, доступы, обновления
Сначала выясните, кто отвечает за защиту. На VPS (виртуальном выделенном сервере) вы владелец системы: порты, обновления и антивирус настраиваете сами. На виртуальном хостинге часть работы берёт провайдер: он обновляет систему и закрывает лишние службы. Вам остаются пароли, права на файлы и сам сайт. Если выбираете между вариантами, посмотрите ответы на частые вопросы о VPS.
Начните с открытых портов. Нужны только 80 (HTTP), 443 (HTTPS) и 22 (SSH, Secure Shell, удалённый вход). FTP (File Transfer Protocol) на порту 21 передаёт пароли без шифрования, а база MySQL на порту 3306 снаружи должна быть закрыта.
Проверьте это со своего компьютера командой nmap -sV ваш_IP. Запускайте её только для собственного сервера: сканировать чужие адреса нельзя. Свой адрес подскажет материал про внешний IP-адрес, а лишние порты закроет инструкция про проброс и закрытие портов.
Затем проверьте доступы, обновления и вирусы:
- Вход по SSH-ключам вместо пароля: в
/etc/ssh/sshd_configзадайтеPasswordAuthentication no. - Пароль администратора от 12 символов и двухфакторная защита (2FA) везде, где она есть.
- Вместо FTP используйте SFTP: как подключиться по FTP и SFTP через FileZilla.
- Обновления ОС (операционной системы) ставьте раз в месяц, например
sudo apt update && sudo apt upgradeв Debian и Ubuntu. Основы работы с системой собраны в статье про Linux для сервера. - Антивирус ClamAV: команда
clamscan -r -i /var/wwwпроверит каталог сайта и покажет только заражённые файлы.

Частые ошибки при проверке сайта на безопасность
Большинство взломов происходит не из-за хитрых атак, а из-за простых упущений. Чаще всего встречаются семь ошибок: разовая проверка, старые плагины, FTP вместо SFTP, открытый порт 3306, слабые бэкапы, просроченный сертификат и повторяющиеся пароли.
Ниже у каждой ошибки есть причина и решение. Проверяйте только свои ресурсы, например example.ru на VPS.
Проверка один раз и забытый сайт
Сайт меняется, и новые уязвимости появляются постоянно. Проверяйте его раз в месяц и после каждого обновления CMS (системы управления сайтом), а забытые поддомены удаляйте.
Не обновлены плагины
Устаревший плагин WordPress остаётся частой точкой входа. Включите автообновления и удалите плагины, которыми не пользуетесь.
FTP без шифрования на порту 21
FTP (File Transfer Protocol) передаёт логин и пароль открытым текстом. Перейдите на SFTP (SSH File Transfer Protocol) через порт 22 и закройте порт 21.
Открытый порт 3306
Порт MySQL, доступный из интернета, боты перебирают паролями. Закройте его в файрволе или оставьте базе адрес 127.0.0.1.
Нет бэкапов или они лежат на том же сервере
Копия рядом с сайтом пропадёт вместе с ним. Следуйте правилу 3-2-1: 3 копии, 2 типа носителей, 1 копия вне сервера, хранение от 7 до 30 дней. Начните с инструкции, как настроить резервное копирование, и подберите программу для бэкапов.
Сертификат просрочен без автопродления
Сертификат Let’s Encrypt действует 90 дней, и без автопродления браузер покажет предупреждение. Настройте автоматическое продление и проверьте срок командой openssl s_client -connect example.ru:443 -servername example.ru. Заодно проверьте DNS-записи домена: они должны вести на ваш сервер.
Одинаковые пароли
Утечка из одного сервиса открывает доступ ко всем остальным. Задайте администратору уникальный пароль от 12 символов и включите 2FA (двухфакторную аутентификацию).
Почти каждую из этих ошибок исправляют за 5–10 минут. Закрепите это в календаре, и ежемесячная проверка не будет откладываться.
Что делать, если проверка нашла вирус или взлом
Не удаляйте подозрительные файлы сразу: сначала закройте доступ злоумышленнику. В первый час смените пароли хостинга, CMS (системы управления сайтом), SSH (Secure Shell) и базы данных. Каждый пароль должен быть от 12 символов, а для администратора включите 2FA (двухфакторную защиту). Включите режим обслуживания и отключите незнакомые SSH-ключи.
Перед очисткой сделайте снимок для разбора: заархивируйте каталог сайта, выгрузите дамп базы и сохраните логи сервера. По ним вы найдёте дыру, через которую зашли. Полное восстановление обычно занимает 1–3 дня.
Как дополнительный фильтр трафика подключите Cloudflare: настройте Cloudflare по инструкции. Если с вашего домена уходил спам, проверьте настройки доменной почты. Если после очистки трафик скачет, узнайте, как распознать DDoS-атаку.
После снимка действуйте в таком порядке:
- восстановите сайт из чистой копии, сделанной до взлома;
- найдите свежие файлы командой
find /var/www -type f -mtime -7и проверьте каталог черезclamscan -r -i /var/www; - удалите лишние файлы и незнакомых пользователей в CMS и на сервере;
- обновите CMS и плагины, неиспользуемые удалите;
- запросите повторную проверку в Search Console и Яндекс Вебмастере.
Когда хватает онлайн-проверки, а когда нужен аудит
Для блога или лендинга без регистрации и оплаты хватает бесплатных онлайн-сервисов: быстрая проверка занимает около 15 минут. Вы смотрите сертификат, заголовки и признаки вирусов, а затем повторяете проверку раз в месяц и после каждого обновления CMS (системы управления сайтом).
Магазину example.ru на VPS (виртуальном сервере) одних сервисов мало: нужна ручная проверка на 1–2 часа. Вы сверяете открытые порты и права на файлы (644 и 755), запускаете clamscan -r -i /var/www. Если на сайте принимают платежи или хранят персональные данные, добавьте платный аудит: специалист проверит код и настройки глубже, чем автоматический сканер.
Уровень проверки определяют четыре критерия:
- данные клиентов: имена, телефоны, адреса требуют аудита;
- оплата на сайте: платёжную форму проверяют вручную или у специалиста;
- число администраторов: при двух и более нужны разграничение прав и 2FA (двухфакторная защита);
- своя инфраструктура: собственный сервер означает ответственность за SSH (удалённый доступ), порты и обновления.
Самостоятельная проверка не подходит, если нет времени на обновления или вы не готовы работать с командной строкой: тогда передайте задачу специалисту. Если нужен контроль настроек, переходите на VPS: узнайте, как выбрать VPS под ваш проект, прочитайте про аренду виртуального сервера и сравните предложения в рейтинге VPS-хостингов. Чем VDS отличается от обычного хостинга, объясняет материал про VDS-хостинг.
Частые вопросы
Как проверить сайт на безопасность бесплатно?
Как узнать, что мой сайт взломали?
Как часто нужно проверять сайт на безопасность?
Можно ли проверить чужой сайт на уязвимости?
Как проверить сайт на вирусы онлайн?
Какой порт должен быть открыт для безопасного сайта?
Что значит «сайт не защищён» в браузере?
Достаточно ли SSL-сертификата для безопасности сайта?
Как часто делать резервные копии сайта?
Что делать, если нашли вирус на сайте?
Проверьте себя
- Сайт открывается по HTTPS, сертификат действителен и продлевается автоматически.
- На сервере включены только TLS 1.2 и 1.3, в ответе есть HSTS и X-Content-Type-Options.
- Открыты только нужные порты (80, 443, 22), порты 21 и 3306 закрыты снаружи.
- CMS, темы и плагины обновлены, лишние удалены.
- Права на файлы 644, на каталоги 755, пароль администратора — от 12 символов, включена 2FA.
- Свежая резервная копия лежит вне сервера, восстановление из неё проверено.
На сайте есть партнёрские ссылки: если вы оформите заказ по ним, мы получим вознаграждение от провайдера. Это не влияет на цену для вас и на место в рейтинге.