Админ 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)