centos7 环境下yum安装openldap

1.安装相关openldap的软件

yum -y install openldap openldap-servers openldap-clients openldap-devel compat-openldap

2.openldap相关的文件配置

复制代码
/etc/openldap/slapd.conf:OpenLDAP的主配置文件,记录根域信息,管理员名称,密码,日志,权限等
/etc/openldap/slapd.d/:这下面是/etc/openldap/slapd.conf配置信息生成的文件,每修改一次配置信息,这里的东西就要重新生成
/etc/openldap/schema/:OpenLDAP的schema存放的地方
/var/lib/ldap/*:OpenLDAP的数据文件
/usr/share/openldap-servers/slapd.conf.obsolete 模板配置文件
/usr/share/openldap-servers/DB_CONFIG.example 模板数据库配置文件
OpenLDAP监听的端口:
默认监听端口:389(明文数据传输)
加密监听端口:636(密文数据传输)
复制代码

3.初始化openldap配置

cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
chown ldap:ldap /var/lib/ldap/DB_CONFIG

4.启动openldap服务

systemctl start slapd 
systemctl enable slapd
systemctl status slapd

5.为openldap生成管理员密码

slappasswd -s 123456
#这里会生成一串{SSHA}***的东西,这个东西就是SSHA加密的密码,后面操作需要这串密码,这里的123456就是为加密前的密码

6.新建一个名为rootpwd.ldif的文件,将下方写入该文件

#gvim rootpwd.ldif

dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}***
#这里的olcRoolPW后面对应的{SSHA}就是第6步生成的加密密码

7.读取rootpwd.ldif文件信息

ldapadd -Y EXTERNAL -H ldapi:/// -f rootpwd.ldif

8.导入schema

复制代码
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif
最好下面的也加载上

ldapadd -Y EXTERNAL -H ldapi:///  -f /etc/openldap/schema/collective.ldif

ldapadd -Y EXTERNAL -H ldapi:/// -f  /etc/openldap/schema/corba.ldif

ldapadd -Y EXTERNAL -H ldapi:/// -f  /etc/openldap/schema/core.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f  /etc/openldap/schema/duaconf.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f  /etc/openldap/schema/dyngroup.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f  /etc/openldap/schema/java.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f  /etc/openldap/schema/misc.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f  /etc/openldap/schema/openldap.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f  /etc/openldap/schema/pmi.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f  /etc/openldap/schema/ppolicy.ldif

 
复制代码

9.(1)设定默认域,新建一个根节点

slappasswd -s 123456

(2)先想好一个域名,然后再创建一个名为domain.ldif的文件

复制代码
#我这里的域名为openldap.com,这里的加密密码使用第9步生成的密码
dn: olcDatabase={1}monitor,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read by dn.base="cn=admin,dc=openldap,dc=com" read by * none

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=openldap,dc=com

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=admin,dc=openldap,dc=com

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootPW
olcRootPW: {SSHA}此处填写上一步生成的密码

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange by dn="cn=admin,dc=openldap,dc=com" write by anonymous auth by self write by * none
olcAccess: {1}to dn.base="" by * read
olcAccess: {2}to * by dn="cn=admin,dc=openldap,dc=com" write by * read
复制代码

(3)执行domain.ldif文件

ldapmodify -Y EXTERNAL -H ldapi:/// -f domain.ldif

(4)创建一个名为base.ldif的文件,将以下命令写入

复制代码

dn: dc=openldap,dc=com objectClass: top objectClass: dcObject objectClass: organization o: com dc: openldap dn: cn=admin,dc=openldap,dc=com objectClass: organizationalRole cn: admin description: Directory Manager dn: ou=People,dc=openldap,dc=com objectClass: organizationalUnit ou: People dn: ou=Group,dc=openldap,dc=com objectClass: organizationalUnit ou: Group

复制代码
执行base.ldif文件,根据提示输入第9步生成未加密的密码
ldapadd -x -D cn=admin,dc=openldap,dc=com -W -f base.ldif

10.禁止匿名登录

复制代码
cat > /root/disable_anon.ldif << EOF
dn: cn=config
changetype: modify
add: olcDisallows
olcDisallows: bind_anon

dn: cn=config
changetype: modify
add: olcRequires
olcRequires: authc

dn: olcDatabase={-1}frontend,cn=config
changetype: modify
add: olcRequires
olcRequires: authc
EOF
复制代码
ldapadd -Y EXTERNAL -H ldapi:/// -f /root/disable_anon.ldif

11.加载日志模块: 2.4.4 版本系统默认有

复制代码
cat > /root/loglevel.ldif << EOF
dn: cn=config
changetype: modify
replace: olcLogLevel
olcLogLevel: stats
EOF

ldapmodify -Y EXTERNAL -H ldapi:/// -f /root/loglevel.ldif

systemctl restart slapd
复制代码

12.配置rsyslog.conf

cat >> /etc/rsyslog.conf << EOF

local4.* /var/log/slapd.log

EOF

systemctl restart rsyslog

13.使用LDAP Admin 登录

 14.新建用户

密码使用明文存储,使用别的加密方式freeradius会认证失败

  15.备份数据(/var/lib/ldap/)下的文件全部备份

tar -czvf back.tar.gz /var/lib/ldap/

16.然后将1-13在其它主机上部署一遍,恢复数据

rm -rf /var/lib/ldap/*
tar -zxvf back.tar.gz /var/lib/ldap/
systemctl restart slapd

 17.自定义Object

mkdir -p /tmp/customSchema
cd /tmp/customSchema
vim custom.schema
复制代码
# Define new attribute types
attributetype ( 1.3.6.1.4.1.9999.1.1 NAME 'username'
  DESC 'Username in English, required'
  EQUALITY caseIgnoreMatch
  SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{64} )

attributetype ( 1.3.6.1.4.1.9999.1.2 NAME 'chineseName'
  DESC 'Full name in Chinese, required'
  EQUALITY caseIgnoreMatch
  SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{64} )

attributetype ( 1.3.6.1.4.1.9999.1.3 NAME 'emailAddress'
  DESC 'Email address, required'
  EQUALITY caseIgnoreIA5Match
  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )

attributetype ( 1.3.6.1.4.1.9999.1.4 NAME 'mobileNumber'
  DESC 'Mobile phone number, required'
  EQUALITY numericStringMatch
  SYNTAX 1.3.6.1.4.1.1466.115.121.1.36 )

# Define new object class
objectclass ( 1.3.6.1.4.1.9999.2.1 NAME 'customPerson'
  DESC 'Custom person object class with extended attributes'
  SUP top AUXILIARY
  MUST ( username $ chineseName $ emailAddress $ mobileNumber )
  MAY ( description $ userPassword ) )
复制代码
1
vim custom.conf
1
2
include /tmp/customSchema/custom.schema
slaptest -f custom.conf -F /tmp/customSchema

进入目录下的cn=config/cn=schema目录下可以看到生成的一个ldif文件。此时重命名该文件custom.ldif,并修改其中的cn和dn。(ldif文件中对空格等元素有严格要求,请不要额外添加空格等其他不必要的元素)

1
2
3
dn: cn=custom,cn=schema,cn=config
objectClass: olcSchemaConfig
cn: custom

执行slapadd命令,将该文件添加进OpenLdap库

1
slapadd -l personext.ldif -n 0

 以上步骤完成后可以在/etc/openldap/slapd.d/cn=config/cn=schema路径下看到自己新添加的objectclass对应的ldif文件了,直接重启服务会报错,需要给/etc/openldap/slapd.d/cn=config/cn=schema赋权或直接修改文件所有者为ldap,否则用户ldap无法读取

1
2
3
cd /etc/openldap/slapd.d/cn=config/cn=schema
chmod -R 777 cn=schema
systemctl restart slapd

昨晚没报错就是可以了。

posted @   非专业编程  阅读(366)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示