This is an old revision of the document!
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.
# cat /etc/hosts ... #192.168.X.1 gate.corpX.un gate #192.168.X.10 server.corpX.un server ...
[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";
};
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";
};
server# cd /etc/namedb/master/
server# cd /var/cache/bind/
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
[server:~] # /etc/rc.d/named start
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
# 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
# cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime # date 201504070842 Tue Apr 7 08:42:00 MSD 2015
# cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime # date 040708422015 Tue Apr 7 08:42:00 MSD 2015
[server:~] # /etc/rc.d/nfsd stop [server:~] # /etc/rc.d/mountd stop [server:~] # /etc/rc.d/ypserv stop [server:~] # /etc/rc.d/rpcbind restart [server:~] # /etc/rc.d/ypserv start [server:~] # /etc/rc.d/mountd start [server:~] # /etc/rc.d/nfsd start
[server:~] # cat /etc/rc.conf ... kerberos5_server_enable="YES" ...
root@server:~# apt-get install heimdal-kdc root@server:~# ls /var/lib/heimdal-kdc/*
!!! В виртуальной машине 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/
server# cat /etc/krb5.conf
[libdefaults]
default_realm = CORPX.UN
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
# kadmin -l kadmin> add user1 ... user1@CORPX.UN's Password: kpassword1 Verifying - user@CORPX.UN's Password: kpassword1 kadmin> list * kadmin> quit
root@server:~# kadmin.local kadmin.local: addprinc user1 ... Enter password for principal "user@CORPX.UN": kpassword1 Re-enter password for principal "user@CORPX.UN": kpassword1 kadmin.local: listprincs ... user1@CORPX.UN
[server:~] # /etc/rc.d/kerberos start
root@server:~# /etc/init.d/heimdal-kdc restart
root@server:~# /etc/init.d/krb5-kdc restart
root@gate:~# apt-get install heimdal-clients
root@gate:~# apt-get install krb5-user
gate# cat /etc/krb5.conf
[libdefaults]
default_realm = CORPX.UN
server# kinit user1 server# klist server# kdestroy gate# kinit user1 gate# klist gate# kdestroy
Generic Security Services Application Program Interface
server# kadmin -l kadmin> add -r host/gate.corpX.un ... kadmin>
root@server:~# kadmin.local kadmin.local: addprinc -randkey host/gate.corpX.un ... kadmin.local:
kadmin> ext -k /usr/student/gate.keytab host/gate.corpX.un kadmin> quit
kadmin.local: ktadd -k /usr/student/gate.keytab host/gate.corpX.un kadmin.local: quit
server# chown student ~student/gate.keytab gate# scp student@server:gate.keytab .
gate# ktutil copy gate.keytab /etc/krb5.keytab gate# touch /etc/srvtab gate# ktutil list ...
root@gate:~# ktutil ktutil: rkt gate.keytab ktutil: list ktutil: wkt /etc/krb5.keytab ktutil: quit
gate# cat /etc/ssh/sshd_config ... GSSAPIAuthentication yes ...
server# cat /etc/ssh/ssh_config ... GSSAPIAuthentication yes ...
[server:~] # 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 ...
root@server:~# apt-get install libpam-heimdal
root@server:~# apt-get install libpam-krb5
root@server:~# cat /etc/pam.d/sshd ... auth sufficient pam_krb5.so # Standard Un*x authentication. ...
user@server$ ssh -vv gate.corpX.un gate# /usr/sbin/sshd -d