Таким образом мы создаем файл keytab на контроллере домена, в PS, под админской учеткой (PS от админа!) для специально созданного сервисного пользовате в AD - akhchservice@CORP.DOMAIN.LOCAL
ktpass /princ HTTP/srv-multiweb.corp.domain.local@CORP.DOMAIN.LOCAL /mapuser akhchservice@CORP.DOMAIN.LOCAL /crypto ALL /ptype KRB5_NT_PRINCIPAL /out C:\multiweb.keytab /pass *
Будет запрошен пароль, следует ввести пароль, который назначался при создании пользователя akhchservicе.
Затем файл C:\multiweb.keytab следует перенести на Linux-сервер в нужный каталог, напр. /etc
Усложняем задачу - на том же web-сервере появляется новый виртуал-хост - srv-phonebook, нужно добавить этого принципала в keytab-файл.
Опять идем на контроллер домена, под админской учеткой вводим следующую команду в PS:
ktpass /princ HTTP/srv-phonebook.corp.domain.local@CORP.DOMAIN.LOCAL /mapuser akhchservice@CORP.DOMAIN.LOCAL /crypto All /ptype KRB5_NT_PRINCIPAL /in C:\multiweb.keytab /out C:\multiweb2.keytab /setupn /setpass /pass *
При этом, новый файл - C:\multiweb2.keytab создается на основе файла C:\multiweb.keytab, который так и лежал на КД в корне диска С. Запрашивается пароль для akhchservice@CORP.DOMAIN.LOCAL, вводим его, переносим файл multiweb2.keytab на Linux.
Можем просмотреть содержимое файла multiweb2.keytab на Linux.
klist -K -e -t -k /etc/multiweb2.keytab
Keytab name: FILE:/etc/multiweb2.keytab
KVNO Timestamp Principal
---- ------------------- ------------------------------------------------------
6 01.01.1970 03:00:00 HTTP/srv-multiweb.corp.domain.local@CORP.DOMAIN.LOCAL (des-cbc-crc) (0x4f29081ab51f8c7c)
6 01.01.1970 03:00:00 HTTP/srv-multiweb.corp.domain.local@CORP.DOMAIN.LOCAL (des-cbc-md5) (0x4f29081ab51f8c7c)
6 01.01.1970 03:00:00 HTTP/srv-multiweb.corp.domain.local@CORP.DOMAIN.LOCAL (arcfour-hmac) (0x8867da9b89eb48be56b132c9a176f9da)
6 01.01.1970 03:00:00 HTTP/srv-multiweb.corp.domain.local@CORP.DOMAIN.LOCAL (aes256-cts-hmac-sha1-96) (0xcec5a1d9182afd58cea26323e044f5c4b8bdd839474880c13e1c4c59d0724f7d)
6 01.01.1970 03:00:00 HTTP/srv-multiweb.corp.domain.local@CORP.DOMAIN.LOCAL (aes128-cts-hmac-sha1-96) (0x2f750fd25ff19a57a61249716a2f7614)
6 01.01.1970 03:00:00 HTTP/srv-phonebook.corp.domain.local@CORP.DOMAIN.LOCAL (des-cbc-crc) (0xe091fd80c438b67a)
6 01.01.1970 03:00:00 HTTP/srv-phonebook.corp.domain.local@CORP.DOMAIN.LOCAL (des-cbc-md5) (0xe091fd80c438b67a)
6 01.01.1970 03:00:00 HTTP/srv-phonebook.corp.domain.local@CORP.DOMAIN.LOCAL (arcfour-hmac) (0x8867da9b89eb48be56b132c9a176f9da)
6 01.01.1970 03:00:00 HTTP/srv-phonebook.corp.domain.local@CORP.DOMAIN.LOCAL (aes256-cts-hmac-sha1-96) (0x5e8baa1ee5ece62022fc7b5db0d972d3d4e32fe14350575adcab6e88a0d480ad)
6 01.01.1970 03:00:00 HTTP/srv-phonebook.corp.domain.local@CORP.DOMAIN.LOCAL (aes128-cts-hmac-sha1-96) (0x6221daab711b0c124e12e26af6cb0d5b)
Таким образом мы можем создавать на одном web-сервере множество виртуал-хостов для доменной авторизации.
Ну и на всякий случай листинг файлов с упоминанием keytab.
cat /etc/krb5.conf
[libdefaults]
default_realm = CORP.DOMAIN.LOCAL
kdc_timesync = 1
ccache_type = 4
forwardable = true
proxiable = true
v4_instance_resolve = false
v4_name_convert = {
host = {
rcmd = host
ftp = ftp
}
plain = {
something = something-else
}
}
fcc-mit-ticketflags = true
# test default_keytab_name = FILE:/etc/multiweb.keytab
default_keytab_name = FILE:/etc/multiweb2.keytab
[realms]
CORP.DOMAIN.LOCAL = {
kdc = dc
kdc = dc2
admin_server = dc
default_domain = CORP.DOMAIN.LOCAL
}
[domain_realm]
.corp.domain.local = CORP.DOMAIN.LOCAL
corp.domain.local = CORP.DOMAIN.LOCAL
[login]
krb4_convert = false
krb4_get_tickets = false
Один из виртуал-хостов апача. (У нас их два - srv-phonebook и srv-multiweb.)
cat /etc/apache2/sites-available/srv-phonebook.corp.domain.local
<VirtualHost *:80>
ServerName srv-phonebook
DocumentRoot /var/www/html/srv-phonebook
ServerAlias srv-phonebook.corp.domain.local
<Directory /var/www/html/srv-phonebook>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
allow from all
</Directory>
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" combined
CustomLog ${APACHE_LOG_DIR}/srv-phonebooki_access.log combined
ErrorLog ${APACHE_LOG_DIR}/srv-phonebook_error.log
</VirtualHost>
<Location />
AuthType Kerberos
KrbAuthRealms CORP.DOMAIN.LOCAL
KrbServiceName HTTP/srv-phonebook.corp.domain.local@CORP.DOMAIN.LOCAL
# тест Krb5Keytab /etc/multiweb.keytab
Krb5Keytab /etc/multiweb2.keytab
KrbMethodNegotiate On
KrbMethodK5Passwd Off
require valid-user
</Location>