- Настройка PAM авторизации в защищенном Apache
- 39 комментариев
- Astra linux web server
- Установка и настройка Nginx, PHP, MySQL
- Операционные системы Astra Linux
- Установка и настройка Apache2 на Astra Linux
- Подготовка системы
- Установка и настройка Apache2
- Настройка web-сервера
- На компьютере — контроллере домена FreeIPA
- На компьютере — web-сервере Apache2 (Часть 2)
- Проверка работы мандатных ограничений
Настройка 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….то это скучная история.
Astra linux web server
Заходим в систему под суперпользователем: Настраиваем сеть. В Astra Linux это делается также как и в Ubuntu:
* В данном примере мы настроили сетевой интерфейс eth0 (задали IP-адрес 192.168.0.15 маску 255.255.255.0 и шлюз по умолчанию 192.168.0.1) Для применения настроек необходимо перезапустить сетевую службу:
В Astra Linux по умолчанию не настроены репозитории для установки пакетов, поэтому необходимо это сделать:
Для синхронизации времени установим пакет ntpdate, синхронизируем время и настроим автоматическое задание: # apt-get install ntpdate
# ntpdate ru.pool.ntp.org
# mkdir -p /var/cron/tabs && echo ‘0 0 * * * /usr/sbin/ntpdate ru.pool.ntp.org’ >> /var/cron/tabs/crontab && crontab /var/cron/tabs/crontab && crontab -l
Установка и настройка Nginx, PHP, MySQL
Теперь можем обновлять список пакетов и устанавливать веб-сервер nginx: # apt-get update
# apt-get install nginx Демон запускается автоматически. Попробуйте открыть браузер и ввести IP-адрес сервера. Вы должны увидеть приветствие от Nginx. Устанавливаем php и php-интерпретатор: # apt-get install php5 php5-fpm В Astra Linux по умолчанию nginx работает от учетной записи nginx, а php-fpm — от www-data. В результате этого при попытке использовать веб-сервер с php-скриптами мы получим ошибку. Для решения этой проблемы необходимо поменять пользователя, от которого будет работать либо nginx, либо php-fpm. В данном примере, nginx:
expires modified +1w; * site.local необходимо заменить на домен вашего веб-приложения или сайта.
** /var/www/site.local — директория, в которую мы поместим файлы сайта.
*** allow 192.168.0.0/16 — подсеть, для которой мы разрешаем доступ к сайту. Если ограничивать не требуется, удалите строчку и следующую за ней deny all.
**** Остальные параметры я рекомендую изучить самостоятельно. Создаем директорию для сайта, которую мы указали в конфигурационном файле: Создаем в нем файл index.php с функцией phpinfo: Перезапускаем наши демоны: # service php5-fpm restart && service nginx restart Проверьте работоспособность сервера, введя в адресной строке браузера IP-адрес сервера (в данном примере, 192.168.0.15). Сервер должен вернуть много параметров в различных таблицах.
Также в данных таблицах вы должны увидеть «MySQL Suppert — Enabled». Это говорит о том, что сервер готов к работе с базой MySQL. Источник
Операционные системы Astra Linux
Операционные системы Astra Linux Common Edition и Astra Linux Special Edition разработаны коллективом открытого акционерного общества «Научно-производственное объединение Русские базовые информационные технологии» и основаны на свободном программном обеспечении. Astra Linux Common Edition предназначена для автоматизации коммерческих предприятий и органов государственного управления. Astra Linux Special Edition предназначена для применения в автоматизированных системах в защищенном исполнении, обрабатывающих информацию ограниченного распространения, включая государственную тайну до степени секретности «особой важности» . На сайте представлена подробная информация о разработанных операционных системах семейства Astra Linux, а также техническая документация для пользователей операционных систем и разработчиков программного обеспечения. Кроме того, предоставлена возможность скачать дистрибутивы и исходные тексты операционной системы Astra Linux Common Edition, а также задать интересующие вопросы разработчикам . Мы будем признательны Вам за вопросы и предложения, которые позволят совершенствовать наши изделия в Ваших интересах и адаптировать их под решаемые Вами задачи!
Репозитория открытого доступа в сети Интернет для операционной системы Astra Linux Special Edition нет. Операционная система распространяется посредством DVD-дисков. Информацию о сетевых репозиториях операционной системы Astra Linux Common Edition Вы можете получить на нашем сайте. Источник
Установка и настройка Apache2 на Astra Linux
В данной статье приведён пример установки и настройки Apache HTTP Server (Apache2) на OC Astra Linux SE. Если в ОС уже настроен виртуальный дисплей xvfb, то подготовка системы не требуется и можно перейти сразу к установке Apache2.
Подготовка системы
Выполните следующие действия: Разрешите доступ к DISPLAY 0.0. Для этого откройте файл X0.hosts, выполнив в терминале команду: sudo nano /etc/X0.hosts
В открывшемся файле добавьте строку: Примечание . Если у вас физический дисплей настроен на другой номер, то после X необходимо указать соответствующую цифру. Откройте конфигурационный файл xserverrc: sudo nano /etc/X11/xinit/xserverrc exec /usr/bin/X -nolisten tcp «$@» Откройте конфигурационный файл fly-dmrc: sudo nano /etc/X11/fly-dm/fly-dmrc
sudo service fly-dm restart После перезагрузки X-сервера запустите его заново командой startx и авторизуйтесь. Для корректной работы сервисов должен быть произведён вход пользователем в графическое окружение системы из физической консоли.
Установка и настройка Apache2
В стандартной поставке Astra Linux SE Apache2 доступен только в конфигурации prefork. В связи с этим для Astra Linux используется Apache2 собственной сборки, собранный с модулем coworker. Apache HTTP Server поставляется с архивом платформы и распаковывается в каталог /opt/ Foresight /fp9.2 -biserver/bin/apache/2.2. Примечание . При смене каталога расположения Apache HTTP Server надо изменить в файле conf/httpd.conf значения параметров ServerRoot, DocumentRoot, Directory и ScriptAlias, где указан путь до /opt/ Foresight /fp9.2-biserver/bin/apache/2.2, на соответствующий новому расположению веб-сервера. Перенесите init-файл apache2-fp9.2 в каталог /etc/init.d/ командами в терминале: sudo cp /opt/ Foresight /fp9.2 -biserver/bin/apache/2.2/apache2-fp9.2 /etc/init.d/ sudo chmod +x /etc/init.d/apache2-fp9.2
init-файл запуска Apache2 можно создать вручную, вставив листинг скрипта ниже в файл /etc/init.d/apache2-fp9.2. Откройте файл для редактирования: sudo juffed /etc/init.d/apache2-fp9.2 Вставьте текст скрипта и сохраните файл apache2-fp9.2: # Required-Start: $local_fs $remote_fs $network $syslog $named # Required-Stop: $local_fs $remote_fs $network $syslog $named # Default-Start: 2 3 4 5 # Short-Description: Start/stop apache2 web server
Настройка web-сервера
В ОС Astra Linux Special Edition все действия должны выполняться от имени имени администратора компьютера с высоким уровнем целостности.
Установить пакеты для ввода компьютера в домен, службу Apache2 и модуль авторизации через Kerberos:
На компьютере — контроллере домена FreeIPA
Получить авторизацию администратора домена, и, действуя от имени администратора домена, добавить службу HTTP:
Далее полученный файл /tmp/http.keytab нужно будет скопировать на web-сервер в каталог /etc/apache2/.
На компьютере — web-сервере Apache2 (Часть 2)
Скопировать keytab (файл /tmp/http.keytab) с контроллера домена на web-сервер в каталог /etc/apache2/.
Выставить права на keytab:
В конфигурацию виртуального хоста virtualhost в файле /etc/apache2/sites-available/000-default.conf внести настройки:
ServerAdmin webmaster@localhost DocumentRoot /var/www ErrorLog $/error.log CustomLog $/access.log combined AuthType Kerberos # Имя реалма Керберос - имя домена ЗАГЛАВНЫМИ буквами KrbAuthRealms ASTRA.DOMAIN # Полное доменное имя сервиса (имя ранее созданной службы HTTP): KrbServiceName HTTP/client.astra.domain@ASTRA.DOMAIN # Имя файла, в котором сохранены ключи Krb5Keytab /etc/apache2/http.keytab KrbMethodNegotiate on KrbMethodK5Passwd off require valid-user KrbSaveCredentials on
Создать каталог для виртуального сервера:
На компьютере — web-сервере назначить мандатные атрибуты каталогу с виртуальным сервером:
sudo pdpl-file 3:0:0xffffffffffffffff:ccnr /var/www/
sudo pdpl-file 3:0:0xffffffffffffffff:ccnr /var/www/html/
Проверка работы мандатных ограничений
На компьютере — контроллере домена создать доменного пользователя, и выставить ему ненулевой «максимальный уровень конфиденциальности» (например, 1).
На компьютере — web-сервере в папке виртуального сервера /var/www/html/ создать 2 файла и установить ненулевую мандатную метку на файл 1.html:
echo «Hello world! 0» | sudo tee /var/www/html/0.html
echo «Hello world! 1» | sudo tee /var/www/html/1.html
sudo pdpl-file 1:0:0 /var/www/html/1.html
На любом компьютере, который должен выступать в роли клиента, в web-браузере negotiate авторизацию (для чего открыть страницу about:config и добавить http:// в параметры network.negotiate-auth.delegation-uris и network.negotiate-auth.trusted-uris):
После чего зайти на клиентский компьютер под пользовательской доменной учетной записью с нулевым уровнем конфиденциальности и попытаться получить доступ к странице с ненулевым уровнем конфиденциальности http://client.astra.domain/html/1.html. Результатом должен стать отказ в доступе:
При этом в диагностическом сообщении об ошибке будет указано, что объект не найден (ошибка 404), и не будет указана ошибка 403 (недостаточно прав).
Такая диагностика исключает передачу информации о существовании объектов с высоким уровнем конфиденциальности, перекрывая возможный канал утечки информации.
При этом доступ к странице с нулевым уровнем конфиденциальности http://client.astra.domain/html/0.html должен предоставляться:
При входе на клиентский компьютер под пользовательской доменной учетной записью с ненулевым уровнем конфиденциальности должны быть доступны обе страницы.