Htpasswd и защита сайта

Рано или поздно к панели управления любого сайта могут попробовать подобрать пароль, особенно если используется одна из популярных CMS. Если пароль сложный, вероятность его подбора крайне мала. Более того, даже пароли состоящие только из цифр (не 12345) вполне надежны. Однако здесь проблема не только в безопасности.

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

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

Закрыть саму возможность войти в админку для всех кроме администратора можно настроив запреты по IP (в итоге можно и самому туда не попасть в нужный момент), переместив админку в другой каталог (правка кода CMS), или добавив еще одну пару логин/пароль на уровне сервера с помощью файла .htpasswd. Вот о третьем способе здесь подробнее.

Что понадобится для создания .htpasswd

  1. Доступ к хостингу по FTP
  2. Узнать путь к папке от корневого каталога сервера. Для этого в каталоге, который нужно защитить создаем php файл с любым именем (например, 1.php) и следующим содержимым:
    <?php
    echo $_SERVER['DOCUMENT_ROOT'];
    ?>

    Открываем этот файл через браузер и получаем путь к корню сайта, после которого нужно добавить требуемый каталог и файл.
  3. Генератор пароля для .htpasswd

Действия

1. Создаем в каталоге, который необходимо защитить два фйла - ".htaccess" и ".htpasswd", в первом будет прописан путь к .htpasswd, во втором логин и пароль в зашифрованном виде. Если файл ".htaccess" уже существует в каталоге, просто добавьте путь в конце файла.

Содержимое .htaccess:

AuthUserFile /home/user/public_html/admin/.htpasswd
AuthName "Nuzhen parol"
AuthType Basic
Require valid-user

AuthUserFile - путь к файлу с паролем от корня сервера

Содержимое .htpasswd:

user:{SHA}4kO/dXKsj4xoyPvDDzwVnIM+jpY=

Если все сделано правильно, при попытке зайти в панель управления Вы увидете вот такой запрос логина и пароля:

Для генерации логина и пароля можете воспользоваться формой ниже:

Генератор пароля для .htpasswd

Выберите формат ХЕШ-пароля, введите логин и пароль (можно не сложный):

SHA1 (more "secure")
APR1-MD5 (windows совместимый)

Видео

Добавить комментарий

Комментарии (3)

  1. Светлана 18 марта 2017, 13:15
    +1 #

    Спасибо вам огромное. Только с помощью вашего сайта удалось сделать эту чертову защиту. Вставляла в файл .htaccess содержимое с других сайтов и у меня это почему-то не работало. Вставила ваше и все в ажуре. Удачи вам!

    1. Светлана 18 марта 2017, 18:09(Комментарий был изменён)
      0 #

      Не подошел ваш .htaccess. Он блокирует весь сайт, а не админку. Надо
      <Files wp-login.php>
      AuthName «Access Denied»
      AuthType Basic
      AuthUserFile /home/admin/web/.htpasswd
      require valid-user

      1. Владимир 19 марта 2017, 21:32
        0 #

        Спасибо за Ваш пример. Тот вариант, что в статье, для защиты каталога