Гид по технологиям

Защита каталога Apache с помощью .htaccess и .htpasswd

• 5 min read • Серверы • Обновлено 21 Nov 2025
Защита каталога Apache: .htaccess и .htpasswd
Защита каталога Apache: .htaccess и .htpasswd

Введение

Apache — один из самых распространённых веб‑серверов. Часто требуется ограничить доступ к отдельным каталогам, запросив имя пользователя и пароль. Самый простой способ — настроить базовую HTTP‑аутентификацию с помощью файла .htaccess и файла паролей .htpasswd.

Цель этой инструкции — показать последовательность действий на Ubuntu с установленным Apache.

Что вам нужно заранее

  • Доступ по SSH к серверу с правами sudo.
  • Установленный Apache (пакет apache2 на Ubuntu).
  • Базовые команды работы с текстовым редактором (nano или vim).

Установка утилит Apache

Утилита htpasswd входит в пакет apache2-utils. Установите его командой:

sudo apt-get update
sudo apt-get install apache2-utils

Если у вас Debian/Ubuntu с другим менеджером пакетов, используйте эквивалентную команду менеджера.

Разрешение использования .htaccess

По умолчанию в некоторых установках Apache доступ к директивам из .htaccess отключён. Откройте основной конфиг Apache и найдите секцию, где задан каталог веб‑документов (по умолчанию /var/www/html):

sudo nano /etc/apache2/apache2.conf

Найдите блок, начинающийся с , и измените строку AllowOverride none на AllowOverride AuthConfig:


    Options Indexes FollowSymLinks
    AllowOverride AuthConfig
    Require all granted

Сохраните файл и закройте редактор.

Важно: если вы используете виртуальные хосты (sites-available/*.conf), можно поместить настройки аутентификации прямо в конфиг виртуального хоста вместо .htaccess. Это обычно предпочтительнее по производительности.

Создание файла паролей (.htpasswd)

Создайте файл /etc/apache2/.htpasswd и добавьте в него первого пользователя. Ключ -c создаёт новый файл:

sudo htpasswd -c /etc/apache2/.htpasswd authuser1

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

sudo htpasswd /etc/apache2/.htpasswd authuser2

Просмотреть содержимое файла (хеши будут видны, не пароли) можно так:

sudo cat /etc/apache2/.htpasswd

Дайте права на чтение учётной записи только сервису Apache (www-data на Debian/Ubuntu):

sudo chown www-data:www-data /etc/apache2/.htpasswd
sudo chmod 0660 /etc/apache2/.htpasswd

Пояснение: режим 0660 даёт чтение/запись владельцу и группе, но запрещает доступ остальным пользователям.

Настройка .htaccess в каталоге сайта

Создайте файл .htaccess в каталоге, который нужно защитить, например в корне сайта /var/www/html:

sudo nano /var/www/html/.htaccess

Добавьте в него следующие строки:

AuthType Basic
AuthName "Restricted Content"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user

Назначение директив:

  • AuthType — тип аутентификации (Basic — базовая HTTP‑аутентификация).
  • AuthName — текст, отображаемый в диалоговом окне запроса учётных данных.
  • AuthUserFile — абсолютный путь к файлу с хешами паролей.
  • Require valid-user — разрешает доступ любому пользователю из файла .htpasswd.

Сохраните .htaccess и закройте редактор.

Перезапуск Apache

Чтобы применить изменения, перезапустите Apache:

sudo systemctl restart apache2

На старых системах можно использовать init.d:

sudo /etc/init.d/apache2 restart

Тестирование

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

Запрос имени и пароля в браузере для доступа к защищённой директории Apache

При корректных учётных данных доступ откроется; при ошибке или отмене вы увидите страницу Unauthorized (401).

Страница ошибки 401 Unauthorized при неверных учётных данных

Важно: Basic‑аутентификация передаёт данные в закодированном, но не зашифрованном виде. Всегда используйте HTTPS для защиты паролей в пути передачи.

Частые проблемы и их решения

  • Ничего не запрашивается — проверьте AllowOverride и перезапустите Apache. Убедитесь, что .htaccess читается (правильные права и owner).
  • 403 Forbidden — проверьте права на сам каталог и файлы (www-data должен иметь доступ к каталогу и файлам сайта).
  • 401 Unauthorized даже с верными паролями — проверьте путь AuthUserFile (он должен быть абсолютным) и формат файла .htpasswd.
  • Модуль не загружен — убедитесь, что включены модули auth_basic и authn_file (обычно включены по умолчанию). Включить можно командой a2enmod, например:
sudo a2enmod auth_basic
sudo a2enmod authn_file
sudo systemctl restart apache2

Альтернативные подходы

  • Встраивание директив аутентификации прямо в конфиг виртуального хоста вместо .htaccess (лучше для производительности и управления).
  • Использование модулей для аутентификации по базе данных (mod_authn_dbd), LDAP (mod_authnz_ldap) или внешним провайдерам OAuth/OpenID — для централизованной аутентификации.
  • Digest‑аутентификация как более безопасная альтернатива Basic (реже используется, сложнее в настройке).

Руководство администратора — чеклист перед разворачиванием

  • Проверить наличие пакета apache2-utils.
  • Создать /etc/apache2/.htpasswd и добавить пользователей.
  • Убедиться, что права: owner www-data:www-data, mode 0660.
  • Включить AllowOverride AuthConfig для нужного каталога или прописать конфигурацию в виртуальном хосте.
  • Перезапустить Apache.
  • Проверить работу через HTTPS.

Роли:

  • Системный администратор — отвечает за установку пакетов, права и перезапуск сервиса.
  • Владелец приложения — предоставляет список пользователей и каталог для защиты.

Мини‑методология внедрения

  1. Подготовка: резервная копия apache2.conf и конфигов сайтов.
  2. Тестовая среда: выполните настройку на тестовом сервере.
  3. Развертывание: примените изменения в продакшене в нерегламентированное окно и проверьте доступ.
  4. Мониторинг: следите за логами (/var/log/apache2/error.log и access.log).

Критерии приёмки

  • При переходе в защищённый каталог браузер запрашивает логин/пароль.
  • Доступ с корректными данными осуществляется, с некорректными — возвращается 401.
  • Пароли хранятся только в /etc/apache2/.htpasswd с правами 0660 и владельцем www-data.
  • Трафик проходит по HTTPS.

Краткое резюме

Вы узнали, как настроить базовую HTTP‑аутентификацию в Apache с помощью .htaccess и .htpasswd, какие права и конфигурации нужны, и какие альтернативы стоит рассмотреть для более масштабных решений. Всегда комбинируйте защиту паролем с HTTPS — это обязательный шаг для защиты учётных данных.

FAQ

Как добавить пользователя без перезаписи существующего файла?

Используйте htpasswd без флага -c:

sudo htpasswd /etc/apache2/.htpasswd newuser

Можно ли хранить .htpasswd внутри публичного каталога сайта?

Технически можно, но это риск. Лучше держать файл вне корня сайта (например, в /etc/apache2) и ограничить права доступа.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро