Mod auth kerb windows

Provide feedback

Saved searches

Use saved searches to filter your results more quickly

Sign up

Почти в каждой организации используется домен Microsoft Windows, в котором пользователи проходят проверку подлинности. Так же часто в IT инфраструктуре используются сервисы, предоставляемые различными дистрибутивами linux. При выдаче прав доступа администраторам windows и linux приходится вести различные базы пользователей, что конечно не удобно. Реализовав единую базу данных пользователей и прозрачную аутентификации для пользователей (single sign on) можно избавится от массы рутинной работы и устранить риски безопасности. В данном случае реализуем прозрачный доступ пользователей к некому web ресурсу. Для аутентификации будет использоваться протокол Kerberos и «Key Distribution Center» (KDC) реализованный в контроллере домена Windows. В качестве linux системы рассматривается rhel5, для других дистрибутивов возможны не принципиальные отличия в процессе настройки. Если у вас дистрибутив отличный от указанного, то стоит проверить версию библиотеки Kerberos, она должна быть не младше чем 1.5 (MIT Kerberos), т.к. начиная с этой версии поддерживается механизм согласования метода аутентификации SPNEGO (Simple and Protected Negotiate). Веб сервер должен иметь A запись на вашем днс сервере т.к. имя ресурса является частью Kerberos билета. Процесс аутентификации описан в RFC1510, обязательно прочтите как проходит процесс аутентификации.

Термины и команды:
realm — область использующая единую базу Kerberos. По соглашению реалм записывается строчными буквами, для отличия от днс домена.
principal — имя которому поставлено в соответствие набор учетных данных. Делится на три части: 1)primary — первая чать принципала Kerberos. Если это пользователь, то соответствует его имени. Если сервис — имя сервиса. 2)instance — вторая часть, служит для уточнения первой части. Может не содержатся в имени принципала, если есть — то это описание. В случае хоста — его fqdn. 3)realm — реалм идет последней частью.
ticket — набор временных данных которые подтверждают идентичность клиента или сервиса.
TGT — Ticket-Granting Ticket. Билет дающий право на получение других билетов в реалме, где был он выпущен.
keytab — файл содержащий ключи, хост или сервис использует его точно таким же образом как пользователь использует пароль.
KDC — Key Distribution Center, сервер выдающий билеты.
kinit — программа, используется для начала процесса аутентификации принципала и получения билета TGT.
klist — программа, выводит список принципалов и Kerberos билетов содержащихся в кеше, или список список ключей в keytab файле.
kvno — получает билет для указанного принципала и выдает на терминал версию ключей.
ktutil — позволяет управлять записями в keytab файле.

Начальные условия:
локальная сеть — 192.168.1.0/24
сервер Active Directory — dc01.domain.ru(192.168.1.1)
веб сервер — web.domain.ru (192.168.1.130)

Действия по шагам:
Настраиваем синхронизацию времени. 
Установите и настройте службу ntpd. В качестве сервера точного времени нужно использовать сервер Active Directory. Протокол Kerberos требует что бы время у участников аутентификации было синхронизировано.

[root@server ~]# yum install ntpd

Выполните начальную синхронизацию времени с контроллером домена:

[root@server ~]# ntpdate dc01.domain.ru

Конфигурационный файл даемона ntpd:

[user@server ~]$ egrep -v «^#» /etc/ntp.conf
restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery
restrict 127.0.0.1
restrict -6 ::1
server dc01.domain.ru
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10
driftfile /var/lib/ntp/drift
keys /etc/ntp/keys

Сейчас запустим службу и поставим ее в автозагрузку:

[root@server ~]# /etc/init.d/ntpd start
[root@server ~]# chkconfig ntpd on

Проверить состояние службы синхронизации времени можно командой:

[user@server ~]$ ntpstat
synchronised to NTP server (192.168.1.1) at stratum 5
   time correct to within 300 ms
   polling server every 512 s

Настройка Kerberos на web.domain.ru.
Ниже приведена минимальная конфигурация для использования протокола аутентификации в реалме domain.ru. Реалм в данном случае будет совпадает с доменом Windows. Обратите внимание, для работоспособности Kerberos, реалм должен быть написан прописными буквами!

[user@server ~]$ cat /etc/krb5.conf
[logging]
 default = FILE:/var/log/krb5libs.log
 kdc = FILE:/var/log/krb5kdc.log
 admin_server = FILE:/var/log/kadmind.log

[libdefaults]
 default_realm = DOMAIN.RU
 dns_lookup_realm = false
 dns_lookup_kdc = false
 ticket_lifetime = 24h
 forwardable = yes

[realms]
 DOMAIN.RU = {
  kdc = dc01.domain.ru
  admin_server = dc01.domain.ru
 }

[domain_realm]
 .domain.ru = DOMAIN.RU
 domain.ru = DOMAIN.RU

[appdefaults]
 pam = {
   debug = false
   ticket_lifetime = 36000
   renew_lifetime = 36000
   forwardable = true
   krb4_convert = false
 }

Если у вас в сети несколько контроллеров домена то вы можете их перечислить в секции [realms], что то вроде:

[realms]
 DOMAIN.RU = {
  kdc = dc01.domain.ru
  kdc = dc02.domain.ru
  admin_server = dc01.domain.ru
  admin_server = dc02.domain.ru
 }

Проверить работоспособность Kerberos можно с помощью kinit, и учетной записи в домене Windows. Данная команда позволяет для принципала (в данном случае для пользователя домена) получить TGT билет и поместить его в кеш. Содержимое кеша можно посмотреть командой klist:

[user@server ~]$ kinit domain_user@DOMAIN.RU
[user@server ~]$ klist

Ticket cache: FILE:/tmp/krb5cc_500
Default principal: domain_user@DOMAIN.RU

Valid starting     Expires            Service principal
03/22/11 17:43:35  03/23/11 03:43:38  krbtgt/DOMAIN.RU@DOMAIN.RU
renew until 03/23/11 17:43:35

Далее нам нужно создать аккунт сервера в в Active Directory и связать его с принципалом сервиса  в KDC. Можно сделать это самостоятельно на котроллере домена. Создать сначала аккаунт, а затем связать его с принципалом с помощью команды ktpass. Но мне больше нравится вариант с установкой samba и вводом сервера в домен, в этом случае аккаунт и принципал службы создаются автоматически. Как плюс, samba позволит нам в будущем организовать сетевые ресурсы и получать информацию из AD для разграничения доступа к службам сервера.

Настройка samba, добавление сервера web.domain.ru в домен Windows
Устанавливаем samba:

[root@server ~]# yum install samba

В конфигурации samba необходимо указать используемый реалм, указать что будет используется keytab файл, и указать что самба работает как член домена AD — параметр security=ads. Конфигурация samba достаточная для наших целей приведена ниже:

[root@server ~]# cat /etc/samba/smb.conf
[global]
workgroup = DOMAIN
realm = DOMAIN.RU
server string = Samba Server Version %v
security = ADS
passdb backend = tdbsam
 use kerberos keytab = Yes
local master = No
cups options = raw

Проверить правильность конфигурационного файла можно командой 

[root@server ~]# testparm

Если ошибок нет, то самое время добавить наш сервер в домен Windows, естественно что нужно это делать имея полномочия на добавление в домен:

[root@server ~]# net ads join -U win_admin

win_admin’s password:
Using short domain name — DOMAIN
Joined ‘WEB’ to realm ‘DOMAIN.RU’

Если днс зона на контроллере домена не обновилась, то можно или вручную добавить запись A типа и ассоциированную с ней запись PTR или попытатся провести регистрацию имя сервера в днс следующим образом:

[root@server ~]# net ads dns register -I 192.168.1.130 -U win_admin

Проверить корректность добавления сервера в домен можно следующим образом:

[root@server ~]# net ads testjoin
Join is OK

Создание файла keytab, добавление ключа принципала сервиса «HTTP» в keytab.
Создадим keytab файл. Так как в конфигурации samba не оговорено где должен содержатся keytab файл, то будет создан файл по умолчанию /etc/krb5.keytab:

[root@server ~]# net ads keytab create -U win_admin

