User Tools

Site Tools


аутентификация_с_использованием_kerberos_сервера

This is an old revision of the document!


Table of Contents

Аутентификация с использованием KERBEROS сервера

http://www.freebsd.org/doc/ru_RU.KOI8-R/books/handbook/kerberos5.html

Сервер Kerberos свободно распространяет TGT (Ticket Granting Ticket) на каждый неавторизованный запрос; однако, каждый TGT зашифрован ключом, полученным из пароля пользователя. Следовательно, когда пользователь вводит свой пароль, он не отправляется на KDC, а используется для расшифровки TGT, который уже получен kinit. Если в процессе расшифровки получается правильный билет с правильным значением времени, у пользователя есть действующее удостоверение. Это удостоверение содержит ключ сессии для установления безопасного соединения с сервером Kerberos, как и действующий TGT, зашифрованный ключом сервера Kerberos. Второй уровень шифрования недоступен пользователю, но позволяет серверу Kerberos проверять правильность каждого TGT.

Предварительная настройка стенда

Настройка DNS сервера

FreeBSD

[server:~] # cat /etc/rc.conf
...
named_enable="YES"
...

[server:~] # cat /etc/namedb/named.conf 
options {
        directory       "/etc/namedb";
        pid-file        "/var/run/named/pid";
};

zone "." {
        type hint;
        file "named.root";
};

zone "corpX.un" {
        type master;
        file "master/corpX.un";
};

zone "X.168.192.IN-ADDR.ARPA" {
        type master;
        file "master/corpX.rev";
};

Ubuntu

root@server:~# apt-get install bind9

root@server:~# cat /etc/bind/named.conf.local
zone "corpX.un" {
        type master;
        file "/var/cache/bind/corpX.un";
};

zone "X.168.192.in-addr.arpa" {
        type master;
        file "/var/cache/bind/corpX.rev";
};

Описание файлов зон

FreeBSD

server# cd /etc/namedb/master/

Ubuntu

server# cd /var/cache/bind/

FreeBSD/Ubuntu

server# cat corpX.un
$TTL    3h
@                   SOA     server root.server  1 1d 12h 1w 3h
                    NS      server
server              A       192.168.X.10
gate                A       192.168.X.1
_kerberos._udp      SRV     01 00 88 server
_kerberos._tcp      SRV     01 00 88 server
_kpasswd._udp       SRV     01 00 464 server
_kerberos-adm._tcp  SRV     01 00 749 server
_kerberos           TXT     CORPX.UN
server# cat corpX.rev 
$TTL    3h
@       SOA     server.corpX.un. root.server.corpX.un.  1 1d 12h 1w 3h
        NS      server.corpX.un.
10      PTR     server.corpX.un.
1       PTR     gate.corpX.un.
server# named-checkconf -z

server# named-checkzone corpX.un corpX.un

server# named-checkzone X.168.192.in-addr.arpa. corpX.rev

Запуск сервиса

FreeBSD

[server:~] # /etc/rc.d/named start

Ubuntu

root@server:~# /etc/init.d/bind9 restart

Настройки клиентов

server# cat /etc/resolv.conf
domain corpX.un
nameserver 127.0.0.1

gate# cat /etc/resolv.conf
domain corpX.un
nameserver 192.168.X.10

client1# cat /etc/resolv.conf
domain corpX.un
nameserver 192.168.X.10

Проверки (на gate client1 и server)

# host ya.ru
# host gate.corpX.un
# host server.corpX.un
# host 192.168.X.10
# host 192.168.X.1
# dig TXT _kerberos.corpX.un
# dig SRV _kerberos._tcp.corpX.un

Cинхронизация времени (может потребоваться рестарт служб NIS, NFS и RPCBIND)

FreeBSD

# cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime

# date 201504070842
Tue Apr  7 08:42:00 MSD 2015

Ubuntu

# cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime

# date 040708422015
Tue Apr  7 08:42:00 MSD 2015

Настройка KDC сервера

FreeBSD Heimdal

[server:~] # cat /etc/rc.conf
...
kerberos5_server_enable="YES"
...

FreeBSD MIT

[server:~] # pkg_add -r krb5-18

[server:~] # mkdir -p /usr/local/var/krb5kdc/

[server:~] # kdb5_util create -s

[server:~] # /usr/local/sbin/krb5kdc

[server:~] # kadmin.local

Ubuntu Heimdal (8.04)

root@server:~# apt-get install heimdal-kdc

root@server:~# ls /var/lib/heimdal-kdc/*

Ubuntu MIT (10.04)

!!! В виртуальной машине krb5_newrealm может зависать

root@server:~# apt-get install krb5-kdc krb5-admin-server

root@server:~# krb5_newrealm
...
Enter KDC database master key:
Re-enter KDC database master key to verify:

