Лечим хостинг от вирусов
Правильный путь очистки от вирусов
Найти все файлы, модифицированные позже 2017-10-01
find . -type f -newermt 2017-10-01 -name "*.php"
# delete all files which finds in prev command
find . -type f -newermt 2017-10-01 -name "*.php" | xargs rm -rf
# find another files
find . -type f -newermt 2017-10-01
Обязательно нужно провероить корневой .htaccess, если что, тупо заменить его на файл по умолчанию:
cp ~/modx/modx-2.3.3-pl/ht.access .htaccess
После очистки можно запаковать все php файлы вот таким образом:
rm -rf core/cache/*
find . -name "*.php" -o -name "*.htaccess" -o -name "*.js" | tar zcvf sitename.php-js-files.tgz -T -
Далее, если опять вирусня.. копируем архив из php в корень сайта, ну и далее:
find . -name "*.php" -o -name "*.htaccess" -o -name ".js" | xargs rm -rf
tar zxvf sitename.php-js-files.tgz
Если ничего не помогает, можно просто поискать все файлы, содержащие закодированное в base64 содержимое, например, так:
# find ./ -name '*.php' | xargs grep -E '[0-9a-zA-Z/]{80}'
Эта команда найдет все скрипты PHP, в которых есть строки, похожие на base64 длиной не менее 80 символов.
Анализ логов
Очень помогает в поиске источника вирусов анализ лог файлов веб сервера. Оттуда сразу можно понять, на какие скрипты идут запросы. Анализ лог файлов можно производить с помощью утилиты goaccess
После лечения
После лечения ваш сайт попадает в список долбежки. На зараженные адреса постоянно идет большой трафик запросов. Если он доходит до php - то естественно сайт проседает. Удобно мониторить это в панели хостинга.. или по логам.. как вариант - можно использовать вот такой код для .htaccess
# special antivirus url routes
RewriteCond %{THE_REQUEST} ^.*engine/\d+\.html.+$ [NC]
RewriteRule ^(.*)$ - [F,L]
Может такое случиться, что вы вроже как везде все обновили, 100 раз перепроверили. И тут опа, и через недельку две у вас снова целый зоопарк. Что бы такого не случалось, первое что нужно сделать, это включить директиву open_base_dir для php. В этом случае заражение одного сайта никаким образом не скажется на работе других сайтов.
Кроме этого, вот небольшой проверочный скрипт, который вам даст понимание того, на какие урлы у вас возвращается 200-ый код возврата. Это полезно что бы понимать, не заразился ли у вас еще какой то сайт.
# удаляем все логи, что бы проверку осуществлять здесь и сейчсс
rm *.log
# ждем минут 10, пока журналы не соберуться заново
grep "\" 200" *.log > 200.log
Права на папки
Как вариант, можно запретить писать везде. Вот команда:
find . -type f -exec chmod 0444 {} \;
find . -type d -exec chmod 0555 {} \;
# chmod for all need dirs
chmod -R 777 core/cache
chmod 666 core/config/config.inc.php
chmod -R 777 core/export
chmod -R 777 core/packages
chmod -R 755 assets/
И наоборот, вернуть все на запись (например для обновления CMS):
find . -type f -exec chmod 0644 {} \;
find . -type d -exec chmod 0755 {} \;
Дополнительно
Можно так же поискать через:
find location -ctime time_period
Examples of time_period:
- More than 30 days ago: -ctime +30
- Less than 30 days ago: -ctime -30
- Exactly 30 days ago: -ctime 30
Еще вирусня прячется в картинках, да да.. и такое бывает )
grep -l -R "<?php" images/*
grep -l -R "<?php" | grep ".gif$" | xargs rm