Теперь создадим и добавим принципал для сервиса — «HTTP», Если вы сейчас посмотрите, на контроллере домена, через консоль MMC и остнастку ADCI Edit параметр «servicePrincipalName», какие принципалы сервисов созданы для нашего сервера — это будут: «HOST/web.domain.ru» и «HOST/web».

[root@server ~]# net ads keytab add HTTP -U win_admin

Если вы теперь посмотрите в список принципалов, то заметите, что там добавились еще два — «HTTP/web.domain.ru» и «HTTP/web». В принципе это уже значит что добавление прошло успешно. Тем не менее, давайте посмотрим что сейчас находится в keytab:

[root@server ~]# klist -ek /etc/krb5.keytab 
Keytab name: FILE:/etc/krb5.keytab
KVNO Principal
—- —————————————————————————
   2 host/web.domain.ru@DOMAIN.RU (DES cbc mode with CRC-32) 
   2 host/web.domain.ru@DOMAIN.RU (DES cbc mode with RSA-MD5) 
   2 host/web.domain.ru@DOMAIN.RU (ArcFour with HMAC/md5) 
   2 host/web@DOMAIN.RU (DES cbc mode with CRC-32) 
   2 host/web@DOMAIN.RU (DES cbc mode with RSA-MD5) 
   2 host/web@DOMAIN.RU (ArcFour with HMAC/md5) 
   2 WEB$@DOMAIN.RU (DES cbc mode with CRC-32) 
   2 WEB$@DOMAIN.RU (DES cbc mode with RSA-MD5) 
   2 WEB$@DOMAIN.RU (ArcFour with HMAC/md5) 
   2 HTTP/web.domain.ru@DOMAIN.RU (DES cbc mode with CRC-32) 
   2 HTTP/web.domain.ru@DOMAIN.RU (DES cbc mode with RSA-MD5) 
   2 HTTP/web.domain.ru@DOMAIN.RU (ArcFour with HMAC/md5) 
   2 HTTP/web@DOMAIN.RU (DES cbc mode with CRC-32) 
   2 HTTP/web@DOMAIN.RU (DES cbc mode with RSA-MD5) 
   2 HTTP/web@DOMAIN.RU (ArcFour with HMAC/md5) 

Для полной уверенности можно получить Kerberos билет от KDC для только что заведенных принципалов:

[root@server ~]# kvno HTTP/web.domain.ru@DOMAIN.RU HTTP/web@DOMAIN.RU

HTTP/web.domain.ru@DOMAIN.RU: kvno = 2
HTTP/web@DOMAIN.RU: kvno = 2

Обратите внимание, что версия ключа идентична. Посмотрим эти билеты подробнее (в выводе только интересующие нас билеты):

[root@server ~]# klist -e
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: domain_user@DOMAIN.RU

Valid starting     Expires            Service principal
03/25/11 15:37:04  03/26/11 01:35:17  HTTP/web.domain.ru@DOMAIN.RU
renew until 03/26/11 15:35:14, Etype (skey, tkt): ArcFour with HMAC/md5, ArcFour with HMAC/md5 
03/25/11 15:42:26  03/26/11 01:35:17  HTTP/web@DOMAIN.RU
renew until 03/26/11 15:35:14, Etype (skey, tkt): ArcFour with HMAC/md5, ArcFour with HMAC/md5

Обратите внимание что номера ключей билетов (колонка KVNO), имя принципала в билете и алгоритмы шифрования должны совпадать! Рекомендуется создать свой keytab для службы HTTP, где будет содержатся только нобходимые нам ключи. Сделать это можно с помощью ktutil. Расширеных функций редактирования он не поддерживает, поэтому его можно запустить через rlwrap:

[root@server ~]# rlwrap ktutil

Загрузим содержимое keytab

ktutil:  read_kt /etc/krb5.keytab

Посмотрите текущие записи:

ktutil:  list

Нас интересуют записи в которых фигурирует метка «HTTP». Удалите все лишние записи, указав в команде удаления ненужный слот записи:

ktutil:  delent 1

Должно получится так:

ktutil:  list
slot KVNO Principal
—- —- ———————————————————————
   1    2                  HTTP/web.domain.ru@DOMAIN.RU
   2    2                  HTTP/web.domain.ru@DOMAIN.RU
   3    2                  HTTP/web.domain.ru@DOMAIN.RU

Сохраним оставшиеся в другой keytab файл:

ktutil:  write_kt /etc/httpd/httpd.keytab

Сменим права доступа:

[root@server ~]# chown apache:apache /etc/httpd/httpd.keytab
[root@server ~]# chmod 0440 /etc/httpd/httpd.keytab

Переходим к заключительной части.

Установка и настройка mod_auth_kerb.
Установим модуль mod_auth_kerb:

[root@server ~]# yum install mod_auth_kerb

Вы обнаружите файл /etc/httpd/conf.d/auth_kerb.conf содержащий пример настройки mod_auth_kerb. Воспользуемся этим примером как отправной точкой. В примере ниже примере аутентификация требуется только к части сайта web.domain.ru/private. Параметр KrbServiceName должен содержать имя принципала сервиса (и соответственно ключ), которое будет использовать apache для аутентификации. На место расположения файла keytab указывает параметр Krb5KeyTab. Используйте SSL если вы включите параметр KrbMethodK5Passwd. Данный параметр  включает аутентификацию с поддержкой ввода логин/пароль, причем они будут посланы по сети практически чистым текстом ( кодировка Base64 очень слабая )

[root@snort conf.d]# cat /etc/httpd/conf.d/auth_kerb.conf

LoadModule auth_kerb_module modules/mod_auth_kerb.

#  SSLRequireSSL

  AuthType Kerberos

  AuthName «Kerberos Login»

  KrbMethodNegotiate On

  KrbMethodK5Passwd Off

  KrbAuthRealms DOMAIN.RU

  Krb5KeyTab /etc/httpd/httpd.keytab

  KrbServiceName HTTP

#  require user win_user@DOMAIN.RU win2_user@DOMAIN.RU
  require valid-user

</Location>

Такой вариант настройки не очень удобен в плане гибкости. Гораздо удобнее настроить аутентификацию в .htaccess файле. Прежде чем будете пробовать второй пример — приведите к первоначальному виду файл /etc/httpd/conf.d/auth_kerb.conf, т.е. все закоментированно кроме строчки с загрузкой модуля.

[root@snort ~]# cat /var/www/html/.htaccess
#SSLRequireSSL
AuthType Kerberos
AuthName «Kerberos Login»
KrbMethodNegotiate On
KrbMethodK5Passwd Off
KrbAuthRealms DOMAIN.RU
Krb5KeyTab /etc/httpd/httpd.keytab
KrbServiceName HTTP
#require user win_user@DOMAIN.RU win2_user@DOMAIN.RU
require valid-user

В обоих этих примерах доступ получают все пользователи прошедшие аутентификацию. Можно настроить избирательный доступ, указав принципалы пользователей. В обоих примерах эта строка с указанием списка принципалов закомментирована. Не удобно в эксплуатации? Конечно гораздо удобнее, вдобавок к аутентификации, предоставлять доступ на основании членства в группе, которая содержится в Active Directory. Но это в следующий раз. А сейчас действительно последняя часть.

Настройка интернет браузеров.
Начнем с internet explorer 8. Во вкладке «Безопасность» окна «Свойства обозревателя» выделите «Местная интрасеть» и нажмите на «Узлы».

В появившемся окне нажмите «Дополнительно»

Впишите свой домен как на примере:

Закройте окно, и нажмите на кнопку «Другой» в области «Уровень безопасности для этой зоны». Отметьте параметр автоматического входа в систему как показано на рисунке.

Теперь в окне «Свойства обозревателя» перейдите во вкладку «Дополнительно», и включите параметр «Разрешить встроенную проверку подлинности Windows». Для того что бы настройки вступили в силу, браузер необходимо перезапустить.

Перейдем к настройке Mozilla Firefox, здесь все проще и без перезапусков. Наберите в адресной строке «about:config», в строке фильтра — «network.neg». Впишите свой домен в две строки, как показано на рисунке.

