使用OpenLDAP实现集中用户认证

测试环境: centos5.1

如果你有很多台Linux服务器需要管理,每一台服务器都有自己的用户名和口令,修改口令将是一件很麻烦的事情。这时候你可以考虑使用LDAP服务实现集中的用户认证。当然,LDAP的应用是非常广泛的,还需要我们不断的去实践。

服务器端配置

1、安装OpenLDAP Server
    OpenLDAP是一个LDAP服务的实现。By default, OpenLDAP uses TCP and UDP port 389 for unencrypted connections and TCP
and UDP port 636 for secure, encrypted connections.
    我们需要一台OpenLDAP Server, 这个server集中管理用户,其他客户端(如另外一台linux)通过这个Server进行身份认证。
    安装命令:
    yum install openldap openldap-servers openldap-clients

2、配置LDAP
    编辑 /etc/openldap/slapd.conf

        修改suffix改为你想要的domain
        suffix “dc=example,dc=com”

        定义一个具有完全控制权的用户,可以是admin或任何你喜欢的名字
        rootdn “cn=admin,dc=example,dc=com”

        如果要远程管理,要设置一个口令
        rootpw {SSHA}vhSdnGD3mNZpvxF63OmuaAUlNF16yVVT
        这个口令不是明文,明文配置在这里是不安全的,口令可以用命令slappasswd生成。

    在/var/lib/ldap下生成一个DB_CONFIG文件,这个文件中有一些参数调整的选项。可以直接拷贝一个。
     cp /etc/openldap/DB_CONFIG.example  /var/lib/ldap/DB_CONFIG

3、启动LDAP服务
    service ldap start
    这时应该可以正常启动

4、建立用户信息
    建立一个user.ldif文件,内容如下
        ###############################
        dn: dc=example, dc=com
        objectClass: top
        objectClass: dcObject
        objectClass: organization
        dc: example
        o: example, Inc.

        dn: ou=People,dc=example,dc=com
        ou: People
        objectClass: top
        objectClass: organizationalUnit

        dn: ou=Group,dc=example,dc=com
        ou: Group
        objectClass: top
        objectClass: organizationalUnit


        dn: cn=testuser1,ou=Group,dc=example,dc=com
        objectClass: posixGroup
        objectClass: top
        cn: testuser1
        userPassword: {crypt}x
        gidNumber: 1002

        dn: cn=testuser2,ou=Group,dc=example,dc=com
        objectClass: posixGroup
        objectClass: top
        cn: testuser2
        userPassword: {crypt}x
        gidNumber: 1003

        dn: uid=testuser1,ou=People,dc=example,dc=com
        uid: testuser1
        cn: testuser1
        objectClass: account
        objectClass: posixAccount
        objectClass: top
        userPassword: {MD5}Qdp28Pw+xippOeY0v7ajQg==
        loginShell: /bin/sh
        uidNumber: 1002
        gidNumber: 1002
        homeDirectory: /home/testuser1

        dn: uid=testuser2,ou=People,dc=example,dc=com
        uid: testuser2
        cn: testuser2
        objectClass: account
        objectClass: posixAccount
        objectClass: top
        userPassword: {MD5}WN0CTUnh0bg6XTB/CfMnNA==
        loginShell: /bin/sh
        uidNumber: 1003
        gidNumber: 1003
        homeDirectory: /home/testuser2
        ###############################

    这个文件定义了两个用户testuser1和testuser2和对应的组testuser1和testuser2

    下面把这个文件导入到LDAP Server中,
    先停止LDAP Server
        service ldap stop
    然后导入
        slapadd -v -l user.ldif
    如果运新正常,你可以看到以下信息:
        added: "dc=example,dc=com" (00000001)
        added: "ou=People,dc=example,dc=com" (00000002)
        added: "ou=Group,dc=example,dc=com" (00000003)
        added: "cn=testuser1,ou=Group,dc=example,dc=com" (00000004)
        added: "cn=testuser2,ou=Group,dc=example,dc=com" (00000005)
        added: "cn=testuser3,ou=Group,dc=example,dc=com" (00000006)
        added: "uid=testuser1,ou=People,dc=example,dc=com" (00000007)
        added: "uid=testuser2,ou=People,dc=example,dc=com" (00000008)
        added: "uid=testuser3,ou=People,dc=example,dc=com" (00000009)

    修改/var/lib/ldap下文件的权限
    chown ldap.ldap /var/lib/ldap/*

5、启动LDAP服务
    service ldap start

    检查服务是否正常
        ldapsearch -x -b 'dc=example,dc=com'
    我们可以看到之前导入的数据
    If encryption has not been enabled, the -x option must also be specified to use simple
    authentication instead


客户端配置
找另外一台机器配置为客户端。只有一台机器?可以用xen做一个虚拟机测试。

1、安装OpenLDAP Client
    安装命令:
    yum install openldap openldap-clients

2、修改认证方式
    运行命令: authconfig-tui
    在User Information处,选择 Use LDAP
    在Authentication处,选择 Use LDAP Authentication 和 Local authorization is sufficient
    在LDAP Settings处,填写
        Server ldap://xxx.xxx.xxx.xxx/  (这里的IP就是你配置的LDAP Server的IP)
        Base DN: dc=example,dc=com

    authconfig-tui帮助你完成了一些文件的配置,你会发现以下文件的内容改变了,你也可以直接修改这些文件达到相同的效果(这就是Unix/Liinux的一贯作风!)
        /etc/openldap/ldap.conf
        /etc/ldap.conf
        /etc/nsswitch.conf
        /etc/pam.d/system-auth

3、测试
    从其他地方ssh登录这台机器,你应该可以用testuser1, testuser2登录。你同时也可以用这台机器本地的root登录。
    如果有问题,除了检查一下配置外,还要看看iptables, 是不是把LDAP用的端口给禁了。
    By default, OpenLDAP uses TCP and UDP port 389 for unencrypted connections and TCP and UDP port 636 for secure, encrypted connections.

4、自动创建用户目录
    当你用testuser1登录时,系统提示目录/home/testuser1不存在,可以修改一下配置来自动创建。
    编辑 /etc/pam.d/system-auth
    session     required      pam_unix.so
    session     required      pam_mkhomedir.so skel=/etc/skel/  #在这里插入这一行
    session     optional      pam_ldap.so

    再登录看看,目录有了!


这只是一个简单的配置记录,如果要理解为什么这么配置,你需要了解LDAP和PAM的一些知识。









你可能感兴趣的:(server,session,service,Authentication,encryption,authorization)