Как удалить вирус со своего хостинга
Если лет 5 назад турецкий хакер, вскрыв мой старенький сайт на phpbb2, всего лишь написал на главной странице: «Привет из Турции», то сегодня хакинг сайтов — это прибыльный бизнес. На вашем сайте могут разместить баннеры, редирект на партнерскую программу, простыню из 500 ссылок на свои дорвеи, просто закачать сам дорвей в глубину сайта — вариантов монетизации вашего белого и пушистого сайта в чужой карман расплодилось довольно много. Что можно сделать с нашей стороны баррикад для противодействия вредоносным скриптам? Советы банальны, избиты и во множестве дублируются в интернете:
- Не храните пароль от ftp аккаунта в ftp клиенте. Запишите его на бумажке и вводите каждый раз руками без копирования через буфер. В моей практике был случай, когда вирус прямо у меня на глазах пробился через KIS Касперского и успел украсть пароли до того, как KIS его удалил. В то же мгновение на ВСЕ сайты стали заливаться вредоносные шеллы. И уж, конечно, никакой антивирус не поможет от свеженаписанного кейлоггера, поселившегося у вас в компьютере, и отсылающего все набираемые с клавиатуры пароли.
- Поддерживайте вашу CMS в актуальном состоянии. Как только в каком-нибудь wordpress/joomla/phpbb и проч. находится уязвимость, миллионы школьников по всему миру бросаются тестировать ее на наших с вами сайтах. Поэтому обновляйтесь, господа, обновляйтесь регулярно.
Что делать, если вирус уже прокрался на ваш хостинг и заразил, к примеру, все *.php файлы своим включением? Для начала — не паниковать.
- Сканируем свой компьютер на предмет выявления вирусов каким-нибудь серьезным средством вроде последнего Касперского.
- Меняем пароль на ftp
- В .htaccess корневого каталога вашего ftp аккаунта прописываем:
Deny from all
Allow from тут_ваш_IP
Например, ваш аккаунт называется vasya123, в нем находятся папки с сайтами site1.ru site2.ru и т.д. Так вот, указанный .htaccess надо разместить выше по уровню над всеми папками, чтобы он действовал на все сайты одновременно. Такой ход конем не даст хакеру возможности изменять файлы во время наших работ по очистке. - Ищем шеллы. Шелл — это обычно php cкрипт, позволяющий бороздить ваш ftp аккаунт в качестве файлового менеджера. Когда вы его найдете, ради интереса можете запустить прямо через браузер как часть своего сайта, например: http://site1.ru/templates/css/w3453650.w.php, просто чтобы понять, как это работает.
Как найти вредоносные скрипты? Для этого на хостинге должен быть доступен SSH для вашего аккаунта. Если такой возможности нет, то это не хостинг, а недоразумение, и оттуда надо срочно бежать.4.1 Ищем руками — лезем по папкам и ищем файлы, созданные позже остальных на сайте. Долго, мало результативно, но зато наглядно и интересно.
4.2 Используем утилиту grep, которая ищет файлы с вхождением определенной строки. Большинство типичных вирусов имеют типичные последовательности кода, по которым их можно вычислить.
grep -rls «base64_decode|eval\(str_replace" /home/vasya123
/vasya123 путь до вашего ftp аккаунта на хостинге,
где /home
-r параметр рекурсии, заставляет искать внутри подпапок
-l список найденных файлов выдается по одному в строке
-s игнорируются ошибки доступа, например, если логи апача /logs/ имеют другого владельца в системе и вам недоступны
Полученный список файлов необходимо проанализировать на предмет его деятельности на вашем сайте, здесь знание php и вашей CMS просто необходимо.4.3 Ищем файлы, созданные за определенный промежуток времени:
find /home/vasya123/ -ctime -40 -ctime +10 >files.txt
Вышеуказанная команда ищет файлы, созданные от 40 до 10 дней назад и записывает результаты в files.txt Подобные списки могут оказаться очень обширными из-за файлов сессий, логов и иной деятельности ваших сайтов, но жизненно необходимо ее выполнять, чтобы выявить «детские» инклюды в ваши полезные файлы с простым редиректом на домен злоумышленника или другим не зашифрованным base64_decode действием. С промежутком времени необходимо экспериментировать, если неизвестна точная дата заражения. Также необходимо попробовать параметры -atime и -mtime этой команды. - Дальше действуем по ситуации.
5.1 По дате самого раннего залитого шелла или измененного файла ищем дыру в CMS, через которую пролез злоумышленник. Для этого смотрим логи всех сайтов за указанное время на предмет подозрительно запрошенных URL, что-то вроде site1.ru/?id=9999+union+select+null,’ >’,null+from+table1+into+outfile+’/usr/local/site/www/banners/cmd.php’/* и закрываем либо эту конкретную дырку, либо апгрейдим весь CMS целиком до последней версии.5.2 Удаляем залитые шеллы. Находим в них уникальную строку, свойственную только им, и удаляем через grep:
grep -rls «2362634892тут уникальный код чтобы не удалить полезные файлы354345345″ /home/vasya123 | xargs rm -rf
Предварительно, конечно, надо запустить grep без параметра | xargs rm -rf чтобы убедиться, что ищутся строго вредоносные файлы.5.3 Если хакер прописал в полезные файлы одинаковый кусок вредоносного кода, то тут поможет вот этот php скрипт Его нужно подправить под свои нужды и запустить в корне каждого сайта через браузер.
Собственно, это и все. Главное — усвоить логику: сначала удаляем дыру, потом только удаляем последствия дыры. Иначе хакер воспользуется уязвимостью снова.
Источник: http://www.ybv.ru/archives/116
Дайджест новых статей по интернет-маркетингу на ваш email
Новые статьи и публикации
- 2024-11-26 » Капитан грузового судна, или Как начать использовать Docker в своих проектах
- 2024-11-26 » Обеспечение безопасности ваших веб-приложений с помощью PHP OOP и PDO
- 2024-11-22 » Ошибки в Яндекс Вебмастере: как найти и исправить
- 2024-11-22 » Ошибки в Яндекс Вебмастере: как найти и исправить
- 2024-11-15 » Перенос сайта на WordPress с одного домена на другой
- 2024-11-08 » OSPanel 6: быстрый старт
- 2024-11-08 » Как установить PhpMyAdmin в Open Server Panel
- 2024-09-30 » Как быстро запустить Laravel на Windows
- 2024-09-25 » Next.js
- 2024-09-05 » OpenAI рассказал, как запретить ChatGPT использовать содержимое сайта для обучения
- 2024-08-28 » Чек-лист: как увеличить конверсию интернет-магазина на примере спортпита
- 2024-08-01 » WebSocket
- 2024-07-26 » Интеграция с Яндекс Еда
- 2024-07-26 » Интеграция с Эквайринг
- 2024-07-26 » Интеграция с СДЕК
- 2024-07-26 » Интеграция с Битрикс-24
- 2024-07-26 » Интеграция с Travelline
- 2024-07-26 » Интеграция с Iiko
- 2024-07-26 » Интеграция с Delivery Club
- 2024-07-26 » Интеграция с CRM
- 2024-07-26 » Интеграция с 1C-Бухгалтерия
- 2024-07-24 » Что такое сторителлинг: техники и примеры
- 2024-07-17 » Ошибка 404: что это такое и как ее использовать для бизнеса
- 2024-07-03 » Размещайте прайс-листы на FarPost.ru и продавайте товары быстро и выгодно
- 2024-07-01 » Профилирование кода в PHP
- 2024-06-28 » Изучаем ABC/XYZ-анализ: что это такое и какие решения с помощью него принимают
- 2024-06-17 » Зачем вам знать потребности клиента
- 2024-06-11 » Что нового в работе Яндекс Метрики: полный обзор обновления
- 2024-06-11 » Поведенческие факторы ранжирования в Яндексе
- 2024-06-11 » Скорость загрузки сайта: почему это важно и как влияет на ранжирование
Великие умы обсуждают идеи, средние - обсуждают поступки, а малые - людей Индийская пословица |
Мы создаем сайты, которые работают! Профессионально обслуживаем и продвигаем их , а также по всей России и ближнему зарубежью с 2006 года!
Как мы работаем
Заявка
Позвоните или оставьте заявку на сайте.
Консультация
Обсуждаем что именно Вам нужно и помогаем определить как это лучше сделать!
Договор
Заключаем договор на оказание услуг, в котором прописаны условия и обязанности обеих сторон.
Выполнение работ
Непосредственно оказание требующихся услуг и работ по вашему заданию.
Поддержка
Сдача выполненых работ, последующие корректировки и поддержка при необходимости.