Это приложение для Windows под названием Kerberos Module For Apache, последний выпуск которого можно загрузить как mod_auth_kerb-4.13.zip. Его можно запустить онлайн на бесплатном хостинг-провайдере OnWorks для рабочих станций.

Загрузите и запустите онлайн это приложение под названием Kerberos Module For Apache с OnWorks бесплатно.

Следуйте этим инструкциям, чтобы запустить это приложение:

— 1. Загрузил это приложение на свой компьютер.

— 2. Введите в нашем файловом менеджере https://www.onworks.net/myfiles.php?username=XXXXX с желаемым именем пользователя.

— 3. Загрузите это приложение в такой файловый менеджер.

— 4. Запустите любой онлайн-эмулятор OS OnWorks с этого сайта, но лучше онлайн-эмулятор Windows.

— 5. В только что запущенной ОС Windows OnWorks перейдите в наш файловый менеджер https://www.onworks.net/myfiles.php?username=XXXXX с желаемым именем пользователя.

— 6. Скачайте приложение и установите его.

— 7. Загрузите Wine из репозиториев программного обеспечения вашего дистрибутива Linux. После установки вы можете дважды щелкнуть приложение, чтобы запустить его с помощью Wine. Вы также можете попробовать PlayOnLinux, необычный интерфейс поверх Wine, который поможет вам установить популярные программы и игры для Windows.

Wine — это способ запустить программное обеспечение Windows в Linux, но без Windows. Wine — это уровень совместимости с Windows с открытым исходным кодом, который может запускать программы Windows непосредственно на любом рабочем столе Linux. По сути, Wine пытается заново реализовать Windows с нуля, чтобы можно было запускать все эти Windows-приложения, фактически не нуждаясь в Windows.

Модуль Kerberos для Apache

ОПИСАНИЕ

Mod_auth_kerb — это модуль, обеспечивающий аутентификацию пользователя Kerberos на веб-сервере Apache. Он позволяет получить пару имени пользователя и пароля, а также поддерживает полную проверку подлинности Kerberos (также известную как проверка подлинности на основе согласования или SPNEGO).

Аудитория

Системные администраторы

Интерфейс пользователя

Неинтерактивный (демон)

Язык программирования

C

Это приложение также можно загрузить с https://sourceforge.net/projects/modauthkerb/. Он размещен в OnWorks, чтобы его можно было легко запускать в сети с помощью одной из наших бесплатных операционных систем.

