天天看點

将CnetOS 6.5加入Windows域中

我相信,很多公司都有統一身份認證的需求,隻是這個統一認證很多公司都沒有徹底完成,比如我見到的很多企業都使用Windows AD來管理辦公電腦,筆記本等運作windows作業系統的計算機,而IDC機房大多是Linux系統的伺服器,這些都采用ldap(如openldap)來做身份認證,但是Windows AD和ldap基本上就沒有什麼關系了。問過一兩個企業的系統管理者,也基本清楚,主要是伺服器的數量就那麼多,而且大部分使用者是不需要登入伺服器的,是以隻有運維人員才需要進行伺服器管理,是以使用ldap統一來認證就可以了(當然有些應用是需要使用ldap登入的,比如内部的OA系統,當然很多應用系統也都能結合Windows AD或ldap使用)。其次,就是windows AD無法很好的結合其他的ldap認證,當然通過samba等也可以實作,隻不過方法比較複雜,是以在基本滿足要求的情況下Windows AD就和ldap“和平共處了”。

由于将windows作業系統計算機加入ldap中相對複雜,是以很多情況下,為了能實作統一身份認證,大家一般采取的方式是将Linux加入到Windows AD中去,而且Windows AD是微軟推出的較早的活動目錄服務,穩定性還是比較好的,另外就是外圍的一些軟體,比如微軟自帶的Active Directory管理工具有較好的易用性,再者在網上看到Windows AD的資料存儲讀取上速度是相對快的,大約是MySQL等資料庫的幾倍吧(不太确定,隻是浏覽過類似内容,記不太清了),是以有很多公司都選擇Windows AD作為ldap的資料源。下面就以CentOS 6.5為例,将它加入到Windows AD中。

1、準備工作

<code>/etc/init</code><code>.d</code><code>/iptables</code> <code>stop</code>

<code>iptables -L -n</code>

<code>setenforce 0</code>

<code>getenforce</code>

<code>hostname</code> <code>centos6</code>

另外,需要準備一台Windows Server并安裝Windows AD,我這裡使用Windows Server 2008 R2安裝一個AD,域名為contoso.com,是windows 2003級别的域,詳細資訊如下圖所示:

<a href="http://s2.51cto.com/wyfs02/M02/87/45/wKiom1fZHpvCofs7AAD8BbDwg-4835.png-wh_500x0-wm_3-wmp_4-s_4121137216.png" target="_blank"></a>

這是域名的詳細資訊

<a href="http://s2.51cto.com/wyfs02/M01/87/42/wKioL1fZHrbx6eQzAADMfALq11Q063.png-wh_500x0-wm_3-wmp_4-s_2729281269.png" target="_blank"></a>

這是使用者組資訊,其中sadmin是我新建立的一個使用者。

<a href="http://s2.51cto.com/wyfs02/M00/87/42/wKioL1fZHtSwzFS6AAAxnADm8Qw317.png-wh_500x0-wm_3-wmp_4-s_935178602.png" target="_blank"></a>

這是域控制器的網絡資訊。

2、安裝需要的軟體包

<code>yum -y </code><code>install</code> <code>krb5-libs krb5-devel pam_krb5 krb5-workstation krb5-auth-dialog krb5-auth-dialog</code>

<code>yum -y </code><code>install</code> <code>samba-winbind samba samba-common samba-client samba-winbind-clients samba-swat</code>

[root@localhost ~]# rpm -qa|grep krb5

krb5-libs-1.10.3-57.el6.x86_64

krb5-devel-1.10.3-57.el6.x86_64

krb5-workstation-1.10.3-57.el6.x86_64

krb5-auth-dialog-0.13-5.el6.x86_64

pam_krb5-2.3.11-9.el6.x86_64

[root@localhost ~]# rpm -qa|grep samba

samba-client-3.6.23-36.el6_8.x86_64

samba-swat-3.6.23-36.el6_8.x86_64

samba-common-3.6.23-36.el6_8.x86_64

samba-winbind-3.6.23-36.el6_8.x86_64

samba-3.6.23-36.el6_8.x86_64

samba-winbind-clients-3.6.23-36.el6_8.x86_64

啟動服務

<code>/etc/init</code><code>.d</code><code>/smb</code> <code>start</code>

<code>chkconfig smb on</code>

<code>service winbind start</code>

<code>chkconfig winbind on</code>

3、使用圖形化工具配置kerberos和samba

這裡主要是因為使用配置檔案去更改,工作量大而且容易出錯,是以選擇圖形界面進行配置,我會在後面把配置成功後的相關配置檔案貼出來,這樣如果需要使用配置檔案也有正确的配置可以參考。

