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