2011年4月15日 星期五

[Linux] linux samba透過AD進行認證(CentOS版)

        很多企業內部的PC是透過一個AD Server認證,這AD也可以和LDAP整合,因此若公司內部的儲存部門想讓所有同仁可以透過網芳來存取自己專屬的空間(包含Linux系統使用者),我們可以用samba整合AD認證的作法來讓實現。










環境準備 



必要條件:



1. 軟體:
  • samba
  • kerberos
  • ntp 
2. 其他:
  • 需要可以將samba server加入網域的帳號,這點非常重要,如果你不是AD的管理者,請務必一定要取得具有此權限的帳號才能執行最關鍵的動作。   






設定步驟






  • ntpdate  [IP Address of the ad server]
  • Configure /etc/samba/smb.conf
  • Configure /etc/krb5.conf
  • Configure /var/kerberos/krb5kdc/kdc.conf
  • Configure kerberos so that kinit should work correctly. 有文件說要先讓kinit先可以正常執行,但是我的經驗裡光是設定/etc/krb5.conf似乎沒有辦法正常運作,samba的設定也要搭配才行。
  • Join domain
  • Services start.
         除此之外,還有關於pam.d的設定,這個部份對我而言還蠻複雜的,不過我想先透過實做來輔助了解,所以下面我就將自己設定的經過及遇到問題的過程都貼上來分享。






實作



        我的主機是用kvm來實作,我將他的hostname改為公司配發給我的電腦名稱,如此加入AD網域的時候可以減低出錯誤時Debug的痛苦。






1. /etc/hosts檔中寫上ad serverhostname,很重要!



[a00ylc00@allen127 ~]$ vi /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1               allen127.allen.idv.tw allen127 localhost.localdomain localhost
::1             localhost6.localdomain6 localhost6
192.168.33.5            ad.allen.idv.tw ad  <-----重要!






2. 修改/etc/samba/smb.conf中必要的關鍵字(如果沒有這個檔案,代表套件還沒有安裝,請先安裝套件)



--------------------------------------------------------------------------------------------
[root@allen127 ~]# yum install samba samba-client
安裝samba(server)samba-client(自我測試samba server是否正常運作)
--------------------------------------------------------------------------------------------
在編輯任何檔案之前,永遠記得先複製一份。如此才能隨心所欲地惡搞,增進學習效率。
[root@allen127 ~]# cp /etc/samba/smb.conf /etc/samba/smb.conf.orig



[root@allen127 ~]# vi /etc/samba/smb.conf



[global]
   unix charset = UTF-8
   workgroup = AD <====視網域環境修改網域名稱
   password server = ad.allen.idv.tw <====修改為AD Server名稱
   realm = AD.allen.idv.tw    <====視網域環境修改網域名稱
   security = ads    <=======修改為ads,用ad來做帳號的認證
   idmap uid = 16777216-33554431     <======加入這行為的是讓ad吃進來的帳號跟本機帳號的UID錯開
   idmap gid = 16777216-33554431     <======加入這行為的是讓ad吃進來的群組跟本機帳號的GID錯開
   winbind separator = + <=======在下wbinfo -u 的時候,可以分辨本機uidad上的uid,比如ad+[帳號名稱]
   template shell = /bin/bash
   template homedir = /home/%U
   winbind enum users = yes       <====加上這個才可以正確地得到getent passwd的資料
   winbind enum groups = yes <====加上這個才可以正確地得到getent passwd的資料
   winbind use default domain = true
   winbind offline logon = false






3. 修改/etc/krb5.conf/var/kerberos/krb5kdc/kdc.conf中必要的關鍵字(如果沒有這個檔案,代表套件還沒有安裝,請先安裝套件)



--------------------------------------------------------------------------------------------
[root@allen127 ~]# yum install krb5-server krb5-workstation
--------------------------------------------------------------------------------------------



一樣,記得先備份要修改的檔案



[root@allen127 ~]# cp /etc/krb5.conf /etc/krb5.conf.orig






/etc/krb5.conf
-------------------------/etc/krb5.conf--------------------------
 [libdefaults]
 default_realm = AD.ALLEN.IDV.TW
 dns_lookup_realm = true
 dns_lookup_kdc = false
 ticket_lifetime = 24h
 forwardable = yes



[realms]
allen.idv.tw = {
  kdc = 192.168.33.5:88
  admin_server = 192.168.33.5:749
  default_domain = AD.ALLEN.IDV.TW
 }



[domain_realm]
 .ad.allen.idv.tw = AD.ALLEN.IDV.TW
 ad.allen.idv.tw = AD.ALLEN.IDV.TW
-----------------------/etc/krb5.conf---------------------------






/var/kerberos/krb5kdc/kdc.conf
------------------------------------------
[realms]
 allen.idv.tw = {
  #master_key_type = des3-hmac-sha1
  acl_file = /var/kerberos/krb5kdc/kadm5.acl
  dict_file = /usr/share/dict/words
  admin_keytab = /var/kerberos/krb5kdc/kadm5.keytab
  supported_enctypes = des3-hmac-sha1:normal arcfour-hmac:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal des-cbc-crc:v4 des-cbc-crc:afs3
 }
------------------------------------------






4. ad server加入/etc/resolve.conf



nameserver 192.168.33.5






5. 加入ad
[root@allen127 ~]# net ads join -U samba
samba's password:
Using short domain name -- AD
DNS update failed!   看了頗礙眼,要讓這個訊息消失
Joined 'allen127' to realm 'AD.ALLEN.IDV.TW'
[root@allen127 ~]#
成功!

還有後續,實際做認證及存取資源的部份,給我時間再繼續寫。

沒有留言:

張貼留言

艾倫搜尋企業級的Open Source Solutions,提供簡易好上手的教學文件。