Организация защиты Apache
Изменение прав доступа к некоторым важным файлам и каталогам для вашего веб сервера
Когда вы инсталлируете Apache на вашем сервере, некоторые файлы и каталоги имеют слишком много прав установленных по умолчанию. Двоичная программа “httpd” может быть установлена в режим только для чтения пользователю “root”, и исполнения для владельца, группы и других пользователей. Каталоги “/etc/httpd/conf” и “/var/log/httpd” не должны быть открыты для чтения, записи и исполнения для других людей.
[root@deep /]# chmod 511 /usr/sbin/httpd
[root@deep /]# chmod 750 /etc/httpd/conf/
[root@deep /]# chmod 750 /var/log/httpd/
Автоматическая индексация
Если вы включили автоматическую индексацию каталогов в вашем конфигурационном файле, (IndexOptions в httpd.conf), тогда вы имеете проблему в безопасности, так как любой запрос к каталогу, не имеющему индексного файла, вызовет создания индекса всего того, что находится в каталоге. Во многих случаях, вы можете хотеть, чтобы пользователи смотрели файлы, которые вы специально создали для этого. Для отключения этой возможности, вам нужно удалить право на чтение из каталога DocumentRoot (но не файлов внутри него).
[root@deep /]# cd /home/httpd/
[root@deep httpd]# chmod 311 ona
[root@deep httpd]# ls -la
d-wx--x--x 13 webadmin webadmin 1024 Jul 28 08:12 ona
Сейчас, после этой модификации, любой запрос к защищенному каталогу должен получить сообщение об ошибке:
Forbidden
You don't have permission to access “/ona/” on this server.
ЗАМЕЧАНИЕ. “ona” – это DocumentRoot (каталог в котором вы храните ваши документы).
Создание файла с паролями .dbmpasswd для аутентификации пользователей.
Этот шаг необходим если вы планируете использовать аутентификацию пользователей для доступа к файлам на вашем веб сервере. В Apache существует много опций для защиты вашего сайта именами и паролями.
Шаг 1
Утилита “dbmmanage” из Apache может быть использована для создания и обновления имен и паролей HTTP пользователей. Этот метод использует DBM формат файла, который представляет из себя наиболее быстрый механизм, когда необходимо управлять тысячью пользователями в файле с паролями. Первое, необходимо изменить права доступа к этой программе на (0750/-rwxr-x- --), запись только для “root”, чтение и исполнение для группы и ничего для других пользователей.
Для изменнеия прав доступа используйте следующую команду:
[root@deep /]# chmod 750 /usr/bin/dbmmanage
Для создания имени пользователя и пароля используйте команду:
[root@deep /]# /usr/bin/dbmmanage /etc/httpd/.dbmpasswd adduser username
New password:
Re-type new password:
User username added with password encrypted to l4jrdAL9MH0K.
где </etc/httpd> это месторасположение файла с паролями, <.dbmpasswd>
- имя файла с паролями и <username> имя пользователя, которое мы хотим добавить в “.dbmpasswd”.
Шаг 2
Если вы используете утилиту “dbmmanage” для создания паролей и имен пользователей, не забудьте включить в ваш конфигурационный файл “/etc/httpd/conf/httpd.conf” информацию о части вашего веб сервера, которую вы хотите защитить аутентификацией пользователей по паролю:
Редактируйте файл httpd.conf (vi /etc/httpd/conf/httpd.conf) и добавьте следующие строки для защиты “приватного” каталога вашего веб сервера “ona”: <Directory "/home/httpd/ona/private">
Options None AllowOverride AuthConfig AuthName "restricted stuff" AuthType Basic AuthDBUserFile /etc/httpd/.dbmpasswd require valid-user </Directory>
Путь </home/httpd/ona/private> определяет защищаемый каталог, а </etc/httpd/.dbmpasswd>
определяет месторасположение файла с паролями. ЗАМЕЧАНИЕ. Модуль аутентификации по DB файлам с паролями вы должны включить во время конфигурирования вашего веб сервера Apache, использовав параметр “--add-module=src/modules/standard/mod_auth_db.c”. Смотрите документацию на Apache для большей информации.
Шаг 3
Вы должны перезагрузить веб сервер, чтобы изменения вступили в силу: [root@deep /]# /etc/rc.d/init.d/httpd restart Shutting down http: [ OK ] Starting httpd: [ OK ]
Шаг 4
В заключение, мы должны тестировать новый защищаемый каталог (private). Для проверки введите в окне броузера следующий адрес: http://my-web- server/private/. <my-web-server> - адрес вашего веб сервера, </private/> - это каталог, который вы защищаете.
Иммунизация важного конфигурационного файла “httpd.conf”
Как мы уже знаем, бит “постоянства” может быть использован для предотвращения удаления, переписывания или создания символической ссылки к файлу. Так как ваш файл “httpd.conf” уже настроен, то его можно защитить подобным битом:
[root@deep /]# chattr +i /etc/httpd/conf/httpd.conf