Apache: Закрываем сайт.
Дата: 24/04/2005
Тема: Все, что связано с Глобальной сетью


Для посещения тех или иных разделов на некоторых сайтах требуется ввести логин и пароль. Как можно реализовать нечто подобное на собственном сайте и какие вообще есть способы ограничения доступа «людям с улицы» к части содержимого сайта?

Простым способом ограничения доступа к разделу сайта является использование стандартных средств веб-сервера Apache. Организация закрытой области на веб-узле требует наличия ряда директив в конфигурации сервера (а именно в блоке «Directory», определяющем свойства нужной нам директории, или же в файле управления доступом .htaccess, расположенном в ней). Закрыть паролем можно только целый каталог (со всеми подкаталогами, если таковые существуют), но не какой-то отдельный файл. Отметим, что разрешить в файлах .htaccess директивы, связанные с авторизацией, можно путем добавления в блок «Directory», соответствующий нужному каталогу, следующей строки:

AllowOverride +AuthConfi

Директивы для создания закрытой области

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

AuthName "Private Zone" AuthType Basic AuthUserFile путь_к_файлу_.htpasswd require valid-user

Директива AuthName определяет имя закрытой области, которое выводится в диалоге авторизации в браузере. При помощи AuthType устанавливается тип авторизации, планирующейся к использованию в каталоге. В большинстве случаев применяется метод Basic. Директива AuthUserFile определяет местонахождение файла, содержащего имена пользователей и пароли для доступа к закрытой области. Обычно файл па- ролей называют именем .htpasswd. В значении должен быть указан полный путь к файлу — чаще всего он выглядит так:

/pub/home/mywebsite/auth/.htpasswd.

Директива require указывает, кто может иметь доступ к данному каталогу. Значение valid-user говорит о том, что доступ к закрытой области могут получить все пользователи, перечисленные в файле, определенном при помощи директивы AuthUserFile, предоставив пра- вильный пароль. Помимо valid-user, могут быть использованы ключевые слова «user» или «group» с явным перечислением имен пользователей или групп, которым требуется разрешить доступ.

Размещение файла паролей

Из соображений безопасности не рекомендуется размещать файл паролей (.htpasswd) в тех директориях, которые так или иначе доступны через Веб — скажем, в пределах корня документов (этот каталог содержит в себе все веб-страницы и называется обычно www или public_ html) или в каталоге, назначенном для CGI-скриптов (usr-cgi или cgi-bin). Лучше всего, если это позволено администрацией хостинга, создать каталог (например, с названием auth,) за пределами корня документа сервера и поместить туда файл паролей.

Создание файла паролей


Файл паролей имеет такую структуру:

username1:password1 username2:password2 ... usernameN:passwordN

Для шифровки паролей часто используется криптоалгоритм MD5. Шифровка представляет собой необратимую операцию: восстановить исходный пароль по его зашифрованному виду невозможно. При проверке правильности пароля происходит зашифровка введенных пользователем символов с использованием того же криптоалгоритма, после чего результат сравнивается с образцом, хранящимся в файле паролей. Файл паролей проще подготовить утилитой htpasswd, которая входит в комплект поставки Apache (после установки размещается в директории bin). Ее, впрочем, можно найти в Интернете отдельно от сервера. В том числе в версии, скомпилированной для Windows. Утилита работает в консольном режиме. Чтобы создать файл паролей и добавить в него первого пользователя, нужно ввести примерно следующую команду:


htpasswd -bcm .htpasswd username password

Если вы не хотите вводить пароль в командной строке из соображений безопасности, откажитесь от ключа -b:

htpasswd -cm .htpasswd username

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

htpasswd -bm .htpasswd username password

Ключ -m определяет алгоритм шифрования — MD5. В Windows он используется по умолчанию. Если хочется использовать другой алгоритм, нужно применить другие ключи: -d соответствует функции CRYPT, а -s — алгоритму SHA. Пароль должен состоять не менее чем из восьми знаков. Лучше всего, если в них будут чередоваться прописные и строчные буквы с цифрами, к примеру, так: L8xo5TrDq.

Поисковикам от ворот поворот

Еще одна задача, связанная с ограничением доступа — запрет индексации тех или иных частей сайта поисковыми роботами. Самый простой способ реализовать запрет индексации — использование файла robots.txt, который помещается в корень документов сервера (он должен быть доступен по протоколу HTTP по локальному URL /robots.txt). Файл robots.txt должен содержать одну или несколько записей, разделенных пустыми строками. Каждая запись состоит из строк в формате «Название_поля: значение». Названиями полей могут быть «User-Agent» и «Disallow»; запись должна начинаться с «User-Agent» и содержать в себе хотя бы по одной строке «User-Agent» и «Disallow». Значениями User-Agent могут быть названия поисковых роботов (если их несколько, разделяются пробелами). «Звездочка» означает, что «правила поведения» относятся ко всем поисковым роботам. Значениями поля «Disallow» должны являться локальные URL, запрещенные к индексации (если их несколько, разделяются пробелами). Такой файл robots.txt запрещает к индексированию локальные URL /cgi-bin/ и /includes/ для всех поисковых роботов:

User-Agent: * Disallow: /cgi-bin/ /includes/

Индексацию всех без исключения документов сайта можно запретить, используя такой файл robots.txt:

User-Agent: * Disallow: /

ижеприведенный robots.txt никому ничего не запрещает:

User-Agent: * Disallow:

Существует еще один инструмент контроля доступа — директивы allow, deny и order модуля mod_access веб-сервера Apache, которые, в частности, позволяют закрыть доступ к тем или иным директориям для определенных хостов, но об этом — как-нибудь в следующий раз.

Источник: Журнал "CHIP"







Это статья Информационный проект Ynks.Net
http://www.ynks.net

URL этой статьи:
http://www.ynks.net/modules.php?name=News&file=article&sid=73