<-
Apache > HTTP Server > Documentation > Version 2.0 > How-To / Tutorials

установление подлинности, Разрешение и Контроль Доступа

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

top

Related Modules and Directives

top

Introduction

если Вы будете иметь информацию относительно вашего вебсайта, который является чувствительным или намеченным для только маленькой группы людей, то методы в этой статье помогут Вам удостоверяться, что люди, которые видят те страницы, - люди, что Вы хотели видеть их.

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

top

The Prerequisites

директивы, обсужденные в этой статье будут должны пойти любой в вашем главном файле конфигурации сервера (типично в a <Directory> секция), или во в-справочник файлах конфигурации ( .htaccess файлы).

если Вы планируете использовать .htaccess файлы, Вы будете должны иметь конфигурацию сервера, которая разрешает помещать опознавательные директивы в эти файлы. Это сделано с AllowOverride директива, которая определяет, какие директивы, если таковые вообще имеются, могут быть помещены во в-справочник файлы конфигурации.

так как мы говорим здесь об установлении подлинности, Вы будете нуждаться AllowOverride директива как следующее:

AllowOverride AuthConfig

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

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

top

Getting it working

вот - основы пароля, защищая справочник на вашем сервере.

Вы будете должны создать файл пароля. Этот файл должен быть помещен куда-нибудь не доступный от сети. Это - то, так, чтобы люди не могли загрузить файл пароля. Например, если из ваших документов служат /usr/local/apache/htdocs Вы могли бы хотеть вставить файл (ы) пароля /usr/local/apache/passwd .

чтобы создавать файл, используйте htpasswd полезность, которая шла с Apache. Это будет расположено в bin справочник того, везде, где Вы устанавливали Apacheа. Чтобы создавать файл, напечатайте:

htpasswd -c /usr/local/apache/passwd/passwords rbowen

htpasswd спросит у Вас пароль, и затем попросит, чтобы Вы напечатали это снова, чтобы подтвердить это:

# htpasswd -c /usr/local/apache/passwd/passwords rbowen
New password: mypassword
Re-type new password: mypassword
Adding password for user rbowen

если htpasswd не находится в вашей дорожке, конечно Вы должны будете напечатать полную дорожку к файлу, чтобы заставить это бежать. На моем сервере, это расположено в /usr/local/apache/bin/htpasswd

Затем, Вы будете должны формировать сервер, чтобы просить пароль и говорить сервер, каким пользователям разрешают доступ. Вы можете сделать это любой, редактируя httpd.conf файл или использование .htaccess файл. Например, если Вы желаете защитить справочник /usr/local/apache/htdocs/secret , Вы можете использовать следующие директивы, любой поместил в файле /usr/local/apache/htdocs/secret/.htaccess , или помещенный в httpd.conf в <Directory /usr/local/apache/apache/htdocs/secret> секция.

AuthType Basic
AuthName "Restricted Files"
AuthUserFile /usr/local/apache/passwd/passwords
Require user rbowen

давайте исследовать каждую из тех директив индивидуально. AuthType директива выбирает тот метод, который используется, чтобы подтвердить подлинность пользователя. Самый общий метод Basic , и это - метод, осуществленный mod_auth . важно знать, однако, что Базовая аутентификация посылает пароль от клиента к незашифрованному браузеру. Этот метод не должен поэтому использоваться для очень уязвимых данных. Апач поддерживает один другой опознавательный метод: AuthType Digest . этот метод осуществлен mod_auth_digest и намного более безопасно. Только новые версии клиентов, как известно, поддерживают установление подлинности Обзора.

AuthName директива устанавливает царство использоваться в установлении подлинности. Царство служит двум главным функциям. Сначала, клиент часто представляет эту информацию пользователю как часть диалогового окна пароля. Во вторых, это используется клиентом, чтобы определить, какой пароль посылать данный подтверждал подлинность области.

Так, например, как только клиент подтвердил подлинность в "Restricted Files" область, это автоматически повторит тот же самый пароль для любой области на том же самом сервере, который отмечен с "Restricted Files" царство. Поэтому, Вы можете препятствовать пользователю быть побужденным не раз для пароля, позволяя многократным ограниченным областям разделить то же самое царство. Конечно, для соображений безопасности, клиент будет всегда должен спросить снова относительно пароля всякий раз, когда hostname сервера изменяется.

AuthUserFile директива устанавливает дорожку к файлу пароля, с которым мы только создали htpasswd . если Вы имеете большое количество пользователей, это может весьма не спешить перерывать простой файл текста, чтобы подтвердить подлинность пользователя на каждом запросе. Апач также имеет способность хранить пользовательскую информацию в быстрых файлах базы данных. mod_auth_dbm модуль обеспечивает AuthDBMUserFile директива. Эти файлы могут быть созданы и управляться с dbmmanage программа. Много других типов опознавательных вариантов доступны от модулей третьего лица в Apache Modules Database .

