Пункт 101. Модуль Apache mod_auth_digest
Этот модуль реализует дайджест-аутентификацию HTTP (RFC2617) и предоставляет альтернативу, mod_auth_basic
когда пароль не передается в виде открытого текста. Однако это
не дает значительного преимущества в плане безопасности по сравнению с обычной проверкой подлинности. С другой стороны, хранилище паролей на сервере гораздо менее безопасно при дайджест-аутентификации, чем при обычной аутентификации. Таким образом, использование базовой аутентификации и шифрование всего соединения mod_ssl
— гораздо лучшая альтернатива.
Использование дайджест-аутентификации
Чтобы использовать аутентификацию MD5 Digest, настройте защищенное расположение, как показано в следующем примере:
Пример:
<Расположение "/частное/">
Дайджест AuthType
AuthName "частная область"
AuthDigestDomain "/private/" "http://mirror.my.dom/private2/"
Файл AuthDigestProvider
AuthUserFile "/web/auth/.digest_pw"
Требовать действительного пользователя
</местоположение>
AuthDigestDomain
должен перечислить местоположения, которые будут защищены этой конфигурацией.
Файл пароля, указанный в AuthUserFile
директиве, может быть создан и управляться с помощью htdigest
инструмента.
Примечание
Дайджест-аутентификация должна была быть более безопасной, чем обычная аутентификация, но больше не соответствует этой цели. Злоумышленник «человек посередине» может тривиально заставить браузер перейти на базовую аутентификацию. И даже пассивный перехватчик может взломать пароль, используя современное графическое оборудование, потому что алгоритм хэширования, используемый при дайджест-аутентификации, слишком быстр. Другая проблема заключается в том, что хранение паролей на сервере небезопасно. Содержимое украденного файла htdigest можно использовать непосредственно для дайджест-аутентификации. Поэтому mod_ssl
настоятельно рекомендуется использовать для шифрования всего соединения.
mod_auth_digest
корректно работает только на платформах, где APR поддерживает разделяемую память.
Директива AuthDigestAlgorithm
Описание: | Выбирает алгоритм, используемый для вычисления хэшей запроса и ответа при дайджест-аутентификации. |
Синтаксис: | AuthDigestAlgorithm MD5|MD5-sess |
По умолчанию: | AuthDigestAlgorithm MD5 |
Контекст: | каталог, .htaccess |
Переопределить: | Аутконфиг |
Положение дел: | Расширение |
Модуль: | mod_auth_digest |
Директива AuthDigestAlgorithm
выбирает алгоритм, используемый для вычисления хэшей запроса и ответа.
MD5-sess
еще не правильно реализован.
Директива AuthDigestDomain
Описание: | URI, которые находятся в одном и том же пространстве защиты для дайджест-аутентификации. |
Синтаксис: | AuthDigestDomain URI [URI] ... |
Контекст: | каталог, .htaccess |
Переопределить: | Аутконфиг |
Положение дел: | Расширение |
Модуль: | mod_auth_digest |
Директива AuthDigestDomain
позволяет вам указать один или несколько URI, которые находятся в одном и том же пространстве защиты ( т. е . использовать ту же область и информацию об имени пользователя/пароле). Указанные URI являются префиксами; клиент будет считать, что все URI «ниже» также защищены одним и тем же именем пользователя/паролем. URI могут быть либо абсолютными URI ( т. е.
включая схему, хост, порт и т. д.), либо относительными URI.
Эта директива всегда должна быть указана и содержать как минимум (набор) корневых URI для этого пространства. Если этого не сделать, клиент будет отправлять заголовок авторизации для каждого запроса, отправленного на этот сервер.
Указанные URI также могут указывать на разные серверы, и в этом случае клиенты (которые понимают это) будут затем обмениваться информацией об имени пользователя и пароле между несколькими серверами без запроса пользователя каждый раз.
Директива AuthDigestNonceLifetime
Описание: | Как долго серверный одноразовый номер действителен |
Синтаксис: | AuthDigestNonceLifetime seconds |
По умолчанию: | AuthDigestNonceLifetime 300 |
Контекст: | каталог, .htaccess |
Переопределить: | Аутконфиг |
Положение дел: | Расширение |
Модуль: | mod_auth_digest |
Директива AuthDigestNonceLifetime
определяет, как долго серверный одноразовый номер действителен. Когда клиент связывается с сервером, используя одноразовый номер с истекшим сроком действия, сервер отправляет обратно 401 с расширением stale=true
. Если секунды больше 0, то это указывает количество времени, в течение которого одноразовый номер действителен; это, вероятно, никогда не должно быть установлено менее чем на 10 секунд. Если секунды меньше 0, то одноразовый номер никогда не истекает.
Директива AuthDigestProvider
Описание: | Устанавливает поставщика(ов) аутентификации для этого местоположения |
Синтаксис: | AuthDigestProvider provider-name
[provider-name] ... |
По умолчанию: | AuthDigestProvider file |
Контекст: | каталог, .htaccess |
Переопределить: | Аутконфиг |
Положение дел: | Расширение |
Модуль: | mod_auth_digest |
Директива AuthDigestProvider
устанавливает, какой провайдер используется для аутентификации пользователей для этого местоположения. Поставщик по умолчанию file
реализуется модулем mod_authn_file
. Убедитесь, что выбранный модуль провайдера присутствует на сервере.
См mod_authn_dbm
. mod_authn_file
,
mod_authn_dbd
и mod_authn_socache
для поставщиков.
Директива AuthDigestQop
Описание: | Определяет качество защиты для использования в дайджест-аутентификации. |
Синтаксис: | AuthDigestQop none|auth|auth-int [auth|auth-int] |
По умолчанию: | AuthDigestQop auth |
Контекст: | каталог, .htaccess |
Переопределить: | Аутконфиг |
Положение дел: | Расширение |
Модуль: | mod_auth_digest |
Директива AuthDigestQop
определяет качество защиты для использования. auth
будет выполнять только аутентификацию (имя пользователя/пароль); auth-int
это аутентификация плюс проверка целостности (также вычисляется и проверяется хэш MD5 объекта); none
заставит модуль использовать старый алгоритм дайджеста RFC-2069 (который не включает проверку целостности). Оба auth
и auth-int
могут быть указаны, и в этом случае браузер выберет, какой из них использовать. none
следует использовать только в том случае, если браузеру по какой-то причине не нравится вызов, который он получает в противном случае.
auth-int
еще не реализован.
Директива AuthDigestShmemSize
Описание: | Объем разделяемой памяти, выделяемой для отслеживания клиентов. |
Синтаксис: | AuthDigestShmemSize size |
По умолчанию: | AuthDigestShmemSize 1000 |
Контекст: | конфигурация сервера |
Положение дел: | Расширение |
Модуль: | mod_auth_digest |
Директива AuthDigestShmemSize
определяет объем разделяемой памяти, который будет выделяться при старте сервера для отслеживания клиентов. Обратите внимание, что сегмент разделяемой памяти не может быть установлен меньше, чем пространство, необходимое для отслеживания хотя бы одного клиента. Это значение зависит от вашей системы. Если вы хотите узнать точное значение, вы можете просто установить AuthDigestShmemSize
значение
0
и прочитать сообщение об ошибке после попытки запустить сервер.
Размер обычно выражается в байтах, но вы можете поставить после числа знак или , чтобы указать свое значение в килобайтах или мегабайтах. Например, все следующие директивы эквивалентны: K
M
AuthDigestShmemSize 1048576
AuthDigestShmemSize 1024K
AuthDigestShmemSize 1M