Профилактические меры можно выполнять как при заражении сайта — для предотвращения повторных случаев, так и просто на регулярной основе — для повышения общего уровня безопасности сайта.
Профилактические меры можно условно разделить на пять направлений.
Базовая профилактика
Сюда стоит отнести такие общеизвестные меры, как:
- Смена паролей. От админки сайта, FTP, баз данных, паролей администратора и служебных пользователей сервера, панелей управления сервером, вашей личной почты. Пароль от Личного кабинета хостинга необходимо менять каждые 90 дней, иначе система закроет вам доступ до смены пароля.О правильном подходе к генерации и проверке надёжности паролей можно прочитать в статье «Аудит паролей на сервере». Сюда же имеет смысл отнести проверку сторонних пользователей и SSH-ключей на сервере. Просто на всякий случай.
- Настройка резервного копирования. Если вы столкнулись с заражением, а бэкапа под рукой не оказалось — теперь вы знаете, почему это важно. Чтобы автоматизировать настройку и мониторинг создания резервных копий, подключите автоматическое «Резервное копирование».
- Настройка регулярного сканирования сайтов на вирусы. Это позволит решать проблемы заражения быстрее, чем они нанесут ущерб вам или вашим клиентам. Например, ImunifyAV (в платной версии), ClamAV и Linux Malware Detect умеют отправлять отчёты на почту.
- Настройка антивируса на вашем рабочем месте. Здорово, когда в вопросах безопасности сайта и сервера комар носа не подточит. Но перехватить пароли с вашего рабочего ПК всё ещё возможно.
Прочитать дополнительные рекомендации можно в нашей отдельной инструкции «Как бороться с уязвимостями».
Повышение безопасности сайта
Сюда стоит отнести более сложные операции по защите сайта.
В первую очередь нужно на постоянной основе отслеживать все обновления вашей CMS. Обычно уведомления о них отображаются прямо в админке: заметили — не откладывайте на потом. Также на официальных сайтах практически любой CMS есть специальный раздел, где перечислены последние обновления и их состав:
- Wordpress: список релизов
- Drupal: список релизов и обновлений безопасности
- Joomla: список обновлений
- Bitrix: история версий
- OpenCart: новости об обновлениях на форуме
- MODX: список релизов и changelog
Своевременные обновления CMS не только снизят риск заражения, но и могут улучшить быстродействие вашего сайта и дать новые возможности для оптимизации.
Отдельно стоит защитить пользователей сайта (включая администратора). Каждая система управления контентом имеет свои рекомендации по повышению уровня безопасности:
- Wordpress: статья об усилении защиты
- Drupal: политика команды безопасности Drupal и полезные ресурсы
- Joomla: подробности о реагировании на уязвимости
- Bitrix: курс по безопасности
- OpenCart: обсуждение вопросов безопасности на форуме
- MODX: рекомендации и документация по безопасности
Чтобы точно быть во всеоружии, следите за новостями из сферы информационной безопасности. Вот несколько полезных ресурсов:
- opennet.ru — обычно на этом ресурсе новости об обновлениях и крупных уязвимостях появляются оперативнее всего. Есть Telegram-канал.
- xakep.ru (канал в Telegram) и securitylab.ru (канал в Telegram) — цифровые издания новостей в сфере IT. Тоже достаточно оперативно и подробно освещают обновления и недавно анонсированные уязвимости.
- Telegram-канал «Утечки информации» — регулярно публикует новости об утечках данных. Никому не пожелаем попасть в их ленту, но поучиться на чужих ошибках очень полезно.
Дополнительно изучите плагины для вашей CMS. Вопрос безопасности стоит очень давно — и есть много решений, которые позволят повысить защиту сайта изнутри.
- Плагины для безопасности WordPress
- Модули безопасности Drupal
- Расширения безопасности Joomla
- Решения для безопасности Bitrix
- Расширения безопасности OpenCart
- Расширения безопасности MODX
Из продвинутых мер:
Размещайте отдельные сайты под отдельными пользователями на сервере. В таком случае при заражении одного сайта (либо сайтов одного пользователя) сайты остальных пользователей не пострадают. Очень удобно такой механизм реализован в ispmanager.
Будьте внимательны при настройке прав доступа к файлам и папкам сайта. Особую опасность представляют папки с правами 777, в которые при определённых условиях можно залить и запустить вредоносный файл. Тем не менее, иногда приходится их использовать — например, если вам нужно расшарить файлы или изображения для пользователей сайта. Чтобы защитить такие директории, отключите в них обработку или ограничьте доступ к исполняемым файлам: в Apache это можно сделать с помощью директив RemoveHandler или SetHandler через .htaccess
или конфигурационный файл, в nginx — через конфигурационный файл ограничить доступ к файлам в зависимости от их расширения.
Отключите неиспользуемые функции PHP в конфигурационном файле php.ini
.
Будьте осторожны при настройке — важно точно знать, какие функции на сайте не задействованы. Отключение используемой функции приведёт к сбою работы сайта, который будет достаточно сложно обнаружить.
Для отключения добавьте их в опцию disable_functions
, например:
disable_functions = exec, passthru, shell_exec, system, proc_open, popen, curl_exec, curl_multi_exec, parse_ini_file, show_source
Избегайте использования функции PHP mail()
. Она часто используется для отправки спама с сайтов после заражения, что быстро приводит к блокировке почтового трафика. В качестве альтернативы используйте отправку почты через SMTP. Либо, если вы не отправляете с сайта письма, отключите её вообще, добавив в список выше.
Используйте капчу для форм обратной связи на сайтах. Это защитит вас от лишнего спама.
Повышение безопасности веб-сервера
В зависимости от того, какой веб-сервер вы используете, список рекомендаций будет отличаться. Собрали несколько инструкций для самых распространённых случаев:
Повышение безопасности сервера баз данных
Ситуация с базами данных аналогична случаю с веб-серверами. Проверьте, все ли меры безопасности из приведённых статей соблюдены на вашем сервере:
Помимо этого, важно обезопасить и инструменты, которые вы используете для управления БД, например, phpMyAdmin. К нему также нужно ограничить доступ через фаервол, изменить адрес входа или вовсе не использовать на боевом сервере.
Повышение безопасности сервера
Список мер содержит, но не ограничивается следующими действиями:
- Защита SSH (смена порта, настройка доступа по ключу, отключение root-пользователя, отключение доступа к shell для служебных пользователей и др.).
- Настройка фаервола (закрытие неиспользуемых портов, ограничение доступа к серверу и его отдельным службам по IP-адресу)
- Защита от брутфорса (блокировка подозрительных запросов авторизации на сервер)
- Настройка мониторинга (отслеживание ресурсов сервера, изменения файлов, мониторинг пользователей и др.)
Подробнее в инструкциях: