Как защитить сайт на WordPress от взлома


Как защитить админку WordPress файлом .htaccess

Создавая блог на WordPress первое с чего приходится начинать, это разработка концепции безопасности. После того, как был взломан мой каталог сайтов, все свои разработки, я рассматриваю именно с позиции безопасности. Поэтому, как я уже писал в своем блоге на блогспот, для входа в админ панель, придерживаюсь двух степеней защиты. И если первая реализована средствами PHP, т. е. самого WordPress, то вторая уже с  использованием магического файла .htaccess ( т. е. средствами  веб-сервера Апача).

Как защитить WordPress от взлома

Как защитить WordPress от взлома

Хорошо став на ноги (установив WordPress), я решил сделать первый шаг на встречу безопасности и, удалить сообщение об ошибках авторизации, при входе в админ панель. Это можно сделать двумя способами:

1.  Используя плагин Secure WordPress, в настройках которого,нужно поставить галочку в пункте  отключение ошибок авторизации.

2.  Вручную добавить в скрипт functions.php (который лежит в папке шаблона блога) строку:

add_filter('login_errors',create_function('$a', "return null;"));

 

Как узнать логин от админки WordPress

Самый простой способ узнать (реальный:) логин от админки это выделить в комментах имя администратора, и посмотреть исходный код. Он будет виден либо в имени, либо в CSS классе <li class=comment byuser comment-author-?!?

Где прячется логин админки WordPress

Где прячется логин от админки WordPress

Более того, есть и другие, не менее интересные способы, которые позволяют узнать реальный логин от админки WordPress,  поэтому о том, как узнать и спрятать реальный логин администратора, читайте  в этой статье.

А у меня настало время делать второй шаг, и здесь на помощь бегут плагины, ограничивающие количество неудачных попыток входа в админку. Для этого вполне подойдет  плагин Login LockDown, который имеет всего пять необходимых и легких в настройке параметров.

Другие способы взлома панели администратора WordPress

Есть и другие способы взлома админки Вордпресс. Например, сброс пароля через email. Для этого, злоумышленнику будет достаточно узнать реальный email администратора, а как известно: против лома нет приема, и запустив перебор логин-паролей, рано или поздно результат будет достигнут. Поэтому необходимо ограничить доступ именно к скрипту wp-login.php

Сделать это можно двумя способами:

1.  Имея статический ip адрес можно в .htaccess ограничить доступ по конкретному ip. Следующим образом:

<Files wp-login.php>
order deny,allow #Запрешено все, что не разрешено
deny from all #Запрещено всем
allow from 77.84.105.1 #Разрешено только мне:)
</Files>

 

Но такие манипуляции можно считать успешными, только в том случае, если вы являетесь счастливым обладателей статического ip. Ну или на пример, входите в свою админку, исключительно через определенные прокси сервера, ip которых и занесены в строку allow from. Но безопасности ведь много не бывает, по этому не ограничивая себя только возможностями плагинов, можно сделать авторизацию на .htaccess для WordPress средствами веб сервера Apache.

Как защитить WordPress файлом .htaccess

Как защитить WordPress файлом .htaccess

Вообще .htaccess  конечно уникальный файл конфигурации веб-сервера в отдельно взятом каталоге. И чего я только не делал с его помощью, даже однажды обнаружив уязвимость на одном хостинге в виде PHP подключенного в режиме CGI, успешно поставил заплатку. Но речь в данной статье пойдет о том, как сделать авторизацию на блоге WordPress средствами .htaccess, что позволит прикрыть еще одну дверь на пути зло=умышленника.

2. Для этого, необходимо сделать свою аутентификацию, на уровне веб сервера.

По этому открываем на редактирование файл .htaccess и пишем туда:

AuthType basic
AuthName 'Enter your daTa'
AuthUserFile '/home/your_catalog.ru/.htpasswd'
<Files wp-login.php>
Require valid-user
</Files>

 

Рассмотрим назначение параметров авторизации на .htaccess подробнее:
AuthType  Тип аутентификации, и в данном случая он базовый, а это означает, что при обращении к каталогу появиться окно для ввода имени пользователя и пароля.
AuthName  Текст который будет отображаться в заголовке.
AuthUserFile путь до местонахождения файла .htpasswd (в нем будет хранится база логинов и паролей)
Require valid-user  Обозначает, что для открытия файла wp-login.php необходимо пройти аутентификацию.

Теперь необходимо создать файл для хранения базы логин:паролей  .htpasswd к которому и будет обращаться директива AuthUserFile. 

Сервера под Windows и Linux не(МНОГО) по разному воспринимают аутентификацию, для Windows например вполне хватит текстовой строки пароля, а для Linux сервера его необходимо предварительно зашифровать.  В интернете можно найти специализированные сервисы, для этого, а можно и самому зашифровать свой пароль. Для этого вполне достаточно создать скрипт на PHP, ну скажем kryptlinux.php с таким содержанием:

<?php 
$pass = "Пароль";
$pathz substr(md5(uniqid($pass)), 0, 3) . "-56";
$pass=crypt($pass,$pathz);
echo $pass;
?>

 

В этом скрипте, переменной $pass необходимо вместо «Пароль» передать именно ваш пароль. В итоге, на странице появится всего одна строка, это и будет зашифрованный пароль для Unix/Linux веб сервера. Например зашифрованный пароль administrator выглядит так her@JnJ[ァye%F.
Теперь добавляем в файл .htpasswd логин и зашифрованный пароль.
И если логин к примеру admin а пароль administrator, то в .htpasswd нужно добавить:

admin:her@JnJ[ァye%F 

 

Вообще очень грамотно, с позиции безопасности в WordPress, скрипт авторизации wp-login.php  находится в одном месте, а папка скриптов администратора отдельно (в другом:) Поэтому, даже если, кто-то сможет обойти две системы авторизации, он не сможет попасть в каталог адмистратора, потому, что доступ туда закрыт всем, кроме меня.

order deny,allow #По умолчанию доступ закрыт 
deny from all #Абсолютно для всех
allow from мой_ip 
#ip адрес проксика через который я делаю вход в админку :)

 

Его конечно тоже можно вычислить, но сколько на это уйдет времени и энергии, даже страшно предположить.

Более подробное описание создания аутентификации средствами веб сервера, для защиты админки сайта, смотрите здесь.

Ну, а как все это работает в реалии вы можете увидеть, если попытаетесь зайти в мою админку!