在進入setup圖形界面之前執行下面兩條指令,以免圖形界面亂碼或者python代碼執行出錯:

<code>LANG=en</code>

<code>export</code> <code>LC_ALL=C</code>

<a href="http://s4.51cto.com/wyfs02/M02/87/44/wKiom1fZEf3ShbGuAABFKfZwUQk760.png-wh_500x0-wm_3-wmp_4-s_3391681538.png" target="_blank"></a>

在指令行界面輸入setup進入圖形化配置界面

<a href="http://s3.51cto.com/wyfs02/M00/87/42/wKioL1fZEjaD6elnAABlHlmkJ98098.png-wh_500x0-wm_3-wmp_4-s_1207369634.png" target="_blank"></a>

這裡除了原來已經預設選中的Use MD5 Passwords和Use Shadow Passwords之外,需要把Use Winbind、Use Kerberos以及Use Winbind Authentication這三個選項勾選上。

<a href="http://s4.51cto.com/wyfs02/M02/87/44/wKiom1fZEtbz-i6oAABKyUhxclw307.png-wh_500x0-wm_3-wmp_4-s_4011421952.png" target="_blank"></a>

配置Kerberos,需要把Admin Server删掉,然後其他的按照真實情況填寫。這裡,Realm是你的域名,比如我的windows AD域名為contoso.com,注意:域名一定要大寫!KDC為域控制器的IP位址,這裡是192.168.49.201,下面兩項關于DNS的都不選。

<a href="http://s3.51cto.com/wyfs02/M02/87/44/wKiom1fZE5yQlbkJAABhjxTOmYU333.png-wh_500x0-wm_3-wmp_4-s_715226580.png" target="_blank"></a>

Winbind的配置,Domain為域名的第一個“.”左側的部分,如這裡是CONTOSO,注意隻要是域名的部分都需要大寫。Domain Controllers依然是域控制器的IP位址,ADS Realm是域名,Template Shell為給AD使用者設定使用的shell。

<a href="http://s2.51cto.com/wyfs02/M00/87/42/wKioL1fZFDyCOJ5kAABU0njG0sk515.png-wh_500x0-wm_3-wmp_4-s_474318238.png" target="_blank"></a>

這裡儲存配置,選擇Yes,其實這裡隻要儲存了之後,配置檔案就已經将更改寫入了。

<a href="http://s4.51cto.com/wyfs02/M02/87/44/wKiom1fZFGfiILlPAABF7pszwYQ415.png-wh_500x0-wm_3-wmp_4-s_1403711318.png" target="_blank"></a>

這裡需要輸入Windows AD中的管理者密碼,有點類似将Windows加入AD中的步驟,如果配置都正常的話,這裡就會顯示Joined CONTOSO.

4、排錯步驟

<a href="http://s3.51cto.com/wyfs02/M01/87/42/wKioL1fZFPXT_t1aAABRvsB6dOs432.png-wh_500x0-wm_3-wmp_4-s_1239089476.png" target="_blank"></a>

<a href="http://s1.51cto.com/wyfs02/M02/87/44/wKiom1fZFPbAXwm4AABCjOtA2IY205.png-wh_500x0-wm_3-wmp_4-s_42140079.png" target="_blank"></a>

<a href="http://s1.51cto.com/wyfs02/M02/87/42/wKioL1fZFPbRekCdAABwK2p6HW4069.png-wh_500x0-wm_3-wmp_4-s_2317792847.png" target="_blank"></a>

1)測試連接配接AD Server

<code>kinit [email protected]</code>

Kerberos 的 kinit 指令将測試伺服器間的通信,後面的域名TT.COM 是你的活動目錄的域名,必須大寫,否則會收到錯誤資訊:

kinit(v5): Cannot find KDC for requested realm while getting initial credentials.

如果通信正常,你會提示輸入密碼,密碼正确的話,就傳回 bash 提示符,如果錯誤則報告:

kinit(v5): Preauthentication failed while getting initial credentials.

這一步代表了已經可以和AD server做溝通了,但并不代表Samba Server已經加入域了。

2)設定CentOS DNS為Windows AD的IP位址

