5 практических решений для защита сайта от взлома
Чем больше внимания привлекает Ваш сайт (растет посещаемость, узнаваемость и т.д.), тем больше находится желающих Вам подо**ать. Неважно кто это — конкуренты, завистники или просто «Вася» из соседнего города, но они попытаются взломать Ваш сайт.
Наши труды — статьи, которые писались днями и ночами, бриллиантовые комментарии пользователей, лояльность которых мы заслуживали не один месяц или даже год, могут быть украдены или просто уничтожены практически мгновенно. Страшно, да?
Сейчас, когда Ваш сайт обретает черты чего-то большего чем онлайн-дневничок, самое время подумать о безопасности, но как бы хороши не были контрацептивы, тут они не помогут ;). Здесь понадобится немного иной подход.
В этой статье я собрал несколько необходимых, первоочередных решений для wordpress, которые прикроют Ваш зад возможные лазейки для злоумышленников и помогут защитить Ваш блог.
1. Не используйте логин «admin»
Это первое, что приходит на ум. При установке wordpress система предлагает в качестве имени основного пользователя использовать «admin». Большая часть пользователей оставляют это имя по-умолчанию и совершенно зря. Задача злоумышленников упрощается многократно, теперь им достаточно подобрать пароль, ведь логин они уже знают.
Свежие версии wordpress, начиная с 3.0, имеют в своем арсенале опцию изменения логина администратора сайта. Но если у Вас, как и у меня, версия более древняя :), тогда на помощь придет SQL запрос, который необходимо выполнить в панели phpMyadmin:
UPDATE wp_users SET user_login = 'новое_более_сложное_имя_администратора' WHERE user_login = 'admin'; |
Если Вы не в курсе что это такое, тогда рекомендую обратить внимание на эту статью, в которой описан процесс выполнения sql запросов, а также приведено несколько полезных sql команд, с помощью которых можно значительно оптимизировать базу данных своего блога.
А еще можно создать нового пользователя с правами администратора, с более сложным логин и паролем, а стандартного юзера «admin» с id=1 просто удалить, предварительно указав в опции «Связать все записи и ссылки с:» своего нового, только что созданного пользователя. Тоже хороший вариант 😉
2. Сгенерируйте и пропишите уникальные ключи аутентификации
В файле wp-config.php (или wp-config-sample.php при установке) имеются строки уникальных фраз:
define(‘AUTH_KEY’, ‘vasha_unikalnaya_fraza’);
define(‘SECURE_AUTH_KEY’, ‘vasha_unikalnaya_fraza’);
define(‘LOGGED_IN_KEY’, ‘vasha_unikalnaya_fraza’);
define(‘NONCE_KEY’, ‘vasha_unikalnaya_fraza’);
define(‘AUTH_SALT’, ‘vasha_unikalnaya_fraza’);
define(‘SECURE_AUTH_SALT’, ‘vasha_unikalnaya_fraza’);
define(‘LOGGED_IN_SALT’, ‘vasha_unikalnaya_fraza’);
define(‘NONCE_SALT’, ‘vasha_unikalnaya_fraza’);
Эти строки усиливают безопасность Вашего блога хешированием (шифрованием) паролей. Чтобы получить полностью готовые к употреблению строки уникальных фраз, достаточно пройти по адресу https://api.wordpress.org/secret-key/1.1/salt/. Система выдаст Вам что-то подобное:
define(‘AUTH_KEY’, ‘`rgC;!Zcz+N7n+KR*30DXo«|,~COTB^OD&A+m3 define(‘SECURE_AUTH_KEY’, ‘]w(,Y;euh$ Byo-w$u{;hn|m&_Ws`}_xv*5%4m9CS[=W3Yp-?akJNa:+fb-QpSN-‘);
define(‘LOGGED_IN_KEY’, ‘&-y
GG#Z|=S6fV{@QF1I-Jh[*ce`qL75|mcI]0b92}~+K1(< !fjoJ}0{,`RI’);
define(‘NONCE_KEY’, ‘0!lV!.JLoTv%*EM]Jl$P$wDMZYhCA.%4%LC|V`fM}J+-J7WPiZac7ab+99GW7Q2]jslS>%2CK5<+w:W:0OXK7d=a88R^B+DCn$C_7&~pBLIR+-Mybj[s2H;L{$v>,_-/6’);
define(‘NONCE_SALT’, ‘dz-S3&#j|T`oW-|B{2nj<]1|H)MV]q9[QIzlqng(e,HPs]1?J:6B3/V6a>’);
3. Воспользуйтесь плагином Login LockDown
Принцип работы плагина Login LockDown достаточно прост, но в тоже время функции, которыми он обладает, незаменимы в общей структуре безопасности сайта. Он предотвратит попытки взлома подбором комбинаций логина/пароля панели администратора вашего wordpress блога.
Login LockDown ведет лог всех неудачных попыток входа в админ-панель. В эти логи входит такая информация, как IP адрес пользователя, время попыток, периоды между повторными пробами авторизаций и если таковых из одного диапазона IP адресов становится больше, чем установлено Вами в настройках плагина, то система блокирует дальнейшие попытки входа.
По-умолчанию плагин имеет достаточно жесткие ограничения на попытки входа в систему (3 попытки с интервалом в 5 минут с небольшого диапазона IP адресов, если неудачно — блокирует на 1 час), потому в каких-то особых настройках не нуждается. Установили и забыли ;).
4. Защитите содержимое папок wp-includes и wp-content
Это невероятно, но содержимое этих папок очень часто можно просматривать прямо из браузера. Достаточно набрать в адресной строке http://pervushin.com/блог/wp-includes или http://pervushin.com/блог/wp-content, или http://pervushin.com/блог/wp-content/plugins и в браузере отобразится список файлов конкретной директории:
Попробуйте на своем блоге, видите? Это совершенно недопустимо, надо исправлять, мы же не хотим, чтобы кто-то изучал структуру нашей темы, например ;).
а) Исправляется это достаточно просто. Создаем пустой файл index.html или index.php и забрасываем во все имеющиеся папки и подпапки.
б) Можно расширить функциональную часть этих файлов редиректом. Опять же, создаем файл index.html или index.php, но на этот раз добавляем в этот файл строку:
<meta HTTP-EQUIV="REFRESH" content="0; url=http://pervushin.com/адрессайта/"> |
Забрасываем этот файл во все директории указанных папок и пробуем набрать, например, http://pervushin.com/адресайта/wp-includes. Ну как? Перебросило на главную Вашего сайта? Наверное так даже лучше будет 🙂
в) А еще можно установить плагин AskApache Password Protect, который добавит более серьезную защиту папкам wp-admin, wp-includes, wp-content и их содержимому.
Вроде бы и заканчивать на этом можно, но способов в статье озвучено 4, а в заголовке почему-то 5 :). Для полного комплекта давайте добавим пятый пункт.
5. Общие рекомендации по защите блога на wordpress
— регулярно делайте бекап всех данных сайта, начиная с файлов самого wordpress и заканчивая базой данных mysql. Как это делается читайте здесь.
— при поступлении обновлений для самого движка и установленных плагинов обновляйтесь. В свежих версиях скриптов всегда найденные уязвимости устраняются. Обновление сайта — это шаг серьезный и достаточно рискованный. Потому перед выполнением не забудьте сделать бекап всех ваших данных. Очень не редко обновление системы проходит не так гладко, как хотелось бы.
— удалите неиспользуемые плагины, темы и неактивных пользователей. Неиспользуемые и даже не активированные плагины и темы могут послужить злоумышленнику в поисках «узких» мест в вашем сайте, не дайте ему такой возможности.
— время от времени меняйте свой логин и пароль в системе. Возможно взломщик уже сейчас подбирает логин и пароль к вашей системе, и уже наполовину сделал это, а Вы бац и сменили их. Приятно же «свинью» этому нехорошему человеку подложить 🙂
Не стоит конечно становиться параноиком и зацикливаться на безопасности блога, перекрывая все и вся, но кто знает, возможно это спасет жизнь Вашему сайту.
Удачи Вам, друзья, берегите себя и свои труды!
p.s. 100 рублей за последний комментарий — продолжим? Условия здесь (кстати, призовой фонд того поста пополняется каждую неделю на 10 рублей ;)).
Спасибо! Очень полезная статья. В закладки!
Особенно порадовала вкладка Полезное:
Кстати как на это смотрят в Яндекс директе??
Я не думаю, что в Яндекс.Директ считают размещаемые у них объявления «не полезными» 😉
Да-да, верно подмечено, логи мониторить тоже очень полезно.
>>похоже я не буду последним
Ну это уж как захотите 😉
Отличная статья Серёга! Паразиты постоянно совершенствуют свою технику проникновения, поэтому, если будет новая информация по защите блога — непременно пишите пост.
Спасибо! Обязательно.
Попробуйте, надеюсь поможет.
На данный момент защита сайта это актуально и не требует дополнительных комментариев.
Сделал все по пунктам. Спасибо за статью.
А причем тут взломали блог и троянская угроза? Совершенно не совместимые понятия. Все «трояны» — исполняемые файлы, которые ни каким «макаром» через админку CMS не запихнуть на сервер.У вас можно скачать с сайта, что нибудь?
Троянская угроза может выскакивать, скорее всего, из-за того, что хакеры, или вы сами запихнули троян в zip архив. Все нормальные антивирусы это прекрасно видят.
На админку можете не грешить, через нее троян не пропихнуть. Вот если бы у вас взломали аккаунт хостинга, то другое дело. Но тогда (мне почему-то кажется) вы бы и в админку зайти не смогли.
…….
Сергей, спасибо за напоминание. Пора, пора бэкап файлов сделать.
Спасибо за дополнение 🙂
Если не хотите потерять свой блог, то пора задуматься о его защите.
@aa97ed4098bd87cccd7e35c86095ef4b:disqus Ваш комментарий заработал 100 рублей. Сообщите мне свой WMR кошелек по email sergey [гав] pervushin.com, на который Вы хотите получить выигрыш.
Да, значит у Вас все в порядке, есть пустые index.php или hml
Сергей, спасибо за пошаговые, а главное понятные инструкции. Все сделала, как Вы написали!
Спасибо Вам 😉
Рекомендую присмотреться к FastVPS (http://pervushin.com/discount-hosting-vps-vds-dedicated-reader-pervushincom.html ). Ребята отзывчивые, не отправят на сторону искать решения, а помогут сами.
Что касается вируса. Очень по-разному бывает. Но как вариант, необходимо просмотреть все файлы на изменения. Смотрим последнюю дату изменения файла и если она «свежая», т.е. файл изменился в тот период, когда Вы сами операций с этим файлом не производили или знаете примерную дату начала проблем, и если находим такой файл, ищем в нем «левый» код. Работа рутинная, конечно.
Да, это какая-то странная служба и видимо странного хостинга 🙂
Я рад, что все закончилось благополучно.
Удалить его можно через FTP, если он конечно не отключается обычным способом.
Что касается работы плагинов, их установки и удаления, то, судя по названию плагина (password protect), он должен у себя в настройках содержать какое-то поле, в которое необходимо прописать пароль. Собственно этот пароль будет защитой от несанкционированных действий.
Я его предложил, как альтернативу настройке руками, так как сам все возможное стараюсь делать именно так, избегая установки лишних плагинов там где это возможно. Собственно сам с этим плагином не работал, потому нет подробного описания в статье :(.
Спасибо Вам ;). Что касается взлома, то, к счастью, меня ни разу не взламывали. А может не нужно никому было 🙂
55436 ffhggf hf
The best post by ru_wsx
:))))
сергей добрый день. Подскажите пожалуйста. У меня взломали пароль админки, не могу восстановить через почту, что можно сделать еще? И за статью огромное спасибо.
uCoz+WordPress=SuperГС 🙂 — значит был использован стэк, или взломали через броузер либо Google, либо FireFox — обратиться к хостеру, вот что сделать! Попросить заблочить сайт, по-возможности создать резервную копию посредством помощи хостера(если такая помощь есть), даль удалять сайт и заливать по новой. Переходить на «коробочку» если позволяют средства…
Читаю и удивляюсь много во я не знал, насчет защиты а точнее аж 3 пункта, благодарю Сергей 🙂
Хочется еще дополнить плагин Login LockDown довольно хорош для защиты но там необходимо сделать маленький хак что бы не показывало взмомщику сколько у него осталось попыток
3 пункт в статье как раз об этом плагине)
Отличная статья, спасибо
тема работает на wp 4.0, попытки взлома постоянно заканчивались Internal Server Error, а сейчас посмотрим
Здравствуйте, Сергей. Видел статью про закрытие листинга при помощи записи «Options All -Indexes» в .htaccess. Как вы думаете есть ли у этого метода недостатки? Так то теперь 301 выдает. Но как то это странно. Могут ли быть нарушения в работе сайта?
«Так то теперь 301 выдает» — это уже нарушение и недостаток метода. Рекомендую такое не использовать.
Хорошая статья, спасибо. А что Вы думаете о плагине Better WordPress secuirity? Он у меня установлен, но вирусы лезут на сайт постоянно. Кроме того, если прописать дополнительные строки в wp-config.php, это не будет мешать админу работать с сайтом?
Хороший плагин. Использую его на некоторых проектах. Он довольно не простой в настройке, лучше доверить специалисту. Тогда сайт будет надежно защищен.
Доп.строки никак не помешают работать.
хороший плагин
Создала по вашему совету пусте index.html и теперь когда сама пытаюсь зайти в админку вижу белый экран. Как решить эту проблему, не подскажете?
удалите index.html
Респект автору! К сожалению не удалось попробовать — мой хостер все защитил….