迷彩 潜伏 隐蔽 伪装
分类: 系统运维
2014-01-23 11:01:07
原文地址:ldap集中化管理 作者:chinaunix1116
流程
1. 安装包
openldap-clients openldap-server
2. 配置文件
a) 创建模板
注意格式;证书名称;管理员,id/密码;slappasswd
b) 生成目录树结构
i. 清空slaptest
ii. 权限
3. 创建证书
ca.key ca.crt slapd.key(去掉密码) slapd.csr(主机名一致) slapd.crt
c) 导入bdb.ldif 全局管理员用户导入
5. 创建data.ldif(用户条目)
a) 基准DN
b) 3个OU(People,Group,Admins)
c) RDN(People/student1,student2 Group/students)
d) 导入data.ldif(库的管理员)
6. 创建autofs.ldif(autofs配置文件的条目)
a) auto.master
b) auto.home
i. 使用/匹配用户名
ii. 指定nfs服务器共享
7. nfs服务器配置
a) 创建用户。注意uid.gid.(与ldap服务器端一致)、家目录
b) exports(rw方式共享)
8. 客户端(3种方式)
a) 图形化 system-config-authtorcation
b) 命令行 authconfig 或 authconfig-tu命令(缺点:公钥不能直接下载)
c) 修改配置文件nsswitch ldap.conf
2台机器 148-ldapserver|nfs 142-ldapclinet
iptables -F
setenforce 0
具体操作步骤:
148server
yum install openldap-servers openldap-clients -y
cd /etc/openldap
创建ldap管理员密码redhat
[root@desktop148 ~]# slappasswd
New password:
Re-enter new password:
创建ldap服务器主配置文件,我们需要声明管理员与其密码 注意红色的是一行数据。
配置文件模板地址:/usr/share/openldap-servers/slapd.conf.obsolete
[root@desktop148 openldap]# vim /etc/openldap/slapd.conf
include /etc/openldap/schema/corba.schema
include /etc/openldap/schema/core.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/duaconf.schema
include /etc/openldap/schema/dyngroup.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/java.schema
include /etc/openldap/schema/misc.schema
include /etc/openldap/schema/nis.schema
include /etc/openldap/schema/openldap.schema
include /etc/openldap/schema/ppolicy.schema
include /etc/openldap/schema/collective.schema
allow bind_v2
pidfile /var/run/openldap/slapd.pid
argsfile /var/run/openldap/slapd.args
#### Encrypting Connections
TLSCACertificateFile /etc/pki/tls/certs/ca.crt
TLSCertificateFile /etc/pki/tls/certs/slapd.crt
TLSCertificateKeyFile /etc/pki/tls/certs/slapd.key
### Database Config###
database config
rootdn "cn=admin,cn=config"
rootpw redhat
access to * by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=authmanage by * break
### Enable Monitoring
database monitor
# allow only rootdn to read the monitor
access to * by dn.exact="cn=admin,cn=config" read by * none
[root@desktop148 slapd.d]# rm -rf /etc/openldap/slapd.d/* //清空原先下面的目录树结构
[root@desktop148 slapd.d]# slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d //把配置文件生成目录书结构
[root@desktop148 slapd.d]# chown -R ldap:ldap /etc/openldap/slapd.d
[root@desktop148 slapd.d]# chmod -R 000 /etc/openldap/slapd.d
[root@desktop148 slapd.d]# chmod -R u+rwX /etc/openldap/slapd.d
由于配置文件中有相应证书及路径,所以我们要将其创建
TLSCACertificateFile /etc/pki/tls/certs/ca.crt
TLSCertificateFile /etc/pki/tls/certs/slapd.crt
TLSCertificateKeyFile /etc/pki/tls/certs/slapd.key
下面生成证书并且放置在/etc/pki/tls/certs下,也可以在其他目录生成,然后cp到该目录下
cd /etc/pki/tls/certs
(名字有出入)
1) 生成ca私钥,一定要留密码。
[root@desktop148 certs]# openssl genrsa -des3 -out ca.key 4096
输入ca.key密码:uplooking
2) 生成ca公钥,将来下发给客户端浏览器导入的。
[root@desktop148 certs]# openssl req -new -x509 -days 365 -key ca.key -out ca.crt
Enter pass phrase for ca.key:uplooking
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:shanghai
Locality Name (eg, city) [DefaultCity]:shanghai
Organization Name (eg, company) [Default Company Ltd]:uplooking.org
Organizational Unit Name (eg, section) []:uplooking
Common Name (eg, your name or your server's hostname) []:CA.uplooking.com
创建服务器私钥
[root@desktop148 slapd.d]# openssl genrsa -des3 -out slapd.key 4096
输入slapd.key:uplooking
去掉私钥密码
[root@desktop148 slapd.d]# openssl rsa -in slapd.key -out slapd.key
输入slapd.key:uplooking
以上为去掉服务器私钥密码,不然将来访问会不停的弹出输入密码的选项框
生成证书颁发机构
[root@desktop148 slapd.d]# openssl req -new -key slapd.key -out slapd.csr
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:shanghai
Locality Name (eg, city) [DefaultCity]:shanghai
Organization Name (eg, company) [Default Company Ltd]:uplooking.org
Organizational Unit Name (eg, section) []:uplooking
Common Name (eg, your name or your server's hostname) []:desktop148.example.com
Email Address []:root@ desktop148.example.com
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:直接回车
An optional company name []:直接回车
注意一下,Common Name要和你的主机名一致。
用CA签名并产生公钥(服务器证书)
[root@desktop148 certs]# openssl x509 -req -days 365 -in slapd.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out slapd.crt
Enter pass phrase for ca.key:uplooking
在/etc/pki/tls/certs/ca.crt目录下生成,则跳过cp
[root@desktop148 slapd.d]# cp ca.crt /etc/pki/tls/certs/ca.crt
[root@desktop148 slapd.d]# cp slapd.key /etc/pki/tls/certs/slapd.key
[root@desktop148 slapd.d]# cp slapd.crt /etc/pki/tls/certs/slapd.crt
数据库配置
生成DB_CONFIG文件,ldap在启动过程中需要,复制到以下目录
[root@desktop148 ldap]# cp -p /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
chown ldap. /var/lib/ldap/DB_CONFIG
cd /etc/openldap(接下去的几个文件全写在这个目录下)
接下来我们要创建用户数据库,先生成ldif文件,用于描述数据库配置。
(库信息描述、DN配置、授权等)
[root@desktop148 slapd.d]# mkdir ldif
[root@desktop148 slapd.d]# vim bdb.ldif
其中红色标注的是管理员用户名与帐号。注意空格和行,红色的是一行数据
dn: olcDatabase=bdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcBdbConfig
olcDatabase: {1}bdb
olcSuffix: dc=example,dc=org
olcDbDirectory: /var/lib/ldap
olcRootDN: cn=Manager,dc=example,dc=org
olcRootPW: redhat
olcLimits: dn.exact="cn=Manager,dc=example,dc=org" time.soft=unlimited time.hard=unlimited size.soft=unlimited size.hard=unlimited
olcDbIndex: uid pres,eq
olcDbIndex: cn,sn,displayName pres,eq,approx,sub
olcDbIndex: uidNumber,gidNumber eq
olcDbIndex: memberUid eq
olcDbIndex: objectClass eq
olcDbIndex: entryUUID pres,eq
olcDbIndex: entryCSN pres,eq
olcAccess: to attrs=userPassword by self write by anonymous auth by dn.children="ou=admins,dc=example,dc=org" write by * none
olcAccess: to * by self write by dn.children="ou=admins,dc=example,dc=org" write by * read
启动并导入数据库配置
service slapd start //先启动slapd服务
[root@desktop148 slapd.d]# ldapadd -x -D "cn=admin,cn=config" -w redhat -f bdb.ldif -h localhost
adding new entry "olcDatabase=bdb,cn=config" //添加成功
redhat 密码加密后导入
[root@desktop148 slapd.d]# slappasswd
New password:
Re-enter new password:
{SSHA}OLfakpNEj71gnF7G5NYSSjzJsu4kIG5+
[root@desktop148 slapd.d]# ldapadd -x -D "cn=admin,cn=config" -w {SSHA}OLfakpNEj71gnF7G5NYSSjzJsu4kIG5+ -f bdb.ldif -h localhost
创建用户数据文件并且同样导入ldap数据库中
[root@desktop148 ldif]# vim data1.ldif
dn: dc=example,dc=org
objectClass: top
objectClass: dcObject
objectclass: organization
o: Example Organization
dc: Example
description: LDAP Example
dn: ou=People,dc=example,dc=org
objectClass: organizationalUnit
ou: People
dn: ou=Groups,dc=example,dc=org
objectClass: organizationalUnit
ou: Groups
dn: ou=Admins,dc=example,dc=org
objectClass: organizationalUnit
ou: Admins
dn: uid=student1,ou=People,dc=example,dc=org
uid: student1
cn: student1
sn: 1
objectClass: top
objectClass: posixAccount
objectClass: inetOrgPerson
loginShell: /bin/bash
homeDirectory: /ldaphome/student1
uidNumber: 14583100
gidNumber: 14564100
userPassword: redhat
mail: student1@example.org
gecos: Student1 User
dn: uid=student2,ou=People,dc=example,dc=org
uid: student2
cn: student2
sn: 2
objectClass: top
objectClass: posixAccount
objectClass: inetOrgPerson
loginShell: /bin/bash
homeDirectory: /ldaphome/student2
uidNumber: 14583101
gidNumber: 14564100
userPassword: redhat
mail: student2@example.org
gecos: Student2 User
dn: cn=students,ou=Groups,dc=example,dc=org
objectClass: posixGroup
objectClass: top
cn: ldapusers
userPassword: {crypt}x
gidNumber: 14564100
memberuid: uid=student1
memberuid: uid=student2
以上大致内容就是定义了基准DN为tudou.com,在下面有3个OU分别为people、group、admins,同时在people ou下定义了2个用户student1和student2、group ou下定义了students并且把student1和student2 2个用户加入进该条目,保存退出.
ldapadd -x -D "cn=Manager,dc=example,dc=org" -w redhat -h localhost -f data1.ldif
adding new entry "dc=example,dc=org" //显示添加成功,如果报条目已存在,则修改data1把该条目删除,继续添加下面的条目。
adding new entry "ou=People,dc=example,dc=org"
。。。。。。。
创建自动挂载ldap用户家目录的autofs文件
[root@desktop148 ldif]# vim autofs.ldif
dn: nisMapName=auto.master,dc=example,dc=org
objectClass: top
objectClass: nisMap
nisMapName: auto.master
dn: cn=/ldaphome,nisMapName=auto.master,dc=example,dc=org
objectClass: nisObject
cn: /ldaphome
nisMapEntry: ldap:nisMapName=auto.home,dc=example,dc=org
nisMapName: auto.master
dn: nisMapName=auto.home,dc=example,dc=org
objectClass: top
objectClass: nisMap
nisMapName: auto.home
dn: cn=/,nisMapName=auto.home,dc=example,dc=org
objectClass: nisObject
cn: /
nisMapEntry: -rw 192.168.11.148:/ldaphome/&
nisMapName: auto.home
上述红色字体” /ldaphome ”是ldap用户家目录的父目录,需要通过nfs导出的。
红色字体 nisMapEntry... ,是nfs服务器的地址(新增nfs,IP需改掉),其中 & 符号用于匹配所有用户名。
之后我们将这些信息生成ldif文件并添加到LDAP 数据库中。
[root@desktop148 ldif]# ldapadd -x -D "cn=Manager,dc=example,dc=org" -w redhat -h localhost -f /root/ldif/autofs.ldif
adding new entry "nisMapName=auto.master,dc=example,dc=org" //添加成功
adding new entry "cn=/ldaphome,nisMapName=auto.master,dc=example,dc=org"
adding new entry "nisMapName=auto.home,dc=example,dc=org"
adding new entry "cn=/,nisMapName=auto.home,dc=example,dc=org"
到这里为止ldap的配置已经全部完成了
另外要把ca.crt文件给放到apache的网站根目录下去
cp ca.crt /var/www/html/
service httpd start
148nfs共享
service nfs start
如果新增一台NFS,需多做以下步骤:
mkdir /ldaphome
vim /etc/exports
/ldaphome 192.168.11.0/24(rw,sync)
service nfs start
创建用户:
groupadd students -g 14564100
useradd student1 -u 14583100 –g students -d /ldaphome/student1
useradd student2 -u 14583101 –g students -d /ldaphome/student2
注意这里的uid和gid号要和ldap端的data.ldif文件里定义的一样
客户端配置142
system-config-authentication
mkdir /ldaphome
service autofs start
以下步骤无需操作,ldap服务器端已经把autofs导入数据库,客户端验证通过就能同步。
yum install autofs -y
vim /etc/auto.master
/ldaphome /etc/auto.ldaphome
vim /etc/auto.ldaphome
* -rw 192.168.11.148:/ldaphome/&
tty登录student2,密码redhat,studnet2家目录会自动挂载。
配置认证缓存SSSD
客户端安装sssd
yum install sssd
/var/lib/sss //存放缓存
运行system-config-authentication
重新再配置一次,这次可以看到sssd服务已经启动起来。
进行一次登录认证后,断开网络,再尝试登录,可以发现依然可以认证成功(登录时间比较长)。