1. 程式人生 > >Linux AD 身份統一驗證(SSO)

Linux AD 身份統一驗證(SSO)

創建 restart samba kerberos class windows 域 red led sin

http://www.toxingwang.com/linux-unix/linux-admin/584.html

Linux+samba-winbind+AD實現統一認證 2013年04月27日 ? Linux管理 ? 共 3710字 ? Linux+samba-winbind+AD實現統一認證已關閉評論 ? 被圍觀 32,265 views+

管理的Linux服務器和Windows服務器如果很多,如果都用本地用戶名管理,要管理和記住幾十臺甚至上百臺服務器的 不同賬號不同密碼,這是很難的;而如何所有服務器賬號密碼都設置一樣,那有完全沒有安全性可言。正好網絡中有域控制器,而且所有用戶也加入了Windows 域,且OA等應用系統也采用統一的域驗證,因此可以使用AD域來驗證Linux服務器的用戶登錄。具體如下:

環境:
認證服務器OS:Windows Server 2012核心版
認證服務器IP:192.168.18.210
認證服務器DNS搜索名稱:test.com

1、修改主機名稱、DNS和防火墻策略:

a、修改主機名:

# vim /etc/sysconfig/network
##主機名後綴為test.com,且主機名不能重復。

b、修改DNS

# vim /etc/resolv.conf
##修改為如下內容
search test.com
nameserver 192.168.18.210

c、編輯vim /etc/hosts,取消本機計算機名部分解析

d、vim /etc/sysconfig/iptables文件,添加兩條策略,允許本機與DC之間的全部通訊:

-A OUTPUT -m state --state NEW -m tcp -p tcp -d 192.168.18.210 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp -s 192.168.18.210 -j ACCEPT

重啟服務器使所有更改生效

2、時間同步

a、編輯計劃任務,加入時間同步

# vim /etc/crontab
##加入如下時間同步內容,實現每小時與服務器同步一次時間
00 * * * * root /usr/sbin/ntpdate test.com;/usr/sbin/hwclock -w

b、將crond服務加入開機啟動,並立即重啟crond服務

# chkconfig crond on
# service crond restart

3、安裝samba和krb5:

a、安裝支持軟件:

#yum -y install pam_krb5* krb5-libs* krb5-workstation* krb5-devel* krb5-auth samba samba-winbind* samba-client* samba-swat*

b、檢查krb5相關組件是否全部安裝

# rpm -qa|grep krb
pam_krb5-2.3.11-9.el6.x86_64
krb5-libs-1.9-33.el6_3.3.x86_64
krb5-devel-1.9-33.el6_3.3.x86_64
krb5-auth-dialog-0.13-3.el6.x86_64
python-krbV-1.0.90-3.el6.x86_64
krb5-workstation-1.9-33.el6_3.3.x86_64

c、檢查Samba組件是否全部安裝

# rpm -qa|grep samba
samba-swat-3.5.10-125.el6.x86_64
samba-common-3.5.10-125.el6.x86_64
samba-winbind-clients-3.5.10-125.el6.x86_64
samba-3.5.10-125.el6.x86_64
samba-winbind-3.5.10-125.el6.x86_64
samba-client-3.5.10-125.el6.x86_64

d、驗證samba基礎庫支持

# smbd -b|grep LDAP
HAVE_LDAP_H
HAVE_LDAP
HAVE_LDAP_ADD_RESULT_ENTRY
HAVE_LDAP_INIT
HAVE_LDAP_INITIALIZE
HAVE_LDAP_SASL_WRAPPING
HAVE_LDAP_SET_REBIND_PROC
HAVE_LIBLDAP
LDAP_SET_REBIND_PROC_ARGS

# smbd -b | grep KRB
HAVE_KRB5_H
HAVE_KRB5_LOCATE_PLUGIN_H
HAVE_ADDRTYPE_IN_KRB5_ADDRESS
HAVE_DECL_KRB5_AUTH_CON_SET_REQ_CKSUMTYPE
HAVE_DECL_KRB5_GET_CREDENTIALS_FOR_USER
……以下略

# smbd -b | grep ADS
WITH_ADS
WITH_ADS

# smbd -b | grep WINBIND
WITH_WINBIND
WITH_WINBIND

至此,Samba和KRB5的基本安裝已經完成,接下來就是配置

4、加域:

a、啟動相關服務並設置開機啟動:

# service winbind start
# chkconfig winbind on

b、使用setup配置工具,並選擇“驗證配置”,選擇下面三項:

“use winbind” ##對應中文“使用winbind”
“use kerberos” ##對應中文“使用kerberos”
“use winbind authertication” ##對應中文“使用winbind驗證”

然後點擊【下一步】,按如下填寫:

域:test.com
KDC:dc-01.test.com
管理服務器:dc-01.test.com
##並勾選下面兩個選項。

再次點擊【下一步】,按如下選擇或填寫:

安全模型:ADS
域:TEST ##註意大寫
域控制器:dc-01.test.com
ADS域:test.com
模板Shell: /bin/bash

點擊【加入域】,彈出保存提示,選擇【是】後,會彈出輸入域管理員賬號密碼的,按提示輸入即可。
完成後退出【setup】,看屏幕提示是否有如下這樣的錯誤:

【net_update_dns_internal: Failed to connect to our DC!】

如果返回如下,則加入正常:

[/usr/bin/net join -w TEST -S dc-01.test.com -U Administrator]
Enter Administrator‘s password:<...>
Using short domain name -- TEST
Joined ‘PAYSERVER02‘ to dns domain ‘test.com‘
啟動 Winbind 服務: [確定]
正在啟動 oddjobd: [確定]

c、測試winbind讀取域控信息是否正常

# wbinfo –t ##測試RPC通訊,提示succeeded表示成功
cheTEST the trust secret for domain TEST via RPC calls succeeded

# wbinfo -u ##查看域用戶
TEST\guest
TEST\administrator
TEST\krbtgt
TEST\barlowliu
……以下省略……

##如果如上,則讀取正常

# wbinfo -g ##查看域組
TEST\domain computers
TEST\cert publishers
TEST\domain users
TEST\domain guests
TEST\ras and ias servers
TEST\domain admins
TEST\schema admins
TEST\enterprise admins
……以下省略……

上述兩個命令執行後如果可以看到域中的用戶和組則正常。如果提示如下,則表示與域控制器同步還未完成:

Error looking up domain users ##稍等後再測試即可

測試ntlm組件

# ntlm_auth --username=administrator
password: ##輸入用戶密碼
NT_STATUS_OK: Success (0x0)
驗證代域
# net ads testjoin
Join is OK

d、使用域賬戶登錄
此時就可以使用 [email protected]這樣的域用戶登錄Linux服務器了,但登錄後顯示如下:

Could not chdir to home directory /home/TEST/barlowliu: No such file or directory
-bash-4.1$

##沒有自動創建用戶的家目錄,下面就來解決該問題

5、解決域用戶登錄後沒有家目錄的問題:

a、建立域用戶家目錄:

# mkdir /home/TEST
# chmod 1777 /home/TEST

b、編輯/etc/samba/smb.conf配置文件,添加如下一行:

template homedir = /home/%D/%U
##修改如下一行如下,就可以實現在登錄時不需要輸入域名
winbind use default domain = true

c、編輯/etc/pam.d/system-auth,增加如下一行:

session required pam_mkhomedir.so skel=/etc/skel umask=0077

d、vim /etc/pam.d/sshd 統一增加上面那一行:

session required pam_mkhomedir.so skel=/etc/skel umask=0077

完成後就可以使用域賬號正常登錄了,但是還需要配合安全要求,設置每臺服務器允許SSH登錄和允許運行su和sudo命令的用戶。

Linux AD 身份統一驗證(SSO)