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命令的用户。

  • 相关阅读:
    sublime开启vim模式
    git命令行界面
    搬进Github
    【POJ 2886】Who Gets the Most Candies?
    【UVA 1451】Average
    【CodeForces 625A】Guest From the Past
    【ZOJ 3480】Duck Typing
    【POJ 3320】Jessica's Reading Problemc(尺取法)
    【HDU 1445】Ride to School
    【HDU 5578】Friendship of Frog
  • 原文地址:https://www.cnblogs.com/Ericshang/p/9070973.html
Copyright © 2011-2022 走看看