Админ 13 Чистка вирусов по ssh

Сегодня гугл прислал письмо, мол «возможно на ваших сайтах вирус». Полез проверять — действительно есть. Я уже неоднократно сталкивался с заражениями. Результат таких заражений:

  • либо сайт редиректит куда-то, причём обычно только мобильных пользователей, чтоб не так быстро спалиться
  • либо рассылает спам

За отсутствием редиректа я слежу с помощью скрипта, который отслеживает изменения в файле .htaccess. Редиректов не было с тех пор как установил скрипт. За тем, чтобы не рассылался спам — заглядываю в логи сервера и в очередь почтовика.

# tail /var/log/php.mail.log
# exim -bpc

Я очень хочу понять как злоумышленник каждый раз влазит на эти сайты, но у меня для этого пока не хватает знаний. При том, что я меняю пароли для ftp, к базам данных, соли WP и даже переносил их на другие сервера.
В этот раз вирус не редиректит и не рассылает спам. Он просто есть. Обычно я чистил сайты так: скачивал на комп, открывал Text Replacer (он бесплатный, но за лицензию я заплатил, т.к. он мне неоднократно пригождался) искал base64 и массово заменял строки в файлах, в которых он нашелся + удалял файлы, которых не должно быть в движке (обычно не содержат никакого кода кроме самого вируса).
Сегодня, в рамках изучения linux-администрирования я решил сделать поиск внутри файлов средствами самого линукса.
Зашёл в папку, в которой обычно ютятся вирусы (wp-admin), проверил вручную что они присутствуют и запустил в консоли

# grep "base64" -R

↑ эта хуйня не работает. Каретка переводится на следующую строку и в течение получаса ничего не происходит. (Работал на соседней вкладке, пока ждал выполнения этой операции) Прерываю Ctrl+C. Что я делаю не так?

UPD Разобрался. Нужно вводить путь после команды, даже если находишься в нужной папке
↓ это работает!

# grep "base64" -R /var/www/site/data/www/site.ru/wp-content

Остаётся вопрос, что происходит, если не введён адрес? Почему не выдаёт ошибку или не спрашивает ввести путь?

И еще вопрос. Если набрать в гугле man grep — выводится мануал на русском с сайта OpenNet. При этом в самой консоли man на английском. Как докачать русские маны ко всем командам?

Узнал команду mv. Используется для перемещения и переименования файлов.
Попробовал редктировать файлы vim’ом — пока слишком хардкорно, вренулся в mcedit. Узнал как удалить целую строку за раз: Ctrl+K

План

    1. Сделать на учебном сервере то, что написано в статье: http://habrahabr.ru/post/132302/
    2. Научиться следить за изменением файлов сайтов. Ведь по идее никто не должен менять файлы в директориях кроме /wp-content/uploads (да и то только закачивать)
    3. Научиться получать уведомление на почту при внесении каких-то левых изменений.
    4. Научиться получать уведомление на почту при рассылки слишком большого количества писем.
    5. Уведомления на почту, когда осталось мало места на сервере.
      Научиться хранить логи всех сообщений, отправленных с сервера. (пока хранятся только заголовки)
    6. Научиться чистить старые логи (складывать их по датам?)
    7. Настроить бекапы в облако, а не только на сервер. Хранить на сервере бекап только за последний день.
    8. Научиться отслеживать какой сайт грузит систему (apachetop, goaccess, munin, pinba)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *