kerberos的安裝配置

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