Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

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

AUTH_BASIC_FAIL Linux / DevOps

Настройка HTTP Basic Auth (htpasswd) в Nginx и Apache: защита URL и API

Обновлено: 21.08.2026
  • Ошибка 401 Unauthorized при вводе корректного пароля из-за неподдерживаемого алгоритма хеширования.
  • В логах Nginx ошибка open() ".../.htpasswd" failed (13: Permission denied).
  • Необходимость закрыть доступ к Swagger, метрикам Prometheus или административной панели.

1. Установка утилиты и генерация .htpasswd файла

# Установка пакета apache2-utils / httpd-tools
apt-get install -y apache2-utils || dnf install -y httpd-tools

# Создание файла с безопасным хешированием bcrypt (-B)
mkdir -p /etc/nginx/auth
htpasswd -B -c /etc/nginx/auth/.htpasswd devops_admin

# Права доступа на чтение
chown root:www-data /etc/nginx/auth/.htpasswd
chmod 640 /etc/nginx/auth/.htpasswd

2. Настройка HTTP Basic Auth в Nginx

Добавьте директивы в целевой location:

location /admin/ {
    auth_basic "Restricted Administrator Area";
    auth_basic_user_file /etc/nginx/auth/.htpasswd;

    # Исключение для локальной офисной сети
    satisfy any;
    allow 192.168.1.0/24;
    allow 10.100.0.0/16;
    deny all;

    proxy_pass http://backend_admin;
}

3. Настройка HTTP Basic Auth в Apache HTTP Server

В блоке <Directory> или .htaccess:

<Directory "/var/www/html/admin">
    AuthType Basic
    AuthName "Restricted Administrator Area"
    AuthUserFile /etc/nginx/auth/.htpasswd
    Require valid-user
</Directory>

4. Валидация и перезапуск

nginx -t && systemctl reload nginx || apachectl -k graceful
💡 Практика специалистов: HTTP Basic Auth передает учетные данные в заголовке Authorization в виде Base64-строки открытым текстом. Применение этой авторизации допустимо исключительно поверх шифрованного HTTPS-соединения.

Частые вопросы (FAQ)

Почему флаг -B (bcrypt) предпочтительнее стандартного crypt/MD5 в htpasswd?

Bcrypt использует медленную функцию формирования ключа с солью (cost factor), что делает подбор пароля по радужным таблицам и перебор на GPU вычислительно невозможным.

Что делает директива satisfy any в Nginx?

Она разрешает доступ клиенту, если выполнено ХОТЯ БЫ ОДНО из условий: либо клиент прошел проверку по белому IP адресу (allow), либо успешно ввел логин и пароль в HTTP Basic Auth.

Полезные материалы
Рекомендуем