公司的Linux服务器和Windows服务器数量日益增长,如果都用本地用户名管理,要管理和记住几十台甚至上百台服务器的不同账号不同密码,这是很麻烦也是很痛苦的;而如何把所有服务器账号密码都
设置一样,那么又完全没有安全性可言。
正好网络中有域控制器,而且所有用户也加入了Windows 域,且OA等应用系统也采用统一的域验证,因此可以使用AD域来验证Linux服务器的用户登录。具体如下:
环境:
认证服务器OS:Windows Server 2012服务器版
认证服务器IP:192.168.1.21
认证服务器DNS搜索名称:icesr.com
1、修改主机名称、DNS和防火墙策略:
a、修改主机名:
# vim /etc/sysconfig/network ##主机名后缀为icesr.com,且主机名不能重复。
b、修改DNS
# vim /etc/resolv.conf ##修改为如下内容 search icesr.com nameserver 192.168.1.21
c、编辑vim /etc/hosts,取消本机计算机名部分解析
d、vim /etc/sysconfig/iptables文件,添加两条策略,允许本机与DC之间的全部通讯:
-A OUTPUT -m state --state NEW -m tcp -p tcp -d 192.168.1.21 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp -s 192.168.1.21 -j ACCEPT
重启服务器使所有更改生效
2、时间同步
a、编辑计划任务,加入时间同步
# vim /etc/crontab ##加入如下时间同步内容,实现每小时与服务器同步一次时间 0 * * * * root /usr/sbin/ntpdate icesr.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验证”
然后点击【下一步】,按如下填写:
域:icesr.com KDC:dc-01.icesr.com 管理服务器:dc-01.icesr.com ##并勾选下面两个选项。
再次点击【下一步】,按如下选择或填写:
安全模型:ADS 域:ICESR ##注意大写 域控制器:dc-01.icesr.com ADS域:icesr.com 模板Shell: /bin/bash
点击【加入域】,弹出保存提示,选择【是】后,会弹出输入域管理员账号密码的,按提示输入即可。
完成后退出【setup】,看屏幕提示是否有如下这样的错误:
【net_update_dns_internal: Failed to connect to our DC!】
如果返回如下,则加入正常:
[/usr/bin/net join -w ICESR -S dc-01.icesr.com -U Administrator] Enter Administrator's password:< ...> Using short domain name -- ICESR Joined 'PAYSERVER02' to dns domain 'icesr.com' 启动 Winbind 服务: [确定] 正在启动 oddjobd: [确定]
c、测试winbind读取域控信息是否正常
# wbinfo –t ##测试RPC通讯,提示succeeded表示成功 cheICESR the trust secret for domain ICESR via RPC calls succeeded # wbinfo -u ##查看域用户 ICESR\guest ICESR\administrator ICESR\krbtgt ICESR\barlowliu ……以下省略…… ##如果如上,则读取正常 # wbinfo -g ##查看域组 ICESR\domain computers ICESR\cert publishers ICESR\domain users ICESR\domain guests ICESR\ras and ias servers ICESR\domain admins ICESR\schema admins ICESR\enterprise admins ……以下省略……
上述两个命令执行后如果可以看到域中的用户和组则正常。如果提示如下,则表示与域控制器同步还未完成:
Error looking up domain users ##稍等后再测试即可
测试ntlm组件
# ntlm_auth --username=administrator password: ##输入用户密码 NT_STATUS_OK: Success (0x0) 验证代域 # net ads icesrjoin Join is OK
d、使用域账户登录
此时就可以使用 xxx@icesr.com这样的域用户登录Linux服务器了,但登录后显示如下:
Could not chdir to home directory /home/ICESR/barlowliu: No such file or directory -bash-4.1$
##没有自动创建用户的家目录,下面就来解决该问题
5、解决域用户登录后没有家目录的问题:
a、建立域用户家目录:
# mkdir /home/ICESR # chmod 1777 /home/ICESR
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
评论前必须登录!
注册