Начало работы#

Чтобы начать работу с Apache HTTP Server, необходимо:

  1. Установить веб-сервер.

  2. Применить необходимые настройки.

  3. Запустить.

Установка#

Чтобы установить Apache HTTP Server, используйте встроенный в ОС менеджер пакетов dnf:

dnf install httpd

Примечание

Подробнее о dnf - в разделе «База знаний» → «Утилита dnf».

Настройка#

После установки Apache HTTP Server администратору в зависимости от потребностей архитектуры инфраструктуры необходимо:

Запуск#

  • Запустите 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 и модуль mod_auth_gssapi

- Apache HTTP Server запущен и активен

  1. Создайте сервисный принципал в системе управления идентификацией FreeIPA для веб-сервера, который будет использоваться для Kerberos-аутентификации:

    ipa service-add HTTP/<server_name>
    

    Где:

    • принципал HTTP/<server_name> — уникальный идентификатор для веб-сервера, используемый для получения тикетов Kerberos;

    • <server_name> — полное доменное имя (FQDN) сервера, например, webserver.example.com.

  2. Получите 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 - нет.

  3. Создайте и настройте конфигурационный файл для 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-файлу.

  4. Перезапустите и включите службу GSSProxy для применения настроек и автозапуска:

    systemctl restart gssproxy.service
    
    systemctl enable gssproxy.service
    

Дополнительная информация#

Дополнительную информацию можно получить, выполнив:

man ipa
man gssproxy
man gssproxy-mech
man gssproxy.conf

Настройка аутентификации Kerberos для каталога#

Данный сценарий позволяет предоставить доступ к каталогу /var/www/html/private/ только тем пользователям, которые успешно прошли аутентификацию через Kerberos.

Предварительные условия

- Установлены пакеты Apache HTTP Server, GSSProxy, Kerberos и модуль mod_auth_gssapi

- Apache HTTP Server и GSSProxy запущены и активны

  1. Настройте модуль 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.

  2. Создайте drop-in-файл дополнительной системной конфигурации:

    systemctl edit httpd.service
    
  3. В созданный drop-in-файл добавьте следующий параметр:

    [Service]
    Environment=GSS_USE_PROXY=1
    

    Данная переменная среды указывает веб-серверу использовать GSSProxy для обработки Kerberos-аутентификации вместо прямого взаимодействия с библиотекой Kerberos.

  4. Перезагрузите конфигурацию systemd для применения настроек:

    systemctl daemon-reload
    
  5. Перезапустите Apache HTTP Server для применения новых настроек аутентификации:

    systemctl restart httpd.service
    
  6. Проверьте успешность выполнения сценария:

    6.1. Получите Kerberos-тикет:

    kinit
    

    6.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