Причины взломов сайтов и устранение последствий

Материал из Friendhosting
Перейти к навигации Перейти к поиску

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

Почему сайты взламывают?

Как правило, взломать ваш сайт становится возможным по причине:
1) уязвимостей в cms, плагинах и модулях, которые вы используете;
2) кражи паролей. Если вы сохраняете пароли в ftp менеджере (например filezilla, total commander и другие), а так же браузерах, то вы в зоне риска. Также не следует забывать о так называемых "кейлоггерах", которые могут украсть ваши пароли, даже если вы каждый раз их набираете при подключении по ftp;
3) подбора пароля. В случае, если ваш пароль был простым (например "vasya", "qwerty" и так далее), то его подбор - дело времени.

Что делать для того, что бы мой сайт не взломали?

1) Регулярно обновляйте cms, плагины и прочие дополнения. Важно понимать, что в новых версиях практически всегда устраняют уязвимости, которые были найдены с момента выпуска предыдущего обновления;
2) Соблюдать элементарные правила безопасности (например не используйте простые пароли и не храните их в ftp/ssh клиентах);
3) Не используйте cms/плагины/дополнения/шаблоны скачанные с непроверенных/подозрительных сайтов.

Что делать, если сайт уже был взломан?

Действия, которые необходимо предпринять, если ваш сайт взломали:
1. Проверьте ваш компьютер на наличие вирусов. Если такие есть, то обязательно удалите.
2. Смените пароль на вход в аккаунт биллинга и аккаунта в панель управления хостинга.
3. Произведите поиск вредоносного ПО с помощью серверного антивируса, доступного из файл-менеджера панели управления хостингом ISPmanager и его удаление (если у вас установлена панель управления VESTA или не установлен серверный антивирус, то обратитесь в техническую поддержку для установки антивируса и проверки им сайтов). Для этого необходимо:
- перейти в файл-менеджер панели управления;
- выделить каталог www и нажать на кнопку "Антивирус", которая находится вверху;
- необходимо дождаться отчёта антивируса (он появится всё там же в файл-менеджере, время его появления зависит от объёма проверяемых данных);
4. Произведите сканирование каждого сайта с помощью скрипта http://www.revisium.com/ai/ и удалите найденное вредоносное ПО. Рекомендации по использованию данного скрипта вы можете найти на сайте разработчика. Если вам необходима помощь с проверкой сайтов данным скриптом, пожалуйста, обратитесь к службе технической поддержке через тикеты.
5. Произведите обновление всех cms, модулей и плагинов на вашем аккаунте до последней версии.

Важно понимать:
- даже если взломали один сайт, то под угрозой все сайты на данном аккаунте. Поэтому действия, описанные в данной заметке, необходимо выполнять для всех сайтов;
- ответственность за безопасность ваших сайтов, а также своевременное устранение уязвимости ваших скриптов (cms и прочее), несёте исключительно вы;
- сотрудники службы тех. поддержки хостинг-провайдера не занимаются устранением последствий взлома и не обновляют ваши cms, плагины и модули. Также наши сотрудники не проверяют ваши сайты на всевозможные уязвимости.

Общие рекомендации

Для повышения безопасности независимо от cms сайта рекомендуем внести в php.ini следующие настройки

allow_url_fopen = Off
allow_url_include = Off
expose_php = Off
register_globals = Off
disable_functions = popen,exec,system,passthru,proc_open,shell_exec,ini_restore,dl,symlink,chgrp,putenv,getmyuid,fsockopen,posix_setuid,posix_setsid,posix_setpgid,posix_kill,apache_child_terminate,chmod,
chdir,pcntl_exec,phpinfo,virtual,proc_close,proc_get_status,proc_terminate,proc_nice,getmygid,proc_getstatus,proc_close,escapeshellarg,show_source,pclose,safe_dir,dl,ini_restore,chown,chgrp,shown_source,
mysql_list_dbs,get_current_user,getmyid,leak,pfsockopen,get_current_user,syslog
display_errors = Off

Внимание, функции disable_functions нужно указывать в строку, в данном примере мы были вынуждены разбить на три строки для наглядности, но в php.ini должна быть одна строка, каждая функция через запятую без переноса строки.

В ISPmanager локальный php.ini находится, если смотреть

от корня аккаунта /php-bin/php.ini от корня сервера /var/www/user/data/php-bin/php.ini

В Vesta структура иная и локальный php.ini для каждого домена и путь к нему

от корня аккаунта /home/user/web/domen.ru/cgi-bin/php5-cgi.ini