Чтение онлайн

ЖАНРЫ

Linux глазами хакера

Флёнов Михаил Евгеньевич

Шрифт:

</Directory>

Внутри определения прав для директории /home устанавливается запрет на методы GET и POST.

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

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

запрет, чем потом упустить разрешение, которое позволит хакеру уничтожить мой сервер.

7.4. Создание виртуальных Web-серверов

На одном физическом сервере может работать большое количество виртуальных Web-серверов, например, www.your_name.com и www.your_company.com. Это два разных Web-сайта, но они находятся на одном сервере. Такое расположение дает нам следующие преимущества:

□ экономия денег на закупке серверов;

□ эффективное использование каналов связи, если сайты небольшие и нагрузка на сервер невысока;

□ экономия IP-адресов, лимит которых уже давно был бы исчерпан, если бы все сайты находились на выделенных серверах (с внедрением протокола IPv6 эта проблема будет стоять не так остро). Виртуальные Web-серверы могут иметь как отдельные IP-адреса, так и использовать общий адрес, а различаться будут доменными именами;

□ упрощение администрирования и контроля за безопасностью. Конфигурация Web-сервера и его защита — достаточно сложный процесс, поэтому намного легче настроить и обновлять программное обеспечение одного физического сервера, чем сотни серверов, ресурсы которых используются на 10%.

Для создания виртуального сервера используется формат:

<VirtualHost адрес:порт>

</VirtualHost>

Между этими тегами указываются параметры виртуального сервера. Вот пример описания сервера, адрес которого 192.168.1.1 и порт 80:

<VirtualHost 192.168.1.1:80>

 ServerAdmin admin@your_server.com

 DocumentRoot /var/www/your_server

 ServerName your_server.com

 ErrorLog logs/your_server.com -error_log

 CustomLog logs/your_server.com -access_log common

 <Directory /var/www/your_server/>

AllowOverride none

 </Directory>

</VirtualHost>

Рассмотрим только основные параметры, которые указываются при описании виртуального сервера:

□ 

ServerAdmin
— E-mail администратора, которому будут направляться сообщения об ошибках;

□ 

DocumentRoot
— директория, в которой расположен корневой каталог сайта;

□ 

ServerName
— имя сервера. Если оно не указано, то используется локальный IP-адрес сервера.

Директивы

ErrorLog
и
CustomLog
нам уже знакомы. После этого в нашем примере идет указание прав доступа на директорию /var/www/your_server/, которая является корнем для виртуального Web-сервера.
Разрешения можно устанавливать как внутри объявления виртуального сервера, так и вне его.

За более подробной информацией обратитесь к документации по Apache.

7.5. Замечания по безопасности

В конфигурационном файле /etc/httpd/conf/httpd.conf есть несколько директив, которые позволяют управлять безопасностью. Эти же команды можно указывать в файле .htaccess. Давайте их рассмотрим:

□ 

AuthType параметр
— тип аутентификации. В качестве параметра можно использовать одно из значений: Basic или Digest;

□ 

AuthGroupFile параметр
— файл, в котором хранится список групп пользователей;

□ 

AuthUserFile параметр
— файл, содержащий имена пользователей и пароли. Этот список лучше формировать утилитой htpasswd;

□ 

AuthAuthoritative параметр
— способ проверки прав. По умолчанию директива включена (
on
). Если директива выключена (
off
), а пользователь не указал имя, то его аутентификация осуществляется другими модулями, например по IP-адресу;

□ 

AuthDBMGroupFile
и
AuthDBMUserFile
— аналогичны
AuthGroupFile
и
AuthUserFile
, но в качестве параметра указывается файл в формате базы данных Berkley-DB.

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

7.5.1. Файлы .htaccess

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

AuthType Basic

AuthName "By Invitation Only"

AuthUserFile /pub/home/flenov/passwd

Require valid-user

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

AuthName
, отобразится в заголовке окна. На рис. 7.2 приведен пример такого окна.

Рис. 7.2. Окно запроса имени и пароля

Директива

AuthUserFile
задает файл, в котором находится база имен и паролей пользователей сайта. Последняя команда
Require
в качестве параметра использует значение
valid-user
. Это значит, что файлы в текущей директории смогут открыть только те пользователи, которые прошли аутентификацию.

Поделиться с друзьями: