测试环境: 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的一些知识。