zoukankan      html  css  js  c++  java
  • Linux AD 身份统一验证(SSO)

    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 ##查看域用户
    TESTguest
    TESTadministrator
    TESTkrbtgt
    TESTarlowliu
    ……以下省略……

    ##如果如上,则读取正常

    # wbinfo -g ##查看域组
    TESTdomain computers
    TESTcert publishers
    TESTdomain users
    TESTdomain guests
    TEST as and ias servers
    TESTdomain admins
    TESTschema admins
    TESTenterprise admins
    ……以下省略……

    上述两个命令执行后如果可以看到域中的用户和组则正常。如果提示如下,则表示与域控制器同步还未完成:

    Error looking up domain users ##稍等后再测试即可

    测试ntlm组件

    # ntlm_auth --username=administrator
    password: ##输入用户密码
    NT_STATUS_OK: Success (0x0)
    验证代域
    # net ads testjoin
    Join is OK

    d、使用域账户登录
    此时就可以使用 xxx@test.com这样的域用户登录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命令的用户。

  • 相关阅读:
    (六)键盘事件
    (五)鼠标事件
    (四)WebDriver常用方法
    等价类,边界值,判定图实例
    WCF入门(三)---WCF与Web服务/Web Service
    WCF入门(二)-----实战开发
    C#中用JavaScriptSerializer和Json.Net操作json格式的文件
    C#中SaveFileDialog 和OpenFileDialog 的用法
    C#操作.csv文件Demo
    Excel操作--使用NPOI导入导出Excel为DataTable
  • 原文地址:https://www.cnblogs.com/Ericshang/p/9070973.html
Copyright © 2011-2022 走看看