Скачать приложения для Windows и Linux

  • Приложения для Linux
  • Приложения для Windows
  • 1

    eSpeak: синтез речи
    Механизм преобразования текста в речь для английского и
    многие другие языки. Компактный размер с
    четкое, но искусственное произношение.
    Доступен в виде программы командной строки с
    много …
    Скачать eSpeak: синтез речи
  • 2

    Карта неба / Cartes du Ciel
    SkyChart — программа для построения графиков
    ночное небо для астронома-любителя
    из скопления звезд и туманностей
    каталоги. Полную информацию см. на главной веб-странице.
    скачать…
    Скачать Sky Chart / Cartes du Ciel
  • 3

    GSmartControl
    GSmartControl — графический пользователь
    интерфейс для smartctl. Это позволяет вам
    осмотрите жесткий диск и твердотельный
    управлять данными SMART, чтобы определить его
    здоровье, как ж…
    Скачать GSmartControl
  • 4

    преобразование формы в таблицу html с помощью php
    Нажмите на вкладку «Файлы» выше, чтобы получить
    все ароматы/связанные файлы этого
    система. (Щелкните правой кнопкой мыши по каждому файлу, чтобы открыть
    Их в New Tab, один за другим, чтобы скачать…
    Преобразование форм в html-таблицы с помощью php
  • 5

    NAPS2 (не еще один PDF-сканер 2)
    Посетите домашнюю страницу NAPS2 по адресу …
    Скачать NAPS2 (не другой PDF-сканер 2)
  • 6

    Ghostscript
    ЭТОТ САЙТ БОЛЬШЕ НЕ АКТИВЕН
    ПОДДЕРЖИВАЕТСЯ, ДЛЯ ПОСЛЕДНИХ ВЫПУСКОВ, ПОЖАЛУЙСТА
    ПЕРЕЙТИ: http://downloads.ghostscript.com/
    Для получения дополнительной информации перейдите по ссылке:
    http://www….
    Скачать Призрачный скрипт
  • Больше »

Команды Linux

  • 1

    ABX
    abx — программное обеспечение для тестирования аудио ABX …
    Запустить абх
  • 2

    бездна
    abyss-pe — собрать чтения в контиги…
    Беги в бездну-пе
  • 3

    count_unknown_ext
    sloccount — подсчитать исходные строки кода
    (СЛОК) …
    Запустите count_unknown_ext
  • 4

    курьер-конфигурация
    courier-config — отображает сборку
    настройка Courier Mail Server
    Запустить courier-config
  • 5

    гапплетвьювер
    gappletviewer — загружает и запускает апплет
    Запустите гаплетвьюер
  • 6

    пробелы
    mummer — пакет для выравнивания последовательностей
    нескольких геномов…
    Запуск пробелов
  • Больше »

In this post I am going to explain a rather unusual setup which we have implemented for a customer lately: Apache Single Sign On using Active Directory Server. This is not so unusual. The exceptional requirement is Apache running on a Windows Server not on a Linux Server.

For Apache on Windows there is no precompiled Kerberos module available. So we compiled it. Read on to find out how we configured the whole setup.

Please leave a comment on this page and tell us what you think. If we can be of any help let us know!

The Environment
  • Windows Server, Active Directory Server (ADS)
    in this document I will refer to this server as ADS.your.domain@your.domain
  • Windows Server, Apache 2.2
    in this document I will refer to this server as APACHE.your.domain@your.domain
  • Windows Client, e.g Windows 7

When I write your.domain, then replace it with the domain name your ADS is configured for.
When I write YOUR.DOMAIN, replace it with your domain name all in caps.

Create technical Users in ADS
  • User „apachekerb“ is used by Apache when authenticating users against ADS using the Kerberos protocol.
  • User „apacheldap“ is used by Apache for LDAP queries.

When creating these users in ADS make sure „User must change password at next logon“ is unchecked and „Password never expires“ is checked.
Pick a password for both users. In this example I use „zx890as$%^“ for both.

Create Group in ADS

Create ADS group „ApacheSSOAccess“. Add users which may access the Web Server.

Create test Users in ADS

To test the configuration I create two user accounts. One that will be granted access and one that will be denied access:

  • „ssotestgranted@your.domain“ in group „ApacheSSOAccess“
  • „ssotestdenied@your.domain“ not in the group
Create a Kerberos token

Apache needs an access code for accessing the ADS. Execute the following command on the ADS host in a cmd shell. Please be sure to replace APACHE.your.domain@your.domain with the name of the server Apache is installed on!

ktpass -princ HTTP/APACHE.your.domain@your.domain
       -mapuser apachekerb -crypto rc4-hmac-nt
       -ptype KRB5_NT_PRINCIPAL -pass zx890as$%^
       -out c:\apache.keytab

Later I will copy c:\apache.keytab to the Apache Server.

1. Install apache 2.2

Get Apache 2.2 installer from here.
Note you must use Apache 2.2 from the specified source as our mod_auth_kerb
is specifically built for this version. Download it here.

2. Install MIT Kerberos for Windows 4.0.1

Get the MIT Kerberos installer from here.

Choose installation type „Typical“.
Install location is C:\Program Files (x86)\MIT\Kerberos

3. Configure MIT Kerberos

Add to empty file C:\ProgramData\MIT\Kerberos5\krb.ini

[libdefaults]
                debug=true
                default_realm = YOUR.DOMAIN
                dns_lookup_kdc = false
                krb4_config = /etc/krb.conf
                krb4_realms = /etc/krb.realms
                kdc_timesync = 1
                ccache_type = 4
                forwardable = true
                proxiable = true

[realms]
                YOUR.DOMAIN = {
                        kdc = ADS.your.domain
                        admin_server = ADS.your.domain
                        default_domain = your.domain
                }

[domain_realm]
                .your.domain = YOUR.DOMAIN

[login]
                krb4_convert = true
                krb4_get_tickets = false
4. Copy apache.keytab into Apache2.2 conf directory

Now I copy the „apache.keytab“ file from the ADS to the Apache Server. The file needs to end up in „APACHE_HOME\conf\apache.keytab“.

5. Create authsso\index.php in document root

This folder is used to test SSO and authorization.

File: <APACHE DOCUMENT ROOT>\authsso\index.php
Content:

        <html>
         <head>
          <meta http-equiv="Pragma" content="no-cache" />
         </head>
         <body>
          <h1>Authenticated!</h1>
          REMOTE_USER: <?php echo $_SERVER["REMOTE_USER"]; ?></br>
          PHP_AUTH_USER: <?php echo $_SERVER["PHP_AUTH_USER"]; ?></br>
         </body>
        </html>
6. Copy Module mod_auth_kerb.so into Apache modules directory

From: C:\Users\Public\Downloads\mod_auth_kerb.so
To: \modules\mod_auth_kerb.so

Source: Schäuffelhut Berger GmbH

7. Update Apache Config

File: \conf\httpd.conf

Enable modules needed for authorization and authentication:

       LoadModule auth_kerb_module modules/mod_auth_kerb.so
       LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
       LoadModule authz_default_module modules/mod_authz_default.so

Append at the end of httpd.conf:

       # http://shib.ametsoc.org/manual/mod/mod_ldap.html
       # cache ldap results for 60 seconds
       LDAPCacheTTL   60
       LDAPOpCacheTTL 60

        <Location /authsso>
           AuthType KerberosV5
           AuthName "Kerberos Login"
           KrbAuthRealm your.domain
           KrbServiceName HTTP/APACHE.your.domain@your.domain

           # on windows Krb5Keytab only works for absolute paths!
           Krb5Keytab "<APACHE INSTALL DIR>\conf\apache.keytab"

           KrbMethodK5Passwd on
           KrbMethodNegotiate on

           AuthzLDAPAuthoritative on

           # find LDAP user by Kerberos userPrincipalName.
           AuthLDAPURL "ldap://ADS.your.domain/DC=your,DC=domain?userPrincipalName"

           # use Common Name as displayed in ADS
           AuthLDAPBindDN "cn=apacheldap,DC=your,DC=domain"
           AuthLDAPBindPassword "zx890as$%^"

           # use Common Name as displayed in ADS
           # no quotes around GROUP!
           Require ldap-group CN=ApacheSSOAccess,DC=your,DC=domain

           Satisfy All
        </Location>
8. Users that may access /authsso must be set up like ssotestgranted@your.domain

Account name must match „User Principal Name“ for LDAP lookup to succeed.
Account must be member of ldap-group ApacheSSOAccess

Conclusion

Getting this setup to work was a challenge but it was an interesting experience. I hope this blog post will help you. Please leave a comment if you have any suggestions or questions.

  1. Generate a keytab file for your Apache host using the Ktpass tool, where the:
  • Ktpass command should be run with a domain admin
  • password for the -pass argument must comply with Windows Server 2012 standards

Here’s a command example:

ktpass -princ HTTP/uriahl.com@URIAHL.COM -mapuser apache -crypto All -DesOnly -pass P@ssw0rd -ptype KRB5_NT_PRINCIPAL -out apache.keytab

where

  • uriahl.com is the fqdn of the Apache server
  • URIAHL.COM is the Kerberos realm for which the keytab is being generated
  • apache is the active directory being used to map the keytab
  • apache.keytab is the keytab filename

2.Configure the HTTPD VirtualHost to use the auth_kerb_module and its corresponding directives. Note: HTTPD doesn’t usually come with this module already installed, so you may need to install it manually with the following Debian-based add-ons:

apt-get install libapache2-mod-auth-kerb

Centos/RHEL:

yum install mod_auth_kerb

During the installation process, you’ll be prompted about several configuration options. You’ll need to enter your:

  • Kerberos realm name, which, by convention, is your AD domain, written in all UPPERCASE letters (e.g., if your AD domain is domain.uriahl.com, your realm must be named DOMAIN.URIAHL.COM)
  • KDC host (i.e., the hostname of the KDC machine)
  • Administrative server’s hostname (Note: Depending on your setup, you might want to use the same value here as you did for the previous field.)

At this point, be sure to copy over your keytab file (which was generated in Step #1) to your Apache machine and secure it so that only the OS user who’s running Apache has access to it.

An example of a full SSL-equipped Apache VirtualHost configuration that proxies Artifactory and uses Kerberos authentication with the /artifactory location can look like the following (where the Krb5KeyTab directive is pointing to the location of the keytab file):

Listen 443

<VirtualHost *:443>

ServerAdmin uriahl@uriahl.com

ServerName apache.server.com

SSLEngine on

SSLCertificateFile /etc/ssl/certs/cert.crt

SSLCertificateKeyFile /etc/ssl/certs/cert.key

SSLProxyEngine on

ErrorLog “/private/var/log/apache2/uriahl.com-error_log”

CustomLog “/private/var/log/apache2/uriahl.com-access_log” common

<Location /artifactory>

  AuthType Kerberos

  AuthName “Kerberos Login”

KrbMethodNegotiate On

KrbMethodK5Passwd On

KrbAuthRealms DOMAIN.URIAHL.COM

KrbLocalUserMapping On

Krb5KeyTab /usr/local/apache2/keytab/apache.keytab

require valid-user

RewriteEngine On

RewriteCond %{REMOTE_USER} (.+)

RewriteRule . – [E=RU:%1]

RequestHeader set REMOTE_USER %{RU}e

</Location>

RewriteEngine on

RewriteCond %{SERVER_PORT} (.*)

RewriteRule (.*) – [E=my_server_port:%1]

#Note: In the following, the REQUEST_SCHEME header is supported only by Apache versions 2.4 and above:

RewriteCond %{REQUEST_SCHEME} (.*)

RewriteRule (.*) – [E=my_scheme:%1]

RewriteCond %{HTTP_HOST} (.*)

RewriteRule (.*) – [E=my_custom_host:%1]

RewriteRule ^/$  /artifactory/webapp/ [R,L]

RewriteRule ^/artifactory(/)?$  /artifactory/webapp/ [R,L]

RewriteRule ^/artifactory/webapp$  /artifactory/webapp/ [R,L]

RequestHeader set Host %{my_custom_host}e

RequestHeader set X-Forwarded-Port %{my_server_port}e

#Note: In the following, {my_scheme} requires a module that is supported only by Apache version 2.4 and above:

RequestHeader set X-Forwarded-Proto %{my_scheme}e

RequestHeader set X-Artifactory-Override-Base-Url %{my_scheme}e://artifactory_host:8081/artifactory

ProxyPassReverseCookiePath /artifactory /artifactory

ProxyRequests off

ProxyPreserveHost on

ProxyPass /artifactory/ http://artifactory_host:8081/artifactory/

ProxyPassReverse /artifactory/ http://artifactory_host:8081/artifactory/

</VirtualHost>

In this example, you can see a root httpd.conf file, which loads the mod_auth_kerb module by specifying:

LoadModule auth_kerb_module /usr/lib/apache2/modules/mod_auth_kerb.so

Additionally, for the mod_auth_kerb module, the modules below are required for the configuration above to work:
 

mod_headers

mod_proxy

mod_ssl

mod_rewrite

mod_prox_http

3. Configure Artifactory to accept HTTP SSO authentication based on the REMOTE_USER header.

Debugging Common Failures

[Mon Jun 27 12:25:10.517382 2016] [auth_kerb:error] [pid 1375:tid 140157248329472] [client 192.168.99.1:52174] failed to verify krb5 credentials: Server not found in Kerberos database

As regards the Apache error log message, “Server not found in Kerberos database,” information available HEREmay be useful to you.

sources :https://nathanlabadie.com/apache-nifi-ms-sql-and-kerberos-authentication/

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Тестовый vds сервер windows
  • Последнее usb устройство подключенное к этому компьютеру работает неправильно windows 10 микрофон
  • Руль dialog gw 14vr драйвера windows 10
  • Не ставится adb драйвер windows 10
  • Windows xp sp3 ova