Настройка PAM авторизации в защищенном Apache
Как уже упоминалось в одной из наших предыдущих заметок, в состав Astra Linux Special Edition входит защищенный комплекс программ гипертекстовой обработки данных.
В качестве веб-сервера туда включен Apache2, который доработан с целью улучшения безопасности. В данной заметке мы коротко опишем как настроить данный веб-сервер с использованием PAM авторизации.
aptitude install apache2 libapache2-mod-auth-pam
NameVirtualHost *:80 Listen 80
ServerAdmin webmaster@localhost ServerName имясервера DocumentRoot /var/www/ AuthPAM_Enabled on AuthType Basic AuthName "PAM authentication" require valid-user Options Indexes FollowSymLinks MultiViews AllowOverride None ErrorLog /var/log/apache2/error.log LogLevel debug CustomLog /var/log/apache2/access.log common
a2enmod auth_pam a2ensite имя_файла_конфигурации service apache2 reload
usermod -a -G shadow www-data setfacl -d -m u:www-data:r /etc/parsec/macdb setfacl -R -m u:www-data:r /etc/parsec/macdb setfacl -m u:www-data:rx /etc/parsec/macdb
usermac -c 0:0 имя_пользователя_под_которым_будем_заходить
На очереди рассказ про настройку kerberos авторизации. Stay tuned!
P.S. Смотрите также нашу статью «Веб-приложения в защищённой среде» и вопросы посетителей, касающиеся Apache.
39 комментариев
Интересная заметка. Проверил, действительно работает. Значит ли это, что в качестве аутентификации можно использовать пользователей домена. И, есть ли возможность использовать эту аутентификацию на PHP?
Пользователей ALD не получится использовать, по крайней мере без танцев с бубном, если нужно ходить ald’шными, то тут самое оно это керберосная авторизация….постараюсь написать в ближайшее время.
Про php:
1. Повторяем пункты из статьи
2. aptitue install libapache2-mod-php5
3. nano /var/www/test.php
4. вводим, например:
# test.php
5. вводим в браузере имясервера/test.php
6. профит P.S. А если имелся ввиду php-auth-pam….то это скучная история.
Настройка web-сервера на Astra Linux SE 1.5
Web-сервер Apache2, входящий в состав Astra Linux SE 1.5 Smolensk, не допускает возможности анонимного использования ресурсов web-сервера и требует обязательной настройки авторизации пользователей.
Для обеспечения нормальной работы пользователя с сетевыми сервисами должны быть явно заданы диапазоны его мандатных уровней и категорий, даже если ему не доступны уровни и категории выше 0.
После установки сервера необходимо установить пакет libapache2-mod-auth-pam . После этого сервер настроен и готов к приему запросов на всех сетевых интерфейсах на 80 порту. Если по каким-то причинам он не работоспособен, следует проверить минимально необходимые настройки сервера.
В файле /etc/apache2/ports.conf должны быть указаны параметры:
NameVirtualHost *:80 Listen 80
В каталоге /etc/apache2/sites-available должны находиться файлы с настройками виртуальных хостов и как минимум один из них должен быть разрешен к использованию командой:
В команде необходимо использовать только имя файла (без указания полного пути).
Минимальное содержимое таких файлов с конфигурациями виртуальных хостов выглядит следующим образом (пример для аутентификации через PAM):
ServerAdmin webmaster@localhost ServerName server.domain.name AuthPAM_Enabled on AuthType Basic AuthName "PAM authentication" require valid-user DocumentRoot /var/www/ Options Indexes FollowSymLinks MultiViews AllowOverride None ErrorLog /var/log/apache2/error.log LogLevel warn CustomLog /var/log/apache2/access.log combined
Если не настроена аутентификация через Kerberos, то для всех ресурсов должна использоваться аутентификация и авторизация через PAM, при этом будет использоваться пользовательская БД, прописанная в настройках ОС. Для выполнения аутентификации и авторизации через PAM должен быть установлен пакет libapache2-mod-auth-pam и выполнена следующая команда:
Логин и пароль пользователя будут передаваться от пользователя к серверу в открытом виде с использованием метода аутентификации Basic.
Для корректного функционирования авторизации через PAM пользователю, от которого работает web-сервер (по умолчанию — www-data ), необходимо выдать права на чтение информации из БД пользователей и сведений о мандатных метках:
# usermod -a -G shadow www-data # setfacl -d -m u:www-data:r /etc/parsec/macdb # setfacl -R -m u:www-data:r /etc/parsec/macdb # setfacl -m u:www-data:rx /etc/parsec/macdb
Если установлен модуль web-сервера Apache2 auth_kerb из пакета libapache2-mod-auth-kerb для аутентификации через Kerberos, нужно отключить его использование при помощи команды:
После окончания правки конфигурационных файлов необходимо перезапустить сервер командой:
ДОКУМЕНТАЦИЯ: ОПЕРАЦИОННАЯ СИСТЕМА СПЕЦИАЛЬНОГО НАЗНАЧЕНИЯ «ASTRA LINUX SPECIAL EDITION». Руководство администратора. Часть 1 (РУСБ.10015-01 95 01-1) Раздел 12. ЗАЩИЩЕННЫЙ КОМПЛЕКС ПРОГРАММ ГИПЕРТЕКСТОВОЙ ОБРАБОТКИ ДАННЫХ.
Настройка Apache2 в Astra Linux
Сразу после установки сервер настроен и готов к приему запросов на всех сетевых интерфейсах на 80 порту. Если по каким-то причинам он не работоспособен, следует проверить минимально необходимые настройки сервера. В файле /etc/apache2/ports.conf должны быть указаны параметры:
NameVirtualHost *:80
Listen 80
В каталоге /etc/apache2/sites-available должны находиться файлы с настройками виртуальных хостов и как минимум один из них должен быть разрешен к использованию командой:
a2ensite config_filename
Минимальное содержимое таких файлов с конфигурациями виртуальных хостов выглядит следующим образом:
ServerAdmin webmaster@localhost
ServerName server.domain.name
DocumentRoot /path/to/root/dir/
Options Indexes FollowSymLinks MultiViews
AllowOverride None
ErrorLog /var/log/apache2/error.log
LogLevel warn
CustomLog /var/log/apache2/access.log combined
После окончания правки конфигурационных файлов необходимо перезапустить сервер командой:
/etc/init.d/apache2 restart
ВНИМАНИЕ! Для обеспечения нормальной работы пользователя с сетевыми сервисами должны быть явно заданы диапазоны его мандатных уровней и категорий с помощью соответствующих утилит, даже если ему не доступны уровни и категории выше 0.
Настройка авторизации
Если не настроена авторизация через Kerberos, по умолчанию для всех ресурсов будет использоваться авторизация через PAM, при этом будет использоваться пользовательская БД, прописанная в настройках ОС. Логин и пароль пользователя будут передаваться от пользователя к серверу в открытом виде с использованием метода аутентификации Basic. Для корректного функционирования авторизации через PAM пользователю, от которого работает web-сервер (по умолчанию — www-data), необходимо выдать права на чтение информации из БД пользователей и сведений о мандатных метках. Например, добавить права на чтение файла /etc/shadow:
usermod -a -G shadow www-data
и права на чтение каталога /etc/parsec/macdb:
setfacl -d -m u:www-data:r /etc/parsec/macdb
setfacl -R -m u:www-data:r /etc/parsec/macdb
setfacl -m u:www-data:rx /etc/parsec/macdb
Настройка web-сервера Apache2 в ALD
Для обеспечения совместной работы web-сервера Apache 2.2 с ALD необходимо:
– наличие в системе, на которой функционирует web-сервер, установленного пакета клиента ALD — ald-client; – разрешение имен должно быть настроено таким образом, чтобы имя системы разрешалось, в первую очередь, как полное имя (например, myserver.example.ru); – клиент ALD должен быть настроен на используемый ALD домен; – в системе должен быть установлен модуль web-сервера Apache 2.2 auth_kerb из пакета libapache2-mod-auth-kerb.
Наличие модуля web-сервера Apache 2.2 auth_kerb предоставляет возможность организации совместной работы с ALD с использованием для аутентификации пользователей посредством Kerberos метода GSSAPI. Для проведения операций по настройке ALD и администрированию Kerberos необходимо знание паролей администраторов ALD и Kerberos. Для обеспечения возможности работы web-сервера Apache 2.2 с ALD необходимо:
- активировать модуль web-сервера Apache 2.2 auth_kerb при помощи команды:
- в конфигурационных файлах виртуальных хостов web-сервера Apache 2.2 для областей, требующих авторизации, указать:
- создать в БД ALD с помощью утилиты администрирования ALD принципала, соответствующего настраиваемому web-серверу Apache. Принципал создается с автоматически сгенерированным случайным ключом:
- ввести созданного принципала в группу сервисов mac, используя следующую команду:
- создать файл ключа Kerberos для web-сервера Apache с помощью утилиты администрирования ALD ald-client, используя следующую команду:
Полученный файл должен быть доступен web-серверу Apache по пути, указанному в конфигурационном параметре Krb5Keytab (в данном случае — /etc/apache2/keytab). Права доступа к этому файлу должны позволять читать его пользователю, от имени которого работает web-сервер Apache (как правило, владельцем файла назначается пользователь www-data);
- сменить владельца полученного на предыдущем шаге файла keytab на пользователя www-data, выполнив следующую команду:
- сделать файл /etc/apache2/keytab доступным на чтение для остальных пользователей:
- перезапустить web-сервер Apache, выполнив команду:
Настройка связки Apache + PHP + ALD на Astra Linux SE 1.5
В предыдущей статье была описана настройка ALD на Astra Linux SE 1.5, поэтому все шаги связанные с подготовкой ALD не будут описываться.
Настройка Apache для аутентификации в домене
Если не настроена авторизация через Kerberos, по умолчанию для всех ресурсов будет использоваться авторизация через PAM, при этом будет использоваться пользовательская БД, прописанная в настройках ОС. Логин и пароль пользователя будут передаваться от пользователя к серверу в открытом виде с использованием метода аутентификации Basic. Для корректного функционирования авторизации через PAM пользователю, от которого работает web-сервер (по умолчанию — www-data), необходимо выдать права на чтение информации из БД пользователей и сведений о мандатных метках. Например, добавить права на чтение файла /etc/shadow :
Установим требуемый пакет:
Отключим метод аутентификации PAM:
Активируем метод Kerberos:
Отредактируем конфигурационной файл основного сайта
sudo nano -Y sh /etc/apache2/sites-available/default
Создадим в БД ALD с помощью утилиты администрирования ALD принципала, соответствующего нашему web-серверу Apache. Принципал создается с автоматически сгенерированным случайным ключом
На сервере созданного принципала добавим в группу сервисов mac:
Назначим владельцем файла системного пользователя www-data:
Разрешим чтение остальным:
Пробный первый вход на сайт. для этого включим логирование и попробуем.
Для их исключения в браузере пользователя должен поддерживать аутентификацию negotiate . В Mozilla Firefox в настройках, доступных по адресу about:config, необходимо указать, для каких серверов доступна аутентификация negotiate . Для выполнения данной настройки необходимо задать маски доменов или в общем случае все http- и https соединения вставив, например, значение
Повторяем попытку открытия и все работает! На этом настройка закончена, но настройки браузера придется повторить на всех используемых АРМ.