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 |
昨晚没报错就是可以了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!