Лабораторная работа №1. Конфигурирование и администрирование web-сервера (на примере web-сервера Apache) Порядок выполнения лабораторной работы: 1. Создать каталог [диск с меткой User]:\infocom. 2. Установить web-сервер Apache в каталог [диск с меткой User]:\infocom\Apache2.2 как консольное приложение, а не как сервис. 3. Запустить web-сервер (Пуск/Все программы/Apache HTTP Server 2.2/Control Apache Server/Start Apache in Console). Проверить правильность настройки установленного web-сервера, набрав в строке адреса браузера http://localhost:8080. 4. Если web-сервер не запускается, посмотреть причину незапуска в файле [диск с меткой User]:\infocom\Apache2.2\logs\error.log 5. Для остановки web-сервера использовать комбинацию клавиш Ctrl+C. 6. Ознакомиться с документацией по Apache. Для этого в файле httpd.conf убрать комментарий в строке с директивой Include conf/extra/httpd-manual.conf. Документация будет доступна по адресу http://localhost:8080/manual 7. Создать два виртуальных хоста, основанные на имени (несколько хостов на одном IP-адресе 127.0.0.1), настроив их на разные порты, например, 8081 и 8082. Расположить корневые каталоги документов хостов соответственно в [диск с меткой User]:\infocom\vh1 и [диск с меткой User]:\infocom\vht2. 8. Файлы для регистрации доступа и ошибок расположить в [диск с меткой User]:\infocom\vhlogs\access.log и [диск с меткой User]:\infocom\vhlogs\error.log. 9. Создать файлы с описанием групп пользователей и отдельных пользователей, и расположить их в [диск с меткой User]:\infocom\vhsecurity\groups и [диск с меткой User]:\infocom\vhsecurity\users соответственно. При настройке виртуальных хостов изменить, при необходимости, настройки для корневого каталога web-сервера. 10. В корневом каталоге для документов виртуального хоста vh1 создать несколько каталогов и файлов. Определить различные права доступа к различным каталогам и файлам: – доступ разрешен всем; – доступ разрешен отдельным пользователям; – доступ разрешен одной группе пользователей; – доступ разрешен всем зарегистрированным пользователям; – доступ запрещен всем. 11. Перенести определение прав доступа к одному из каталогов и одному из файлов в файл .htaccess (именовать файл можно с помощью любого файлового менеджера или с помощью командной строки Windows), расположенный непосредственно в каталоге, для которого определяются права доступа. 12. В корневом каталоге для документов виртуального хоста vh2 организовать расширенную индексацию на основе файла [диск с меткой User]:\infocom\Apache2.2\conf\extra\httpd-autoindex.conf. 13. Удалить Apache (Пуск/Панель управления/Установка и удаление программ). 14. Удалить каталог [диск с меткой User]:\infocom. Содержание отчета (отчет в электронном виде, имя файла с отчетом – АМ-000 Иванов И.И.): титульный лист (один для всех лабораторных работ,); задание на лабораторную работу №1; дерево созданных каталогов; файл конфигурации [диск с меткой User]:\infocom\Apache2.2\conf\extra\httpd-vhosts.conf; файлы с именами и группами пользователей; файл .htaccess; файл конфигурации [диск с меткой User]:\infocom\Apache2.2\conf\extra\httpdautoindex.conf выводы по работе. Методические указания: Web-сервер Apache Apache – один из широко используемых в Internet web-серверов. В настоящее время программное обеспечение Apache установлено более чем на половине серверов мира. Для управления web-сервером Apache используется основной файл конфигурации httpd.conf. В нем с помощью директив определяется, как web-сервер должен работать с локальными ресурсами, отвечая на запрос, указывается, с какими файлами пользователи могут выполнять определенные операции. Настройка конфигурационного файла web-сервера – самый ответственный шаг при его установке. Web-сервер перечитывает конфигурационный файл при запуске. Если web-сервер работает, то при изменении файла конфигурации следует перезапустить Apache. В файле httpd.conf содержатся директивы, которые управляют работой Apache в целом, влияют на общее функционирование Apache, определяют параметры основного webсервера, отвечающего на запросы, почти все эти директивы могут быть использованы для настройки виртуальных хостов. В конце файла httpd.conf перечислены директивы Include, позволяющие подключить дополнительные конфигурационные файлы. Виртуальные хосты Виртуальные хосты – несколько web-сайтов с различными именами, использующие один и тот же IP-адрес, работающие под управлением одного экземпляра web-сервера Apache. Сферы применения виртуальных хостов: создание отдельных web-сайтов со своими адресами для различных компаний, организаций и индивидуальных пользователей; организация общедоступного и внутреннего web-сайтов в виде двух виртуальных хостов; использование виртуального хоста для проверки или разработки web-сайта. Директива NameVirtualHost NameVirtualHost *:80 Позволяет создавать виртуальные хосты, основанные на имени (несколько web-сайтов на одном IP-адресе.) Директива VirtualHost Блочная директива, позволяющая сгруппировать директивы, определяющие режимы работы виртуального хоста. <VirtualHost *:80> … </VirtualHost> Пример: создать виртуальный хост test. <VirtualHost *:80> ServerName test ServerAdmin admin@test DocumentRoot e:/infocom/test/www CustomLog e:/infocom/access.log common ErrorLog e:/infocom/error.log </VirtualHost> Для каждого виртуального хоста используется своя директива DocumentRoot, так как именно по этой причине и создаются виртуальные хосты. Файлы регистрации доступа и ошибок могут быть одними и теми же. Директивы AuthType, AuthName, AuthGroupFile, AuthUserFile Для организации доступа к каталогам и файлам используются следующие директивы. AuthType type Задает тип контроля полномочий. Возможное значение – Basic. AuthName realm Задает область (realm), в которой действительны имена и пароли пользователей. Каждая пара имя/пароль действует в определенной области. Возможное значение – Test. AuthGroupFile file_name Задает имя файла, в котором содержится информация об именах групп и именах пользователей, входящих в эти группы. Этот файл текстовый и имеет следующий формат: name_group1: name_user11 name_user12 … name_group2: name_user21 name_user22 … … AuthUserFile file_name Задает имя файла, в котором содержится информация об именах пользователей и их паролях. Пароли хранятся в зашифрованном виде. Этот файл текстовый и имеет следующий формат: name_user1: password1 name_user2: password2 … Пример: создать файлы groups и users с информацией о группах и пользователях. Имена файлов выбираются произвольно, как и их расположение, единственное соображение безопасности заключается в том, что каталог с файлами лучше хранить выше каталога, указанного в директиве DocumentRoot. Файл groups adm: admin group1: anna alex group2: user1 user2 user3 Файл groups может быть создан с помощью простейшего текстового редактора Файл users admin:$apr1$yd5.....$Bkv.cPIQk/L7EOF2d2DNO. anna:$apr1$Ze5.....$k/uC6j.ysELGdCK66BD6v0 alex:$apr1$Gf5.....$TZUpPFixB0h4pwvpfRkxl0 user1:$apr1$Sj5.....$HBg8Io5hbm/9quebHF3O01 user2:$apr1$Og5.....$WKYIDjTsbk.J.PDIhXu5x1 user3:$apr1$Xi5.....$AfQzJlIxyjiFh6KX23cE30 Для создания и изменения файла users используется Apache-утилита ..\apache\bin\htpasswd.exe. Для получения справочной информации ее можно запустить с ключом -?. Предварительно создается пустой файл. Для добавления в файл имен пользователей и их паролей используется команда …\htpasswd.exe file_name user_name. После создания файлов groups и users в блочную директиву <VirtualHost> можно добавить следующие директивы: <Directory …> AuthType Basic AuthName Test AuthGroupFile e:/infocom/groups AuthUserFile e:/infocom/users </Directory> Директива Require После создания файлов groups и users можно установить права доступа к каталогам и файлам для всех пользователей, для групп пользователей, для отдельных пользователей или запретить доступ всем пользователям. Require [user name_user1 name_user2 …] доступ разрешен всем перечисленным пользователям Require [group name_group1 name_ group2 …] доступ разрешен всем пользователям из групп, перечисленных в файле groups Require [valid-user] доступ разрешен всем пользователям, перечисленным в файле users Пример: Require valid-user #Require user anna user1 #Require group adm Если последовательно убирать комментарии, то будет разрешен доступ или всем зарегистрированным пользователям, или пользователям anna и user1, или пользователям, принадлежащим группе adm Директива Require разрешает доступ пользователям на персональной основе. Для разрешения/запрещения доступа всем пользователям или из конкретных ip-адресов, хостов, доменов используются директивы Allow from и Deny from. Эти директивы могут иметь следующие параметры: all – доступ разрешен/запрещен всем, имя хоста – доступ разрешен/запрещен только данному хосту, имя домена – доступ разрешен/запрещен только хостам из данного домена. Порядок, в котором применяются директивы Allow from и Deny from, определяется не порядком их следования в конфигурационном файле, а директивой Order. По умолчанию сначала выполняется директива Deny from, а затем Allow from. Если клиент упомянут в директиве Deny from, ему запрещается доступ при условии, что он не упомянут в Allow from. Если клиент не назван ни в одной из этих директив, ему доступ разрешается. Порядок можно изменить, использовав директиву Order allow,deny. Это значит, что доступ клиенту, который указан в директиве Allow from разрешен, если только он не упомянут в Deny from. Если ни в одной из этих директив этот клиент не указан, доступ ему запрещается. Директива Files <Files name_file> … </Files> Эта директива используется для организации доступа к файлу. Пример: каталог www содержит файл secret.html <Directory …/www> AuthType Basic Auth Test AuthGroupFile …/groups AuthUserFile …/users Require valid-user <Files secret.html> Require user anna user1 </Files> </Directory> Директива AccessFileName При изменении прав доступа в файле httpd.conf каждый раз требуется перезапускать Apache. Для того чтобы избежать перезапуска, можно поместить директивы, определяющие права доступа к каталогам и файлам непосредственно в каталог. Для определения имени файла с директивами используется директива AccessFileName. AccessFileName file_name Пример: AccessFileName htaccess Если будут изменяться директивы в файле htaccess, то это не потребует перезапуска Apache. Пример: использование файла htaccess Файл htaccess <Files secret.html> Require user anna user1 </Files> В файл htaccess также можно помещать и директивы из блочной директивы <Directory>, но только без ее указания. Директива IndexOptions В том случае, если каталог не содержит файла index.html, Apache создает файл Index of/, который в общем случае выглядит не очень хорошо. Для изменения внешнего вида можно использовать улучшенную индексацию. IndexOptions FancyIndexing Данная директива позволяет применять расширенную индексацию. Директива IndexIgnore IndexIgnore file1 file2 … Директива позволяет исключить файлы из списка. Несколько директив IndexIgnore дополняют друг друга. Пример: исключение из списка всех файлов с расширением jpg и родительского каталога (например, из соображений безопасности). <Directory …> IndexOptions FancyIndexing IndexIgnore *.jpg .. </Directory> Директива AddIcon Первый аргумент этой директивы – имя файла со значком, второй – тип файла, к которым значок следует добавить. Если в качестве второго аргумента использовать значение ^^DIRECTORY^^, то новый значок получит подкаталог. Пример: Alias “/icons” “/apache/icons” AddIcon icons/first.gif *.html AddIcon icons/second.gif ^^DIRECTORY^^ Директива AddDescription Позволяет добавить описание для определенных файлов. Пример: AddDescription “Это файлы с HTML-документами” *.html Директивы HeaderName и ReadmeName Позволяют формировать верхний и нижний колонтитулы индекса. Эти директивы имеют только один аргумент – имя файла. Для того чтобы имена файлов, указанные в директивах HeaderName и ReadmeName, не отображались в перечне, для них используется директива IndexIgnore.