Меры безопасности на Виртуальном сервере
Описание основных правил по безопасности которых следует придерживаться для защиты ваших проектов
Иногда при попытке зайти на сайт вы можете получить предупреждение от браузера или антивирусной программы о том, что сайт потенциально опасен для вашего компьютера. Такое сообщение появляется, если сайт был заражён вредоносным кодом.
Вирусы, попадая на страницы сайта, стремятся к дальнейшему распространению. Чаще всего они просто добавляют в конец индексных файлов тег
<iframe>
однако в некоторых случаях вредоносный код шифруется с помощью JavaScript и может быть внедрён в различные участки страницы.
Иногда злоумышленники изменяют содержимое конфигурационного файла .htaccess, из-за чего при переходе на ваш сайт происходит перенаправление на вредоносные или нежелательные ресурсы. Признаком такого заражения может быть изменённая дата последнего редактирования файла.
Как происходит заражение
Каким образом сайт может быть взломан и заражён?
Чаще всего взлом происходит автоматически, с использованием специальных программ. Для этого составляется большая база сайтов, отобранных из поисковиков по определённым признакам — например, сайты на популярных CMS (Joomla, WordPress и др.) с уязвимыми версиями систем и плагинов. Затем эти сайты массово заражаются вредоносным кодом. Поэтому крайне важно своевременно обновлять используемую CMS и все её компоненты.
Ещё один путь заражения — через вирус на вашем компьютере. Такой вирус может перехватывать FTP-логины и пароли, а затем передавать их злоумышленникам. Получив доступ к сайту, они внедряют вредоносный код напрямую в его скрипты.
Таким образом, основные причины заражения сайтов — это вирусы на компьютере, с которого происходит работа с сайтом, а также устаревшие версии CMS и плагинов. Со стороны хостинга обеспечивается максимальная защита, и даже если на сервере заражён другой сайт, вредоносный код не сможет попасть на ваш.
Меры безопасности
Чтобы защитить ваш сайт от взлома, достаточно следовать нескольким простым рекомендациям:
- Никогда не храните данные для доступа (логины и пароли) в открытом виде.
- Устанавливайте правильные права доступа на файлы и папки: для файлов — 644, для каталогов — 755.
- Используйте актуальные версии CMS и всех установленных плагинов. Лучше всего подписаться на рассылку или RSS, чтобы не пропускать важные обновления безопасности.
- Придумывайте сложные, длинные пароли и нестандартные логины. Регулярно меняйте их.
- Обязательно используйте антивирус и своевременно обновляйте его базы.
- Устанавливайте обновления операционной системы сразу после выхода.
- Не используйте устаревшие браузеры, особенно Internet Explorer ниже версии 7.
- Не загружайте неизвестные или сомнительные скрипты на хостинг. Часто во взломанных (nulled) версиях платных скриптов содержится вредоносный код.
- Не переходите по подозрительным ссылкам из писем, соцсетей или мессенджеров.
- Не сохраняйте FTP-пароли в клиентах — вирусы часто крадут эту информацию.
- Обязательно создавайте локальные резервные копии сайта.
Если сайт уже заражён
Если вы обнаружили, что сайт был заражён, первым делом проверьте его антивирусом с актуальными базами. Подойдут, например: Lynis, Chkrootkit.
Вы также можете запросить восстановление сайта из резервной копии. После восстановления:
Смените пароли доступа к FTP и базам данных.
Обновите CMS и все установленные модули/плагины до последних версий.
Поиск вирусов вручную
Поверхностный осмотр.
find /var/www/user/data/www/domain.com/ -type f -mtime -10
данная команда поможет отыскать файлы сайта domain.com, которые были изменены меньше, чем 10 дней назад. Чтобы быстро отыскать нужные файлы, можно изменять параметр ключа mtime на приблизительную дату заражения.
Просмотрим лог-файла ftp /var/log/xferlog например также поможет в поиске вирусов, если заражение было осуществлено по ftp.
Tue Aug 28 09:32:22 2017 0 <IP> 17151 /var/www/user/data/www/domain.com/include/virus.php a _ i r user ftp 0 * c
такая запись говорит о том, что в папку include 28 августа по ftp был загружен файл virus.php размером 17кб, пользователем user с ip адресом
Также, можно просмотреть директории, доступные кругу пользователей. Это такие директории, как uploads, image и д.р. Те, в которые могут писать пользователи сайта.
file /var/www/user/data/www/domain.com/uploads/* | grep -i php
покажет php файлы в папке uploads, независимо от их расширения. Вряд ли вы позволяете своим посетителям загружать php файлы на сервер. А уж если это php файл, притворяющийся картинкой... Например
file in.jpg
in.jpg: PHP script text
Детальный осмотр.
Если ничего небыло найдено при поверхностном осмотре. Переходим к детальному изучению .htaccess
Бывает так, что редиректы прописываются в файлы .htaccess.
find /var/www/user/data/www/domain.com/ -type f -iname '*htaccess'
команда поможет найти все файлы .htaccess для сайта domain.com. Внимательно изучите эти файлы на предмет посторонних перенаправлений.
Php/js код
Вручную вредоносный код можно искать по паттернам. Чаще всего, это либо закодированный в base_64 код, либо обфусцированный по определенному алгоритмому. Имеет смысл искать следующие, наиболее распространенные, паттерны:
FilesMan, try{document.body, String["fromCharCode"], auth_pass, fromCharCode, shell_exec, passthru, system, base64_decode, chmod, passwd, mkdir, eval(str_replace, eval(gzinflate, ="";function, "ev"+"al",md5=,ss+st.fromCharCode, e2aa4e
Поиск вредоносного кода можно осуществлять с помощью команды grep, например
grep -ril base64_decode /var/www/user/domain.com
покажет все файлы в папке domain.com, в которых встречается base64_decode. Прежде, чем удалять или чистить файл, убедитесь, что это именно вредоносный код.
Если вы нашли вредоносный код на сайте, не спешите править файл. Вначале посмотрите на него с помощью команды stat
stat infected.js
с ее помощью можно увидеть дату последнего доступа, модификации и изменения атрибутов файла. Это может помочь установить время и дату взлома. По этим датам можно поискать файлы и события в логах, как это показано вначале статьи.
Для того, чтобы удалить вредоносный код из файла, можно воспользоваться данным примером
sed -i "" 's/начало_паттерна.*конец_паттерна//g' infected.js
например, код @preg_replace («\x40\50\x2e\53\x29\100\x69\145»,"\x65\166\x61\154\x28\142\x61\163\x65\66\x34 удалится с помощью команды
sed -i "" 's/@preg.*34//g' infected.js
Помощь
Если у Вас возникли трудности или появились дополнительные вопросы, вы всегда можете обращаться в нашу службу поддержки через систему тикетов.