Есть несколько элементарных правил защиты, которые не потребуют от вас больших знаний и особых усилий.
- Не нужно в качестве логина указывать admin. Иначе есть риск подбора пароля брутфорсом
- Генерируйте пароль длинной от восьми символов и используйте латинские символы разного регистра, цифры, спецсимволы
- Если не используете встроенный крон wordpress, переименуйте файл wp-cron.php, находящийся в корне сайта
Бот все равно будет стучаться к вам на страницу /wp-login.php, поэтому чтобы сервер не нагружался каждый раз обрабатывая запрос бота и проверяя на корректность пару логин/пароль, один из вариантов решения — перенести страницу входа в админку wp-login.php.
Для этого переименуем файл wp-login.php, например в wp-auth.php. Откроем файл на редактирование и заменим все строки wp-login.php на wp-auth.php. То же самое проделываем в файлах:
- /wp-signup.php
- /wp-activate.php
- /wp-includes/admin-bar.php
- /wp-includes/canonical.php
- /wp-includes/general-template.php
- /wp-includes/post-template.php
Если сайт все-таки взломали, или просто для проверки на предмет вредоносного кода, можно воспользоваться ssh протоколом для выявления зараженных файлов. Для этого в домашней директории выполним несколько команд, которые ищут определенные строки в файлах:
find . -type f -name '*.php' | xargs grep -l "base64_decode *(" --color
Эта строка ищет конструкцию base64_decode, которая часто используется в кусках вредоносного кода. В wordpress есть и нормальные файлы, содержащие этот код, например:
- /wp-includes/class-feed.php
- /wp-includes/SimplePie/Sanitize.php
- /wp-includes/class-IXR.php
Но обычно файлы вирусов имеют специфические не читаемые названия, или скрываются в файлах index.php. В любом случае, все найденные файлы лучше проверить вручную. Определить вредоносный код не должно составить труда.
Вторая аналогичная команда, которая ищет в файлах eval, который также часто присутствует в вирусах:
find . -type f -name '*.php' | xargs grep -l "eval" --color
С этой строкой та же ситуация, в wp есть системные файлы, содержащие эту функцию, например:
- /wp-admin/press-this.php
- /wp-admin/includes/ajax-actions.php
- /wp-admin/includes/class-pclzip.php
Также можно определить вредоносный файл посмотрев куда идут POST запросы в логах сервера. Это делается опять-таки через ssh командой
zgrep POST /var/www/sitename/data/logs/sitename.ru.access.log*
Путь до файла логов у разных хостеров может отличаться.
Также существует команда для просмотра запросов в реальном времени
tail -fn0 /var/www/sitename/data/logs/sitename.ruaccess.log
Если вы обнаружили у себя на сайте вирус и удалили его, через некоторое время следует проверить, не появился ли он опять. Для этого ssh команда
find . -type f -iname "*.php" -mtime -3
для просмотра всех фалов, которые были изменены за последние три дня. Меняя в команде цифру 3, меняем количество дней.