- Настройка PAM авторизации в защищенном Apache
- 39 комментариев
- Установка
- Установка SafeNet Authentication Client
- Проверка работы eToken в системе
- Способ №1
- Способ №2
- Инициализация токена eToken
- Создание ключевой пары RSA
- Создание самоподписанного сертификата
- Загрузка сертификата на токен
- Локальная аутентификация в Astra Linux по eToken
- Установка дополнительный пакетов
- Настраиваем аутентификацию
- Вход по токену
- Настройка web-сервера на Astra Linux SE 1.5
Настройка 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:
- библиотека libccid
- пакеты libpcsclite1 и pcscd;
- opensc
Для установки в терминале введите команду:
sudo apt install libccid pcscd libpcsclite1 opensc libengine-pkcs11-openssl*
Установка SafeNet Authentication Client
SafeNet Authentication Client – это программный клиент, который позволяет взаимодействовать прикладному программному обеспечению с электронными ключами и смарт-картами eToken производства компании Gemalto. Помимо набора драйверов и интерфейсов для взаимодействия Safenet Authentication Client включает необходимый набор функций для организации локального администрирования электронных ключей и смарт-карт.
Сам клиент следует загрузить с официального сайта Gemalto
После загрузки клиента с офф. сайта, его следует установить. Для этого введите команду:
sudo dpkg -i SafenetAuthenticationClient-amd64.deb
Если при запуске SafeNet Authentication client возникает ошибка:
CRYPTO/Crypto.c:247: init_openssl_crypto: Assertion lib failed.
то для корректной работы, следует создать символическую ссылку на нужную библиотеку. Для этого в терминале, нужно ввести команду:
Проверка работы eToken в системе
Для проверки работы Etoken:
Подключите устройство к компьютеру.
Способ №1
pkcs11-tool --module /usr/lib/libeToken.so -T
Способ №2
Выберите в Меню «Пуск» → «Прочие» → «SafeNet Authentication Сlient Tools» и подключите токен. После чего должна отобразиться информация о подключенном токене:
Инициализация токена eToken
Для инициализации токена необходимо воспользоваться утилитой pkcs11-tool.
pkcs11-tool --login --init-token --label "eToken Astra" --init-pin 12345678 --module /usr/lib/libeToken.so
—slot 0 — указывает в какой виртуальный слот подключено устройство. Как правило, это слот 0, но могут быть и другие значения – 1,2 и т.д.
—init-token – команда инициализации токена.
—pin — пин код пользователя.
—label ‘eToken Astra’ — метка(название) устройства.
—module — указывает путь до библиотеки eToken
или в SafeNet Authentication Сlient Tools выбрать кнопку «инициализировать токен».
Внимание! Инициализация устройства удалит все данные на eToken без возможности восстановления.
Создание ключевой пары RSA
Для генерации ключевой пары RSA в терминале следует ввести команду:
pkcs11-tool —slot 0 —login —pin 12345678 —keypairgen —key-type rsa:2048 —id 16 —label «rsa key» —module /usr/lib/libeToken.so
Создание самоподписанного сертификата
Для создания самоподписанного сертификата в терминале следует ввести команду:
engine dynamic -pre SO_PATH:/usr/lib/x86_64-linux-gnu/engines-1.1/pkcs11.so -pre ID:pkcs11 -pre LIST_ADD:1 -pre LOAD -pre MODULE_PATH:/usr/lib/libeToken.so
после чего ввести команду:
req -engine pkcs11 -new -key 0:16 -keyform engine -x509 -out test.pem -text
В поле Common Name должно быть указано имя пользователя ОС.
Загрузка сертификата на токен
Создав свой личный сертификат, его следует загрузить на eToken.
Перекодируем полученный сертификат из PEM в DER:
pkcs11-tool —slot 0 —login —pin 12345678 —write-object test.cer —type ‘cert’ —label ‘Certificate’ —id 16 —module /usr/lib/libeToken.so
(или с помощью графической утилиты SACTool)
Проверка ключей и сертификатов в eToken:
Локальная аутентификация в Astra Linux по eToken
Установка дополнительный пакетов
Пуск — Настройки — Менеджер пакетов
через Быстрый фильтр или через поиск находим и отмечаем к установке следующие пакеты:
либо воспользовавшись терминалом FLY:
sudo apt-get install libp11-2 libpam-p11
Конвертируем сертификат в текстовый формат
openssl x509 -
in
.crt-out .pem -inform DER -outform PEM
где — имя файла, в котором сохранен ваш сертификат из токена в текстовом формате
Теперь нам необходимо прочитать с токена сертификат с нужным ID и записать его в файл доверенных сертификатов:
Добавляем сертификат в список доверенных сертификатов:
mkdir ~/.eid
chmod 0755 ~/.eid
cat
.pem >> ~/.eid
/authorized_certificates
chmod 0644 ~/.eid/authorized_certificates
Для привязки токена к определенному пользователю необходимо указать его домашнюю директорию, например таким образом:
mkdir /home/user/.eid
chmod 0755 /home/user/.eid
cat
>> /home/user/.eid
/authorized_certificates
chmod 0644 /home/user/.eid/authorized_certificates
Важно помнить, что при регистрации нескольких токенов на одном компьютере необходимо указывать пользователям раличные id.
Настраиваем аутентификацию
Пуск — утилиты — Терминал Fly
sudo
nano
/usr/share/pam-configs/p11
записываем в файл следующую информацию:
Name: Pam_p11
Default: yes
Priority: 800
Auth-Type: Primary
Auth: sufficient pam_p11_opensc.so /usr/lib/libeToken.so
сохраняем файл, нажимаем Alt + X, а затем Y
после этого выполняем
Вход по токену
Пуск — утилиты — Терминал Fly
Вход выполняется с подключенным токеном к компьютеру. В момент ввода пароля будет сообщено, что требуется .
Настройка 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. ЗАЩИЩЕННЫЙ КОМПЛЕКС ПРОГРАММ ГИПЕРТЕКСТОВОЙ ОБРАБОТКИ ДАННЫХ.