[root@centos6 ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0 

[root@centos6 ~]# service network restart

Shutting down interface eth0:                              [  OK  ]

Shutting down loopback interface:                          [  OK  ]

Bringing up loopback interface:                            [  OK  ]

Bringing up interface eth0:  Determining if ip address 192.168.49.134 is already in use for device eth0...

                                                           [  OK  ]

[root@centos6 ~]# cat /etc/resolv.conf

; generated by /sbin/dhclient-script

search localdomain

nameserver 192.168.49.201

nameserver 192.168.49.2

[root@centos6 ~]# nslookup contoso.com

Server:192.168.49.201

Address:192.168.49.201#53

Name:contoso.com

Address: 192.168.49.201

3)檢查/etc/nsswith.conf檔案

确認其中存在以下内容:

passwd:     files winbind

shadow:     files

group:      files winbind

4)重新開機samba和winbind服務

<code>service smb reload   </code><code>#加這一句是用來解決有時候samba啟動不了的問題</code>

<code>service smb restart</code>

<code>service winbind restart</code>

5)Windows AD的防火牆暫時關閉

6)加入AD域

<code>net rpc </code><code>join</code> <code>-S </code><code>dc</code><code>.contoso.com -U administrator</code>

[root@centos6 ~]# net rpc join -S dc.contoso.com -U administrator

Enter administrator's password:

Joined domain CONTOSO.

7)驗證是否加入成功

[root@centos6 ~]# net rpc testjoin

Join to 'CONTOSO' is OK

[root@centos6 ~]# wbinfo -t

checking the trust secret for domain CONTOSO via RPC calls succeeded

[root@centos6 ~]# wbinfo -u

administrator

guest

krbtgt

sadmin

[root@centos6 ~]# wbinfo -g

domain computers

domain controllers

schema admins

enterprise admins

cert publishers

domain admins

domain users

domain guests

group policy creator owners

ras and ias servers

allowed rodc password replication group

denied rodc password replication group

read-only domain controllers

enterprise read-only domain controllers

dnsadmins

dnsupdateproxy

[root@centos6 ~]# getent passwd

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

adm:x:3:4:adm:/var/adm:/sbin/nologin

lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

sync:x:5:0:sync:/sbin:/bin/sync

shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

halt:x:7:0:halt:/sbin:/sbin/halt

mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin

operator:x:11:0:operator:/root:/sbin/nologin

games:x:12:100:games:/usr/games:/sbin/nologin

gopher:x:13:30:gopher:/var/gopher:/sbin/nologin

ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

nobody:x:99:99:Nobody:/:/sbin/nologin

dbus:x:81:81:System message bus:/:/sbin/nologin

vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin

abrt:x:173:173::/etc/abrt:/sbin/nologin

haldaemon:x:68:68:HAL daemon:/:/sbin/nologin

ntp:x:38:38::/etc/ntp:/sbin/nologin

saslauth:x:499:76:"Saslauthd user":/var/empty/saslauth:/sbin/nologin

postfix:x:89:89::/var/spool/postfix:/sbin/nologin

sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

tcpdump:x:72:72::/:/sbin/nologin

administrator:*:16777216:16777219:Administrator:/home/administrator:/bin/bash

guest:*:16777217:16777220:Guest:/home/guest:/bin/bash

krbtgt:*:16777218:16777219:krbtgt:/home/krbtgt:/bin/bash

sadmin:*:16777219:16777219:sadmin:/home/sadmin:/bin/bash

[root@centos6 ~]# getent group

root:x:0:

bin:x:1:bin,daemon

daemon:x:2:bin,daemon

sys:x:3:bin,adm

adm:x:4:adm,daemon

tty:x:5:

disk:x:6:

lp:x:7:daemon

mem:x:8:

kmem:x:9:

wheel:x:10:

mail:x:12:mail,postfix

uucp:x:14:

man:x:15:

games:x:20:

gopher:x:30:

video:x:39:

dip:x:40:

ftp:x:50:

lock:x:54:

audio:x:63:

nobody:x:99:

users:x:100:

dbus:x:81:

utmp:x:22:

utempter:x:35:

floppy:x:19:

vcsa:x:69:

abrt:x:173:

cdrom:x:11:

tape:x:33:

dialout:x:18:

haldaemon:x:68:haldaemon

ntp:x:38:

saslauth:x:76:

postdrop:x:90:

postfix:x:89:

stapusr:x:156:

stapsys:x:157:

stapdev:x:158:

sshd:x:74:

tcpdump:x:72:

slocate:x:21:

wbpriv:x:88:

domain computers:*:16777226:

domain controllers:*:16777227:

schema admins:*:16777224:sadmin,administrator

enterprise admins:*:16777223:sadmin,administrator

cert publishers:*:16777228:

domain admins:*:16777225:sadmin,administrator

domain users:*:16777219:

domain guests:*:16777220:

group policy creator owners:*:16777229:administrator

ras and ias servers:*:16777230:

allowed rodc password replication group:*:16777231:

denied rodc password replication group:*:16777221:krbtgt

read-only domain controllers:*:16777232:

enterprise read-only domain controllers:*:16777233:

dnsadmins:*:16777222:sadmin

dnsupdateproxy:*:16777234:

[root@centos6 ~]# id sadmin

uid=16777219(sadmin) gid=16777219(domain users) groups=16777219(domain users),16777221(denied rodc password replication group),16777222(dnsadmins),16777223(enterprise admins),16777224(schema admins),16777225(domain admins),16777217(BUILTIN/users),16777216(BUILTIN/administrators)

[root@centos6 ~]# id administrator

uid=16777216(administrator) gid=16777219(domain users) groups=16777219(domain users),16777221(denied rodc password replication group),16777223(enterprise admins),16777224(schema admins),16777229(group policy creator owners),16777225(domain admins),16777217(BUILTIN/users),16777216(BUILTIN/administrators)

8)到Windows AD中檢視

<a href="http://s5.51cto.com/wyfs02/M02/87/44/wKiom1fZGQzA7f_GAABfatshyEY669.png-wh_500x0-wm_3-wmp_4-s_1622042424.png" target="_blank"></a>

<a href="http://s5.51cto.com/wyfs02/M01/87/42/wKioL1fZGQzCKV6xAAApElLm0fY726.png-wh_500x0-wm_3-wmp_4-s_2828158345.png" target="_blank"></a>

已經在AD上的使用者和計算機管理工具中找到新添加的centos6了。

9)測試Windows使用者登入centos6

[root@centos6 ~]# su - administrator

su: warning: cannot change directory to /home/administrator: No such file or directory

-bash-4.1$ pwd

/root

-bash-4.1$ ll

ls: cannot open directory .: Permission denied

-bash-4.1$ 

<a href="http://s4.51cto.com/wyfs02/M02/87/42/wKioL1fZHAejgrBPAAB30GrJtW8023.png-wh_500x0-wm_3-wmp_4-s_3169271174.png" target="_blank"></a>

好的,windows使用者登入成功,至此,将centos6.5加入Windows AD成功完成。

10)下面把相關的配置檔案貼出來

/etc/nsswitch.conf:

[root@centos6 ~]# egrep -v "#|^$" /etc/nsswitch.conf 

passwd:     files winbind

shadow:     files winbind

group:      files winbind

hosts:      files dns

bootparams: nisplus [NOTFOUND=return] files

ethers:     files

netmasks:   files

networks:   files

protocols:  files

rpc:        files

services:   files

netgroup:   files

publickey:  nisplus

automount:  files

aliases:    files nisplus

/etc/samba/smb.conf:

[root@centos6 ~]# egrep -v ";|^$|#" /etc/samba/smb.conf

[global]

   workgroup = CONTOSO

   password server = 192.168.49.201

   realm = CONTOSO.COM

   security = ads

   idmap config * : range = 16777216-33554431

   template shell = /bin/bash

   winbind use default domain = true

   winbind offline logon = true

   template homedir = /home/%U

   winbind separator = /

   winbind enum users = Yes

   winbind enum groups = Yes

server string = Samba Server Version %v

log file = /var/log/samba/log.%m

max log size = 50

passdb backend = tdbsam

security = domain

        encrypt passwords = yes

password server = 192.168.49.201

load printers = yes

cups options = raw

[homes]

comment = Home Directories

        path = /home/%U

browseable = no

writable = yes

        valid users = CONTOSO.COM/%U

        create mode = 0777

        directory mode = 0777

[printers]

comment = All Printers

path = /var/spool/samba

guest ok = no

writable = no

printable = yes

/etc/krb5.conf:

[root@centos6 ~]# egrep -v "#|^$" /etc/krb5.conf

[logging]

 default = FILE:/var/log/krb5libs.log

 kdc = FILE:/var/log/krb5kdc.log

 admin_server = FILE:/var/log/kadmind.log

[libdefaults]

 default_realm = CONTOSO.COM

 dns_lookup_realm = false

 dns_lookup_kdc = false

 ticket_lifetime = 24h

 renew_lifetime = 7d

 forwardable = true

[realms]

 CONTOSO.COM = {

  kdc = 192.168.49.201

 }

[domain_realm]

 contoso.com = CONTOSO.COM

 .contoso.com = CONTOSO.COM

本文轉自 jerry1111111 51CTO部落格,原文連結:http://blog.51cto.com/jerry12356/1852826,如需轉載請自行聯系原作者

繼續閱讀