root@server:~# ls -l /var/lib/krb5kdc/

Ubuntu/FreeBSD

server# cat /etc/krb5.conf
[libdefaults]
    default_realm = CORPX.UN

Инициализация базы данных (FreeBSD)

server# kstash 
Master key: 123

server# kadmin -l
kadmin> init CORPX.UN
Realm max ticket life [unlimited]:
Realm max renewable ticket life [unlimited]:
kadmin> quit

Регистрация принципалов пользователей в базе данных kerberos

FreeBSD, Ubuntu (8.04)

# kadmin -l
kadmin> add user1
...
user1@CORPX.UN's Password: kpassword1
Verifying - user@CORPX.UN's Password: kpassword1
...
kadmin> add user2
...

kadmin> list *

kadmin> quit

Ubuntu (10.04)

root@server:~# kadmin.local

kadmin.local:  addprinc user1
...
Enter password for principal "user1@CORPX.UN": kpassword1
Re-enter password for principal "user1@CORPX.UN": kpassword1
...
kadmin.local:  addprinc user2
...
kadmin.local:  listprincs
...
user1@CORPX.UN

Запуск сервиса

FreeBSD

[server:~] # /etc/rc.d/kerberos start

Ubuntu (8.04)

root@server:~# /etc/init.d/heimdal-kdc restart

Ubuntu (10.04)

root@server:~# /etc/init.d/krb5-kdc restart

Настройка Kerberos клиента (на gate и client1)

Инсталляция и настройка клиента

Ubuntu (8.04)

root@gate:~# apt-get install heimdal-clients

root@client1:~# apt-get install heimdal-clients

Ubuntu (10.04)

root@gate:~# apt-get install krb5-user

root@client1:~# apt-get install krb5-user

Настройка Kerbros Realm

gate# cat /etc/krb5.conf
[libdefaults]
    default_realm = CORPX.UN
   

client1# cat /etc/krb5.conf
[libdefaults]
    default_realm = CORPX.UN 

Проверки

server# kinit user1
server# klist
server# kdestroy

gate# kinit user1
gate# klist
gate# kdestroy

client1# kinit user1
client1# klist
client1# kdestroy

Использование протокола GSSAPI для сервиса sshd

Generic Security Services Application Program Interface

Регистрация принципала сервиса в базе данных kerberos

FreeBSD, Ubuntu (8.04)

server# kadmin -l
kadmin> add -r host/gate.corpX.un
...
kadmin> list *

kadmin> 

Ubuntu (10.04)

root@server:~# kadmin.local
kadmin.local:  addprinc -randkey host/gate.corpX.un
...
kadmin.local:  listprincs

kadmin.local:  

Перемещение ключа сервиса на сервер

FreeBSD, Ubuntu (8.04)

kadmin> ext -k gatehost.keytab host/gate.corpX.un
kadmin> quit

Ubuntu (10.04)

kadmin.local:  ktadd -k gatehost.keytab host/gate.corpX.un
...

kadmin.local:  quit

FreeBSD, Ubuntu

server# scp gatehost.keytab student@gate:

FreeBSD, Ubuntu (8.04)

gate# ktutil copy /usr/student/gatehost.keytab /etc/krb5.keytab
gate# touch /etc/srvtab

gate# ktutil list
...

Ubuntu (10.04)

root@gate:~# ktutil
ktutil: rkt /usr/student/gatehost.keytab
ktutil: list
ktutil: wkt /etc/krb5.keytab
ktutil: quit

root@gate:~# klist -ek /etc/krb5.keytab

Настройка сервиса sshd на использование GSSAPI

gate# cat /etc/ssh/sshd_config
...
GSSAPIAuthentication yes
...

Настройка клиента ssh на использование GSSAPI

client1# cat /etc/ssh/ssh_config
...
GSSAPIAuthentication yes
...

Использование pam kerberos для сервиса login

Настройка pam

FreeBSD

[client1:~] # cat /etc/pam.d/system
...
# auth
...
auth            sufficient      pam_krb5.so             no_warn try_first_pass
#auth           sufficient      pam_ssh.so              no_warn try_first_pass
auth            required        pam_unix.so             no_warn try_first_pass nullok
...

Ubuntu (8.04)

root@client1:~# apt-get install libpam-heimdal

Ubuntu (10.04)

root@client1:~# apt-get install libpam-krb5

Ubuntu (все настроится автоматически)

root@client1:~# cd /etc/pam.d/
root@client1:/etc/pam.d/# grep krb5 *
...

Отладка

user1@client1$ ssh -vv gate.corpX.un

gate# /usr/sbin/sshd -d
аутентификация_с_использованием_kerberos_сервера.1285845198.txt.gz · Last modified: 2013/05/22 13:50 (external edit)