наконец, Require директива обеспечивает часть разрешения процесса, устанавливая пользователя, которому позволяют получить доступ к этой области сервера. В следующей секции, мы обсуждаем различные способы использовать Require директива.

top

Letting more than one person in

директивы выше только позволенный один человек (определенно кто - то с именем пользователя rbowen ) в справочник. В большинстве случаев, Вы будете хотеть впустить больше чем одного человека. Это - то, где AuthGroupFile входит.

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

GroupName: rbowen dpitts sungo rshersey

это - только список членов группы в длинной линии, отделенной местами.

чтобы добавлять пользователя к вашему уже существующему файлу пароля, напечатайте:

htpasswd /usr/local/apache/passwd/passwords dpitts

Вы получите тот же самый ответ как прежде, но это будет приложено к существующему файлу, вместо того, чтобы создать новый файл. (Это- -c это заставляет это создать новый файл пароля).

теперь, Вы должны изменить ваш .htaccess файл, чтобы быть похожий на следующее:

AuthType Basic
AuthName "By Invitation Only"
AuthUserFile /usr/local/apache/passwd/passwords
AuthGroupFile /usr/local/apache/passwd/groups
Require group GroupName

теперь, любой, который перечислен в группе GroupName , и имеет вход в password файл, будет впущен, если они напечатают правильный пароль.

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

Require valid-user

Используя это, а не Require user rbowen линия позволит, что любой в этом перечислен в файле пароля, и кто правильно входит в их пароль. Вы можете даже подражать поведению группы здесь, только держа отдельный файл пароля для каждой группы. Преимущество этого подхода состоит в том, что Apache только должен проверить один файл, а не два. Неудобство - то, что Вы должны поддержать связку файлов пароля, и не забыть ссылаться на правильный в AuthUserFile директива.

top

Possible problems

из-за пути, которым определена Базовая аутентификация, ваше имя пользователя и пароль должны быть проверены каждый раз, Вы просите документ от сервера. Это - то, даже если Вы перезаряжаете ту же самую страницу, и для каждого изображения на странице (если они прибывают от защищенного справочника). Поскольку Вы можете вообразить, это замедляет вещи вниз немного. Количество, что это замедляет вещи, пропорционально размеру файла пароля, потому что это должно открыть тот файл, и спуститься по списку пользователей, пока это не добирается до вашего названия. И это должно сделать этот каждый раз, страница загружена.

последствие этого - то, что есть практический предел тому, сколько пользователей Вы можете вставить один файл пароля. Этот предел изменится в зависимости от работы вашей специфической машины сервера, но Вы можете ожидать видеть замедление, как только Вы добираетесь выше нескольких сотен записей, и можете желать рассмотреть различный опознавательный метод тогда.

top

What other neat stuff can I do?

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

Allow и Deny директивы позволяют Вам позволять и отрицать доступ, основанный на названии хозяина, или принимать гостей за адресом, машины, прося документ. Order директива идет взявшись за руки с этими двумя, и говорит Apacheа в который заказ применить фильтры.

использование этих директив:

Allow from address

где адрес является IP адресом (или частичный IP адрес) или полностью компетентное название области (или частичное название области); Вы можете обеспечить многократные адреса или названия области, если желательно.

например, если Вы имеете кого - то spamming ваша доска для сообщений, и Вы хотите не пустить их, Вы могли сделать следующее:

Deny from 10.252.46.165

посетители, приезжающие от того адреса не будут в состоянии видеть содержание, покрытое в соответствии с этой директивой. Если, взамен, Вы имеете название машины, а не IP адрес, Вы можете использовать это.

Deny from host.example.com

и, если Вы хотели бы блокировать доступ от всей области, Вы можете определить только часть имени: адреса или области

Deny from 192.168.205
Deny from phishers.example.com moreidiots.example
Deny from ke

Используя Order позволит Вам убеждаться, что Вы фактически ограничиваете вещи группой, которую Вы хотите впустить, объединяясь a Deny и Allow директива:

Order deny,allow
Deny from all
Allow from dev.example.com

внесение в список только Allow директива не сделала бы то, что Вы хотите, потому что это позволит людям от того хозяина в, в дополнение к впущению каждого. То, что Вы хотите, должно позволить только те люди в.

top

More information

Вы должны также прочитать документацию для mod_auth и mod_access которые содержат еще немного информации о как это все работы.