kerberos是由MIT開發的提供網絡認證服務的系統,很早就聽說過它的大名,但壹直沒有使用過它。它可用來為網絡上的各種server提供認證服務,使得口令不再是以明文方式在網絡上傳輸,並且聯接之間通訊是加密的;它和PKI認證的原理不壹樣,PKI使用公鑰體制(不對稱密碼體制),kerberos基於私鑰體制(對稱密碼體制)。 本篇文章不打算詳細講解kerberos的工作原理,而是側重介紹在redhat8.0環境下如何使用kerberos自己提供的Ktelnetd,Krlogind,Krshd來替代傳統的telnetd,rlogind,rshd服務,有關kerberos工作的原理可以參考《Kerberos:AN Authentication Services for Computer Networks》。 安裝環境:壹臺i386機器。 安裝包:krb5-server-1.2.5-6,krb5-workstation-1.2.5-6,krb5-libs-1.2.5-6 rpm -ivh krb5-libs-1.2.5-6.i386.rpm rpm -ivh krb5-server-1.2.5-6.i386.rpm rpm -ivh krb5-workstation-1.2.5-6.i386.rpm 上述要求滿足後,我們就可以先配KDC服務器,然後再配Ktelnetd,Krlogind,Krsh服務器,最後就可以使用krb5-workstation提供的telnet,rlogin,rsh來登錄這些服務了。下面是安裝步驟: 1、生成kerberos的本地數據庫 kdb5_util create -r EXAMPLE.COM -s 這個命令用來生成kerberos的本地數據庫,包括幾個文件:principal,principal.OK,principal.kadm5,principal.kadm5.lock. -r 指定realm(kerberos術語),我們隨便取壹個叫EXAMPLE.COM. 2、生成賬號 kerberos用principal(kerberos術語)來表示realm下的壹個帳戶,表示為primary/instance@realm,舉個例子就是username/9.181.92.90@EXAMPLE.COM,這裏假設9.181.92.90是妳機器的ip地址. 在數據庫中加入管理員帳戶: /usr/kerberos/sbin/kadmin.local kadmin.local: addprinc admin/admin@EXAMPLE.COM 在數據庫中加入用戶的帳號: kadmin.local: addprinc username/9.181.92.90@EXAMPLE.COM 在數據庫中加入Ktelnetd,Krlogind,Krshd公用的帳號: kadmin.local: addprinc -randkey host/9.181.92.90@EXAMPLE.COM 3、檢查/var/kerberos/krb5kdc/kadm5.keytab是否有下列語句: */admin@EXAMPLE.COM * 若沒有,那麽就添上。 4、修改/etc/krb5.conf文件,修改所有的realm為EXAMPLE.COM,並且加入下列句子 kdc = 9.181.92.90:88 admin_server = 9.181.92.90:749 5、在/etc/krb.conf中加入下列語句: EXAMPLE.COM EXAMPLE.COM 9.181.92.90:88 EXAMPLE.COM 9.181.92.90:749 admin server 6、啟動kdc服務器和Ktelnetd,Krlogind,Krshd /etc/init.d/krb5kdc restart chkconfig klogin on chkconfig kshell on chkconfig eklogin on chkconfig krb5-telnet on /etc/init.d/xinetd restart 7、制作本地緩存 將username/9.181.92.90@EXAMPLE.COM的credentials(kerberos術語)取到本地做為cache,這樣以後就可以不用重復輸入password了。 kinit username/9.181.92.90 如果順利的話,在/tmp下面會生成文件krb5*;這步如果不通,那麽就必須檢查以上步驟是否有漏。 可以用klist命令來查看credential。 8、導出用戶密匙 export host/9.181.92.90@EXAMPLE.COM的key到/etc/krb5.keytab,Ktelnetd、Krlogind和Krshd需要/etc/krb5.keytab來驗證username/9.181.92.90的身份。 kadmin.local: ktadd -k /etc/krb5.keytab host/9.181.92.90 9、修改~/.k5login文件 在其中加入username/9.181.92.90@EXAMPLE.COM,表示允許username/9.181.92.90@EXAMPLE.COM登錄該帳戶 cat username/9.181.92.90@EXAMPLE.COM >>~/.k5login 10、測試kerberos客戶端 krsh 9.181.92.90 -k EXAMPLE.COM ls krlogin 9.181.92.90 -k EXAMPLE.COM rlogin 9.181.92.90 -k EXAMPLE.COM rsh 9.181.92.90 -k EXAMPLE.COM telnet -x 9.181.92.90 -k EXAMPLE.COM