Защита от взлома сайта глазами "чайника".

Лирика.
Зная немного тэгов HTML и имея смелость можно самому сделать сайт. Вначале у меня был сайт чисто на HTML, потом я замахнулся и поставил CMS. В программировании я не силён, а PHP для меня лес дремучий. Как обезьянка, следуя инструкциями сайт был свёрстан... даже два :-). Всё работало. Думал, что пока всё работает трогать не надо. Но хакеры не спят. Мой сайт конечно особо ни кому не нужен, но роботы взломщики гуляют и запросто ломают все сайты подряд. Так за 3 года сайт был наполнен вредоносным кодом, но я об этом не догадывался, пока не была подменена первая страничка сайта. Только на этом этапе я схватился за голову и начал активно изучать вопрос удаления вирусов, а точнее вредоносного кода и восстановлением работоспособности сайта.
Это статья для таких же неопытных сайтостроителей как я. На профильных форумах много советов, но там программеры на своем языке дают советы, что простым смертным понять что либо сложно. Хватит лирики. ВАШ САЙТ ВЗЛОМАН, при открытии вашего сайта на первой страничке развивается пиратский флаг.

Последовательность действий, Последовательность условная, можно менять местами некоторые действия:
1. Через интерфейс (личный кабинет) провайдера хостинга закрываем доступ по FTP и больше никогда не открываем :-). Только если временно при массовой перекачке файлов.

2. Через интерфейс (личный кабинет) провайдера хостинга на всякий случай упаковываем все файлы сайта в архив. Этот архив не скачивайте себе на комп, пусть пока лежит у хостера.

3.1 Через браузер заходим в админку сайта и проверяем есть ли у вас доступ с правами админа. У меня они остались, если нет, то в интернете есть инструкции, как вернуть права. Или восстанавливаем сайт из резервной копии (нормальный хостер должен предоставлять такой сервис) На будущее: пользователя admin лучше сразу переименовать ибо боты любят менять пароль этого пользователя, а у меня на счастье админ был "Таланов Виктор" :-)

3.2 Можно сразу восстановить сайт из резервной копии, но он точно будет зараженный, так что не расслабляйтесь :-)

4. Через админку сайта убиваем (блокируем, удаляем) всех лишних пользователей и все новые подозрительные статьи.

5. Через админку сайта меняем пароли админа сайт.
6. Через интерфейс (личный кабинет) провайдера хостинга желательно все файлы сайта перенести в соседнюю папку, а папку с вашим сайтом оставить пустой. Хорошо если хостер дает возможность тестовой зоны с адресом сайта типа "ваш_логин.хостер.ру". Тогда вы сможете тестировать свои дальнейшие манипуляции.

7. Через интерфейс (личный кабинет) провайдера хостинга запускаем антивирус. Приличные хостинг провайдеры должны такой сервис предоставлять. Если нет, то можно воспользоваться вот этим инструментом http://revisium.com/ai/ (там есть видео инструкция, которую понял даже я :-).

8. Дальше начинается самое муторное. Я на это дело подрядил своего ребенка :-). Антивирус только покажет файлы с вредоносным кодом, но обрабатывать все файлы придется вручную. У меня таких нашлось 62 штуки. Файлы типа "index67.php" можно удалять смело. Остальные лучше открывать и удалять строки с нечетабельным содержимым. У меня это были везде первые строчки. Некоторым зараженным файлам были поменяны права на запись/чтение. Интерфейс хостера должен позволять менять права на нормальные "644" или "755"(для папок).
На картинке результат работы антивируса.

9. Обновляем CMS до актуальной, а так же все модули. Инструкций, как этот делать полно в интернете. Это лучше делать в "тестовой зоне", т.е. на сайте "ваш_логин.хостер.ру". Если сайт работает, то через интерфейс хостера перекладывайте его в папку "ваш_сайт.ру"... пусть пока работает. Но расслабляться рано.
10. Начинаем искать "бэк доры", т.е. чёрные ходы для хакеров на ваш сайт. Я воспользовался вот этим инструментом http://revisium.com/ai/. Там есть видео-инструкция. Ничего сложного. При помощи этого инструмента я обнаружил дыру.
11. Еще раз меняем пароли на ФТП, админку (всех пользователей), базу данных, доступ к хостингу.
12. Если есть время изучаем на форумах опыт защиты сайта и добавляем в код сайта разные фишки, удаляйте "лишние" файлы и т.п.
13. Через интерфейс (личный кабинет) провайдера хостинга наблюдаем за логами. Т.е. нормальный хостер ведет лог посещения сайта. Там должна быть информация кто и когда что запросил или засунул на сайт.
Пример логов. Красным выделены удачные POST, которые положили вам вредоносный код на сайт. Жёлтым спамерское обращение... из серии поиска дыры в вашем сайт. Зеленым - обычный запрос к странице.

14. Пару слов про базу данных. Для меня это тёмный лес, впрочем, как и PHP :-). Так вот для сохраняйте единомоментно файлы сайта и базы, т.е. рабочая комбинация этих двух субстанций позволит восстановить сайт. Если с файлами всё понятно, то к базе у меня доступ даёт провайдер через phpvyadmin.

Разбираться в интерфейсе phpMyAdmin разобраться сложно, но можно. Если база сломалась, то проще ее убить через интерфейс хостера целиком, потом создать новую с тем же именем и пользователями, а через интерфейс phpMyAdmin сделать импорт базы. Экспорт базы делается через этот интерфейс, получается просто файлик, который при случае можно засунуть в пустую базу через импорт.

ВАЖНЫЕ МОМЕНТЫ:
- Не экономьте на хостинге. Выбирайте солидных провайдеров (у меня jino.ru).
- Делайте бэкап файлов и базы, хотя нормальный провайдер сам об этом позаботиться.
- Обновляйте ядро CMS (не ленитесь!)
- При манипуляциях с сайтом при лечении будьте аккуратны, не удалите лишнего. Лучше вначале тренироваться в тестовой зоне.

PS: Критика приветствуется, но только на человеческом, а не программистском языке :-) Тут можно писать https://www.facebook.com/victor.talanov