Начало работы#
Чтобы начать работу с Apache HTTP Server, необходимо:
Установка#
Чтобы установить Apache HTTP Server, используйте встроенный в ОС менеджер пакетов dnf:
dnf install httpd
Примечание
Подробнее о dnf - в разделе «База знаний» → «Утилита dnf».
Настройка#
После установки Apache HTTP Server администратору в зависимости от потребностей архитектуры инфраструктуры необходимо:
активировать необходимые модули (подробнее - в разделе «Поставляемые модули»);
внести требуемые изменения в файлы конфигурации и осуществить их проверку (подробнее - в разделе «Файлы конфигурации, работа с ними»);
настроить локальный межсетевой экран - открыть TCP-порт
80. Для этого:Добавьте правило в
firewalld:firewall-cmd --permanent --add-port=80/tcpПерезапустите
firewalld:firewall-cmd --reloadПримечание
Подробнее о
firewalldиfirewall-cmd- в разделах «База знаний» → «Демон firewalld» и «База знаний» → «Утилита firewall-cmd».
Запуск#
Запустите Apache HTTP Server:
systemctl start httpdОпционально. Включите автоматический запуск Apache HTTP Server при загрузке ОС:
systemctl enable httpd
Примечание
Подробнее о systemctl - в разделе «База знаний» → «Утилита systemctl».
Управление#
Основные утилиты, используемые для управления активным веб-сервером Apache HTTP Server:
systemctl- запуск, остановка, перезапуск и проверка статуса службы;apachectl- интерфейс командной строки для управления веб-сервером - выполнение различных команд, таких как проверка конфигурации, перезапуск и другие;httpd- исполняемый файл Apache HTTP Server - управление модулями, проверка конфигурации и вывод текущих настроек;firewall-cmd- открытие портов;различные утилиты для просмотра файлов (конфигурации, журналов) -
cat,grep,tailи другие.
Подробную информацию о перечисленных утилитах можно получить в соответствующих разделах данного Руководства, либо - вывести необходимые страницы справочника man в командной строке - man <utilite_name>.
Использование Kerberos#
Настройка аутентификации Kerberos для Apache HTTP Server через GSSProxy#
Данный сценарий позволяет настроить безопасную аутентификацию Kerberos для Apache через GSSProxy (модуль mod_auth_gssapi). Преимущества:
keytab-файл доступен только для
root;использование GSSProxy для работы с Kerberos повышает безопасность;
интеграция с FreeIPA упрощает управление принципалами и keytab-файлами.
Предварительные условия |
|---|
- Установлены пакеты Apache HTTP Server, FreeIPA, GSSProxy, Kerberos и модуль |
- Apache HTTP Server запущен и активен |
Создайте сервисный принципал в системе управления идентификацией FreeIPA для веб-сервера, который будет использоваться для Kerberos-аутентификации:
ipa service-add HTTP/<server_name>Где:
принципал
HTTP/<server_name>— уникальный идентификатор для веб-сервера, используемый для получения тикетов Kerberos;<server_name>— полное доменное имя (FQDN) сервера, например,webserver.example.com.
Получите keytab-файл для принципала:
ipa-getkeytab -s $(awk '/^server =/ {print $3}' /etc/ipa/default.conf) -k /etc/gssproxy/http.keytab -p HTTP/$(hostname -f)Где:
-s- указывает адрес FreeIPA-сервера, который берется из конфигурационного файла/etc/ipa/default.conf;-k- указывает путь для сохранения keytab-файла;-p- указывает принципал, для которого нужно получить keytab;$(hostname -f)- автоматически подставляет полное доменное имя текущего сервера.
Команда извлекает keytab-файл для принципала
HTTP/<server_name>и сохраняет его в/etc/gssproxy/http.keytab. Keytab-файл содержит ключи шифрования, которые используются для автоматической аутентификации сервиса без необходимости ручного ввода учетных данных.На этом шаге права доступа устанавливаются на
400, таким образом только пользовательrootимеет доступ к keytab. Пользовательapache- нет.Создайте и настройте конфигурационный файл для GSSProxy:
[service/HTTP] mechs = krb5 cred_store = keytab:/etc/gssproxy/http.keytab cred_store = ccache:/var/lib/gssproxy/clients/krb5cc_%U euid = apacheГде:
[service/HTTP]- определяет, что настройки относятся к сервису HTTP;mechs = krb5- указывает, что используется механизм аутентификации Kerberos (KRB5);cred_store = keytab:/etc/gssproxy/http.keytab- указывает путь к keytab-файлу, который содержит ключи для аутентификации;cred_store = ccache:/var/lib/gssproxy/clients/krb5cc_%U- указывает путь к кешу тикетов Kerberos для каждого пользователя (%Uзаменяется на UID пользователя);euid = apache- указывает, что процесс должен работать от имени пользователяapache.
GSSProxy действует как посредник между Apache HTTP Server и Kerberos, позволяя веб-серверу использовать тикеты Kerberos без прямого доступа к keytab-файлу.
Перезапустите и включите службу GSSProxy для применения настроек и автозапуска:
systemctl restart gssproxy.servicesystemctl enable gssproxy.service
Дополнительная информация#
Дополнительную информацию можно получить, выполнив:
man ipa
man gssproxy
man gssproxy-mech
man gssproxy.conf
Настройка аутентификации Kerberos для каталога#
Данный сценарий позволяет предоставить доступ к каталогу /var/www/html/private/ только тем пользователям, которые успешно прошли аутентификацию через Kerberos.
Предварительные условия |
|---|
- Установлены пакеты Apache HTTP Server, GSSProxy, Kerberos и модуль |
- Apache HTTP Server и GSSProxy запущены и активны |
Настройте модуль
mod_auth_gssapiдля защиты каталога/var/www/html/private/:<Location /var/www/html/private> AuthType GSSAPI AuthName "GSSAPI Login" Require valid-user </Location>Где:
AuthType GSSAPI- указывает, что используется механизм аутентификации GSSAPI (Generic Security Services API), который поддерживает Kerberos;AuthName "GSSAPI Login"- определяет заголовок для окна входа; без графического интерфейса это значение будет использоваться только для идентификации в логах;Require valid-user- разрешает доступ только тем пользователям, которые успешно прошли аутентификацию через Kerberos.
Создайте drop-in-файл дополнительной системной конфигурации:
systemctl edit httpd.serviceВ созданный drop-in-файл добавьте следующий параметр:
[Service] Environment=GSS_USE_PROXY=1Данная переменная среды указывает веб-серверу использовать GSSProxy для обработки Kerberos-аутентификации вместо прямого взаимодействия с библиотекой Kerberos.
Перезагрузите конфигурацию
systemdдля применения настроек:systemctl daemon-reloadПерезапустите Apache HTTP Server для применения новых настроек аутентификации:
systemctl restart httpd.serviceПроверьте успешность выполнения сценария:
6.1. Получите Kerberos-тикет:
kinit6.2. Попробуйте получить доступ к защищаемому каталогу:
curl --negotiate -u : http://<server_name>/private/Где:
--negotiate- указываетcurl, что нужно использовать механизм аутентификации SPNEGO (Simple and Protected GSSAPI Negotiation Mechanism), который поддерживает Kerberos;-u :- указывает, что имя пользователя и пароль не передаются явно; вместо этого используется текущий Kerberos-тикет из кеша пользователя;http://<server_name>/private/- задает URL, по которому выполняется запрос;<server_name>— имя сервера (например,webserver.example.com).
Если аутентификация настроена правильно, сервер вернет содержимое каталога
/private/.
Дополнительная информация#
Дополнительную информацию можно получить, выполнив:
man kinit
man curl