15 октября 2014

Как уже упоминалось в одной из наших предыдущих заметок, в состав Astra Linux Special Edition входит защищенный комплекс программ гипертекстовой обработки данных.

В качестве веб-сервера туда включен Apache2, который доработан с целью улучшения безопасности. В данной заметке мы коротко опишем как настроить данный веб-сервер  с использованием PAM авторизации.

  1. Ставим пакеты
    aptitude install apache2 libapache2-mod-auth-pam
  2. Проверяем, что в файле /etc/apache2/ports.conf содержатся следующие строки(если конечно Вы собираетесь использовать стандартный 80, а не какой-нибудь другой порт):
    NameVirtualHost *:80
    Listen 80
  3. Создаем конфигурацию виртуального хоста (в примере сайтик из одной стандартной страницы It works!):
    <VirtualHost *:80>
        ServerAdmin webmaster@localhost
        ServerName имясервера
        DocumentRoot /var/www/
        <Directory /var/www/>
             AuthPAM_Enabled on
             AuthType Basic
             AuthName "PAM authentication"
             require valid-user
             Options Indexes FollowSymLinks MultiViews
             AllowOverride None
        </Directory>
        ErrorLog /var/log/apache2/error.log
        LogLevel debug
        CustomLog /var/log/apache2/access.log common
    </VirtualHost>
  4. Включаем PAM авторизацию и наш виртуальный хост:
    a2enmod auth_pam
    a2ensite имя_файла_конфигурации
    service apache2 reload
    
  5. Для корректного функционирования авторизации через PAM пользователю, от которого работает веб-сервер (по-умолчанию — 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
  6. Затем для пользователя под которым будем заходить, выполняем команду настройки(по-сути просто сбрасываем в 0) минимальный и максимальный наборы мандатных категорий(мы их и не настраивали):
    usermac -c 0:0 имя_пользователя_под_которым_будем_заходить
  7. Открываем браузер обращаемся по именисервера, который указали в конфигурационном файле виртуального хоста, и должны увидеть сперва окно с предложением ввести логи\пароль и после успешного ввода данных Вам откроется страница c текстом «It works!», как на картинке ниже:
    pam_apache_astra

На очереди рассказ про настройку kerberos авторизации. Stay tuned!

P.S. Смотрите также нашу статью «Веб-приложения в защищённой среде» и вопросы посетителей, касающиеся Apache.

39 комментариев

  1. Интересная заметка. Проверил, действительно работает. Значит ли это, что в качестве аутентификации можно использовать пользователей домена??? И, есть ли возможность использовать эту аутентификацию на PHP?

    1. Пользователей 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….то это скучная история.

  2. Спасибо, действительно полезная статья. В связи с отсутствием нормальной документации по Astra Linux просто умоляю вас продолжить писать и заполнять информационный вакуум данного направления. Лично от себя прошу написать обзор по установке и настройке Postgresql в Astra Linux. Еще раз спасибо.

    1. В документации данная тема освещена:
      Для Astra Linux SE 1.3 -> Руководство администратора РУСБ.10015-01 95 01 п. 11
      Для Astra Linux SE 1.4 -> Руководство администратора РУСБ.10015-01 95 01 п. 6.10.1

      Если будут конкретные вопросы пишите.

  3. Артем, а можно эту документацию у Вас попросить? Ещё очень интересна аутентификация. Не знаю, как правильно выразиться, не очень в этом понимаю. Но интересно вот что, в данной статье берётся аутентификация локального пользователя, где установлен сервер. А если ПК прописан в домене, возможно ли авторизоваться пользователем домена при входе на сайт? И как этого пользователя обработать на PHP?

    1. К сожалению тут(http://www.astra-linux.com/materialy-i-dokumentatsiya.html) ее нету, Вам нужно обратиться в Русбитех, чтобы получить, мы не имеем права ее распространять. На этой неделе постараюсь написать статью как настроить для доменных пользователей. Про php….мы в одном из своих проектов(python-django) делали следующим образом:
      1. При использовании kerberos авторизации в каждом запросе передается REMOTE_USER
      2. Берем его login = request.META.get(«REMOTE_USER», None)
      3. Дальше делаем, что считаем нужным, мы, например получали группу(роль пользователю назначалась на основе его членства в тех или иных группах ALD) в которую он входит: grp.getgrgid(pwd.getpwnam(self._login).pw_gid).gr_name (не забыть import grp, pwd)
      Думаю можно повторить на php.

  4. Добрый день! Подскажите, как настроить на SE 1.4? Что нужно писать вот здесь?
    AuthName «PAM authentication»

    Выдает ошибку
    configuration error: couldn’t perform authentication. AuthType not set!: /

    И еще вопрос — возможно ли в этой версии настроить web-сервер так, чтобы не проходить авторизацию при открытии сайта?

  5. А для PHP нет желания сделать такую же модную библиотеку поддержки PARSEC как вы сделали для python?

    Как я понял, мандатную метку можно определить, делая запрос к БД, если у записи или таблицы БД также есть метка. Не красиво, но других вариантов я не нашёл.
    Кстати группу пользователя действительно можно получить через posix_getpwnam($_SERVER[‘REMOTE_USER’]).

  6. А как отключить BasicAuth для запросов типа OPTIONS ведь Firefox перед отправкой POST (Через AJAX) шлет изначально OPTIONS чтобы узнать — поддерживает ли сервер указанный метод. И передать в этот prefly запрос заголовки авторизации нет никакой возможности. Условные директивы Апач тоже не понимает. В общем получается что сделать что-то нормальное типа SPA на AngularJS уже не получается.
    Или есть какой-то способ обойти эту пролему?

  7. Есть ли возможность настроить апач так, чтобы wget-ом можно было выкачивать из определенного каталога файлы любому узлу в сети? А то настроил все, как в статье. Сайт работает, пароль запрашивает, все ок. А если из консоли хочу скачать что-то, то выкачивать не дает.

  8. Доброго времени суток.
    Хотелось бы узнать, можно ли настроить ADL авторизацию для сервера приложений tomcat 7 или 8 версии? Есть ли инструкции и будут ли вообще таковые ?

  9. Очень интересуюсь работой модуля WebDAV, серер настраивал но в обычной редакции. Здесь не получается. Есть какие то инструкции для настройки WebDav сервера на АстраЛинуксе ?

  10. Доброго времени суток,
    Интересует такой вопрос, можно ли средствами apache2 который в ходит в состав astra linux получить мандатный уровень пользователя?

  11. Добавть пожалуйста еще вот что

    Файловая система с исходниками сайта DocumentRoot должна быть смонтирована с опцией acl в противном случае authorization fail

    p.s. Наткнулся на это когда понадобилось по nfs подключать папку для сайта

  12. Добрый день
    Использую PAM авторизацию, но столкнулся со следующей проблемой — при смене пользователя окно авторизации появляется дважды, в какую сторону нужно смотреть?

    настройка default-ssl
    AuthPAM_Enabled on
    AuthType Basic
    AuthName «PAM autherizattion»
    require valid-user

    пользователя меняю командой
    header(‘WWW-Authenticate: Basic realm=»Change user»‘);
    header(‘HTTP/1,.0 401 Unauthorized’);

    SE 1.5

  13. Добрый день!

    Использую апач с PAM как прокси к бэкенду.

    AuthPAM_Enabled on AuthType Basic
    AuthName «PAM authentication»
    require valid-user

    В хэдерах после авторизации в апач поле Authorization содержит значение » Basic ==»>.
    Затем я авторизуюсь на бэке, и получаю от него «свой» токен, который кладу в sessionStorage.
    Дальнейшие запросы к api должны содержать уже мой токен в хэдере Authorization , но я не могу его изменить. Есть ли возможность обойти это?

  14. Добрый день! Если ли какие-то материалы (помимо документации Astra Linux) по настройке авторизации через Kerberos с целью использования доменными пользователями? При настройке по документации возникает ошибка на сервере: pdlugm_mkdir(*параметры*) failed: invalid argument. Спасибо.

Что у нас
нового

Блог

Репозиторий с обновлениями безопасности Astra Linux Special Edition

Лаборатория 50 на протяжении 5 лет поддерживает репозиторий с обновлениями безопасности Astra Linux Special Edition.

«Моно» для Astra Linux Special Edition 1.7

2 марта 2022

Выпущена версия программного комплекса «Моно» для Astra Linux Special Edition 1.7. 

Наши
контакты

Связаться с нами

Телефон 8 (812) 981-68-09
Электронная почта team@lab50.net





    Заполняя данную форму, вы принимаете условия Соглашения об использовании сайта, и соглашаетесь
    с Правилами обработки и использования персональных данных