Файл .htpasswd обычно создаёт и обновляет сохранённые имена пользователей и пароли для HTTP-пользователей, использующих HTTP-аутентификацию. Вы должны создать файл .htpasswd, чтобы защитить содержимое веб-сайта, будь то основной URL-адрес или какой-либо подкаталог. Только авторизованные пользователи смогут получить доступ к исходному коду веб-сайта. Имя пользователя и пароль в файле указаны в строке, разделённые двоеточием. Имя пользователя хранится в открытом виде, а пароль хешируется, обычно с помощью шифрования MD5.
Файл .htpasswd находится в файле .htaccess в корневом каталоге сайта. Файл .htaccess — это файл конфигурации, используемый веб-серверами на базе Apache. Существует множество возможностей использования файла .htaccess, и одна из них — включение файла .htpasswd.
В этом посте мы будем использовать уже установленный WordPress со стеком LAMP в ОС Ubuntu 24.04 для настройки HTTP-аутентификации с помощью файла .htpasswd. Его создание и настройка просты и могут занять около 5 минут. Давайте начнём!
Предварительные условия
- Сервер с Ubuntu 24.04 в качестве ОПЕРАЦИОННОЙ СИСТЕМЫ
- Установка WordPress со стеком LAMP
- Привилегии пользователя: пользователь root или некорневой пользователь с привилегиями sudo
Обновите систему
Прежде чем приступить к каким-либо действиям на сервере, мы обновим системные пакеты до последних доступных версий:
sudo apt update -y && sudo apt upgrade -y
Создать файл .htpasswd
Чтобы создать файл, вы можете использовать команду .htpasswd, которая доступна после установки веб-сервера Apache. Поскольку в этой статье мы будем использовать WordPress со стеком LAMP, эта команда доступна на нашем сервере.
Синтаксис команды следующий:
htpasswd -c "website_document_root"/.htpasswd "username"
Чтобы создать файл .htpasswd с именем пользователя «andreyex» в корневом каталоге «/var/www/html», выполните следующую команду:
htpasswd -c /var/www/html/.htpasswd andreyex
Вам будет предложено ввести пароль дважды, и после этого вы получите следующий результат:
root@host:/var/www/html# htpasswd -c /var/www/html/.htpasswd andreyex New password: Re-type new password: Adding password for user andreyex
Чтобы проверить содержимое файла «.htpasswd», выполните следующую команду:
cat /var/www/html/.htpasswd
Вы получите результат, аналогичный этому:
andreyex:$apr1$rDodiIIG$p6Q1GpNmJsgW88nIa.nA6/
Как видите, имя пользователя — «andreyex», а пароль зашифрован. Последнее, что нужно сделать в этом процессе, — установить правильные разрешения для файла .htpasswd:
chmod 644 .htpasswd
Импортируйте файл .htpasswd
Следующий шаг — импортировать файл в файл .htaccess вашего WordPress. Для этого откройте файл .htaccess в вашем любимом редакторе и вставьте следующие строки кода в конец файла:
#Весь корневой каталог документа (наш корневой каталог документа — /var/www/html) AuthName "Dialog prompt" AuthType Basic AuthUserFile /var/www/html/.htpasswd Require valid-user
Сохраните файл, закройте его и перезапустите веб-сервер Apache2.
Эти строки кода защищали целые каталоги и подкаталоги веб-сайта.
Например, если вы хотите защитить только один конкретный файл, скажем, wp-login.php, вместо предыдущей строки вы можете добавить эту:
#Один файл AuthName "Dialog prompt" AuthType Basic AuthUserFile /var/www/html/.htpasswd Require valid-user
Для защиты нескольких файлов вы можете использовать следующие строки кода:
#Несколько файлов
AuthName "Dialog prompt" AuthType Basic AuthUserFile /var/www/html/.htpasswd Require valid-user
Чтобы защитить подкаталог в WordPress, скопируйте файл .htpasswd в этот подкаталог или создайте символическую ссылку. Строки кода для защиты подкаталог «wp-admin»:
#Защитить каталог
AuthName "Dialog prompt" AuthType Basic AuthUserFile /var/www/html/wp-admin/.htpasswd Require valid-user
Подробнее о команде htpasswd
Если вы хотите узнать больше о команде «htpasswd», вы можете выполнить приведенную ниже команду:
man htpasswd
Вы должны получить следующий результат:
HTPASSWD(1) htpasswd HTPASSWD(1) NAME htpasswd - Manage user files for basic authentication SYNOPSIS htpasswd [ -c ] [ -i ] [ -m | -B | -d | -s | -p ] [ -C cost ] [ -D ] [ -v ] passwdfile username htpasswd -b [ -c ] [ -m | -B | -d | -s | -p ] [ -C cost ] [ -D ] [ -v ] passwdfile username password htpasswd -n [ -i ] [ -m | -B | -d | -s | -p ] [ -C cost ] username htpasswd -nb [ -m | -B | -d | -s | -p ] [ -C cost ] username password SUMMARY htpasswd is used to create and update the flat-files used to store usernames and password for basic authentication of HTTP users. If htpasswd cannot access a file, such as not being able to write to the output file or not being able to read the file in order to update it, it returns an error status and makes no changes. Resources available from the Apache HTTP server can be restricted to just the users listed in the files created by htpasswd. This program can only manage usernames and passwords stored in a flat-file. It can encrypt and display password information for use in other types of data stores, though. To use a DBM database see dbmmanage or htdbm. htpasswd encrypts passwords using either bcrypt, a version of MD5 modified for Apache, SHA1, or the system's crypt() routine. Files managed by htpasswd may contain a mixture of different encoding types of passwords; some user records may have bcrypt or MD5-encrypted passwords while others in the same file may have passwords encrypted with crypt(). This manual page only lists the command line arguments. For details of the directives necessary to configure user authentication in httpd see the Apache manual, which is part of the Apache distribution or can be found at http://httpd.apache.org/. OPTIONS -b Use batch mode; i.e., get the password from the command line rather than prompting for it. This option should be used with extreme care, since the password is clearly visible on the command line. For script use see the -i option. Available in 2.4.4 and later. -i Read the password from stdin without verification (for script usage). -c Create the passwdfile. If passwdfile already exists, it is rewritten and truncated. This option cannot be combined with the -n option. -n Display the results on standard output rather than updating a file. This is useful for generating password records acceptable to Apache for inclusion in non-text data stores. This option changes the syntax of the command line, since the passwdfile argument (usually the first one) is omitted. It cannot be combined with the -c option. -m Use MD5 encryption for passwords. This is the default (since version 2.2.18).
Вот и всё. Вы успешно создали и настроили файл .htpasswd в Ubuntu 24.04. Конечно, вам не обязательно делать это самостоятельно. Если у вас возникли трудности с защитой вашего сайта с помощью HTTP-аутентификации, вам нужно только зарегистрироваться на одном из наших планов Linux VPS с NVMe и отправить запрос в службу поддержки. Наши администраторы помогут вам с любым аспектом защиты вашего сайта. Не стесняйтесь обращаться к нам. Мы доступны круглосуточно.
PS. Если вам понравился этот пост о создании и использовании файла .htpasswd, пожалуйста, поделитесь им со своими друзьями в социальных сетях или просто оставьте комментарий в разделе комментариев. Спасибо.