Защита админки сайта файлом .htaccess


Защита админки сайта от взлома

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

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

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

Поэтому, сегодня я решил немного реабилитироваться :) и описать все очень подробно.

Как вы уже наверное догадываетесь, речь в статье пойдет о защите админки сайта от взлома, при помощи магического файла .htaccess.

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

Моя вторая статья этого блога, под названием защита админки WordPress файлом .htaccess, уже стала немного популярной, и на данный момент обнаружены два клона, но все таки по большом счету  является нераскрытой и вызывает у простых пользователей очень много вопросов.

Вот сегодня я и решил, максимально раскрыть ее суть, и вскором будущем, даже выложить необходимые скрипты и файлы для скачивания. :)

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

Если честно, статью я начал писать еще 22 июня, но что-то так увлекся созданием уникальной картинки и разработкой PHP скрипта шифрования пароля, что несколько часов потратил на реализацию данного вопроса, и отложил само описание в надеюсь что не очень долгий ящик. :)

Begin:  …или, как защитить вход в админку сайта, аутентификацией?

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

Для начала необходимо создать папку, в которой будет находиться файл .htpasswd с базой логинов и паролей для аутентификации файлом .htaccess, т. е. средствами веб сервера.  Название у папки может быть произвольным, например passadm.

Теперь создаем сам файл .htpasswd и вносим туда логин и зашифрованный пароль, иначе Unix сервер просто будет выдавать ошибку 403 Forbidden (доступ запрещен).

Если логин можно написать любой, но только английскими буквами, то пароль необходимо зашифровать, для этого пишем небольшой PHP скрипт с таким содержанием:

Шифрования пароля средствами PHP

<php

//генерим пароль

$passwd = $_POST[password];

$patz = substr(md5(uniqid($passwd)), 0, 3) . "-56";

$passwd = crypt($passwd,$patz);

echo '<p> <b>' . $passwd . '<b>';

?>

<!—выводим форму для ввода пароля—>

<b>Генерим пароль для .htpasswd</b>

<form name="product" action="other.php" method="post">

<p><input name="password" maxlength="32">

<p><input value="Отправить" type="submit"></p>

</form>

 

В моем случае скрипт называется other.php, его можно положить в любую папку на сайте, и сделать вызов в адресной строке браузера, т. е. обратиться именно к нему: site.com/other.php.

В форме будет всего одно поле ввода, в которое необходимо ввести ваш пароль. После чего нажать на кнопку отправить, и  на странице появится зашифрованный пароль.

Синтаксис базы логина и пароля будет выглядеть так:

login:e35bLVusI0jek

Логин шифровать не нужно!  Лично я рекомендую, сделать  его максимально сложным. 😉

Теперь в папке со скриптами админки, необходимо создать файл .htaccess, хочу обратить внимание на то, что у вас может быть отключено отображение скрытых файлов на сервере, если вы например используете в качестве ftp клиента TotalCommander, в таком случае эту функцию необходимо включить.

В .htaccess пишем следующий код:

AuthType basic
AuthName 'Представьтесь господин хороший'
AuthUserFile 'абсолютный_путь_до_passwd_на_сервере/.htpasswd' 
Require  valid-user

 

Полный (абсолютный) путь к папке passadm с файлом .htpasswd можно узнать у администратора (сервера) хостинга, или с помощью PHP скрипта:

<?php

$server = getcwd();

$server = str_replace (‘\\’, ‘/’, $server);

echo ‘<i>’. $server . ‘<i>‘;

?>

Ограничение доступа в админку сайта по ip адресу, является другим способом защиты панели администратора от взлома.

Для этого, необходимо иметь в своем распоряжении статический ip адрес, в случае же если, вашим провайдером ip адреса назначаются автоматически, то для реализации этой цели можно использовать прокси сервера.

Дополнение.

Получать свой первый опыт работы с файлом .htaccess я рекомендую все таки на localhost, под Windows можно использовать Denwer, а под Linux я обычно использую Xampp, ибо потом работать с ним, будет  гораздо проще на реальном хостинге.

По мере возникновения вопросов, я буду дописывать статью, это если можно так выразиться: мой способ защиты контента сайта от плагиата.

P.S. Вышло обновление движка WordPress под версией 3.5.2, поэтому рекомендую особо с этим делом не затягивать.

Ну а копимастерам скажу:

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