Ubuntu 22.04 - OpenLDAP环境与试用(服务器+LAM+客户端)

csdn你…怎么不自动保存了很崩溃啊啊啊啊,我记得发现没保存之后我又改了一遍然后保存了,怎么现在又没了啊啊啊啊,过了这么久我都不记得了啊啊啊啊啊


参考

在 Ubuntu 22.04|20.04|18.04 上安装 OpenLDAP 和 phpLDAPadmin
在 Ubuntu 22.04|20.04|18.04|16.04 上配置 LDAP 客户端
如何在 Ubuntu 22.04 上安装 OpenLDAP(转载)


服务器

安装前

设置您的系统主机名并将其添加到文件/etc/hosts。

sudo vim /etc/hosts

将 ldap.example.com 替换为您正确的主机名/有效域名。

192.168.18.50 ldap.example.com

在这里插入图片描述

安装

sudo apt-get update
sudo apt-get install slapd ldap-utils

在这里插入图片描述密码:OpenLDAP

配置slapd

sudo dpkg-reconfigure slapd
# Omit OpenLDAP server configuration?    NO
# DNS domain name: mint.com
# Organization name: ldap0
# Administrator password: 123456
# Confirm password: 123456
# Do you want the database to be removed when slapd is purged? YES
# Move old database? YES

在这里插入图片描述slapcat输出 SLAPD 数据库内容来确认安装是否成功。
在这里插入图片描述
编辑配置文件 /etc/ldap/ldap.conf,取消注释行 \BASE\ 和 \URI\ 并输入您的 OpenLDAP 服务器的域名。

sudo vim /etc/ldap/ldap.conf

在这里插入图片描述
重新启动 slapd服务来应用更改

sudo systemctl restart slapd
sudo systemctl status slapd

在这里插入图片描述针对这个问题,参考:LDAP connection seems to keep failing
方法一:将/etc/ldap/ldap.conf 中的ldapi://改为ldap://
原理:在 Ubuntu 系统中,LDAP 客户端配置通常位于 /etc/ldap/ldap.conf 文件中。ldapi:// 是用于本地 Unix 套接字的 LDAP URI,而 ldap:// 是用于 TCP/IP 网络连接的 LDAP URI。
对我没用,我本来就是ldap://
方法二:安装libnss-ldapd

sudo apt-get update
sudo apt install libnss-ldapd

原理:removes libnss-ldap and installs nscd and nslcd
然后再sudo systemctl status slapd,似乎成功了
在这里插入图片描述

服务端主机验证

ldapsearch是一个用于搜索和查询LDAP目录的工具。以下是一个使用ldapsearch进行查询验证的示例:

# ldapsearch -x -H ldap://服务器地址|hosts主机名|域名 -D "cn=管理员,dc=域名,dc=顶级域" -w 密码 -b "dc=域名,dc=顶级域" "(objectClass=\*)"
ldapsearch -H ldap://127.0.0.1 -x  -D 'cn=admin,dc=mint,dc=com' -w '123456' -b 'dc=mint,dc=com' '(objectClass=*)' 

ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:///

这里因为我之前搞过加组加用户什么的(但是记录全丢了),所以还有别的信息
在这里插入图片描述

开启日志

配置文件:/etc/ldap/slapd.d

如果你搜索OpenLDAP的安装指南,很不幸地告诉你,网上不管中文的英文的,90%都是错的,它们都还活在上个世纪,它们会告诉你要去修改一个叫做slapd.conf的文件,基本上看到这里,你就不用往下看了,这个文件早就被抛弃,新版的OpenLDAP里根本就没有这个文件!取而代之的是slapd.d的文件夹
( 我花了一个五一终于搞懂了OpenLDAP)

slapd.d的相关内容太少了…

通过修改cn=config的LDIF文件来设置日志级别。设置日志级别为256(这个日志级别看到了很多不同版本的数字,不知道有什么区别,先这样用着):
在这里插入图片描述
配置日志文件的存储位置。创建或编辑/etc/rsyslog.d/10-slapd.conf文件,添加:

$template slapdtmpl,"[%$DAY%-%$MONTH%-%$YEAR% %timegenerated:12:19:date-rfc3339%] %app-name% %syslogseverity-text% %msg%\n"
local4.*    /var/log/slapd.log;slapdtmpl

将OpenLDAP的日志存储到/var/log/slapd.log文件中在这里插入图片描述在这里插入图片描述
完成后重启rsyslog服务和slapd服务

sudo service rsyslog restart
sudo systemctl restart slapd

查看日志文件
可以使用cat命令:

sudo cat /var/log/slapd.log

或者使用tail命令实时查看日志:

sudo tail -f /var/log/slapd.log

我使用了tail,另外开了个终端进行ldapsearch,可以看到search后日志有增加内容
在这里插入图片描述

操作

之前做了但是丢失的:
在这里插入图片描述在这里插入图片描述在这里插入图片描述

添加用户和组的基本 DN

创建一个名为 basedn.ldif 的文件(我在/mint/ldap目录下创建),其中包含以下内容:

dn: ou=people,dc=example,dc=com
objectClass: organizationalUnit
ou: people

dn: ou=groups,dc=example,dc=com
objectClass: organizationalUnit
ou: groups

在这里插入图片描述
通过运行命令添加文件:

sudo ldapadd -x -D cn=admin,dc=mint,dc=com -W -f basedn.ldif

账户管理器

安装

sudo apt install ldap-account-manager

在这里插入图片描述安装完成后,打开浏览器,访问服务器IP地址后跟URL路径/lam(即http://192.168.5.25/lam)。你应该得到LDAP 帐户管理员 (LAM) 的登录页面。
在这里插入图片描述

配置

通用设置

点击右上角lam配置
在这里插入图片描述点编辑服务器配置文件
在这里插入图片描述输入密码lam,点击确定
在这里插入图片描述工具设置里设置主DN,登录方法选择固定列表(fixed list),设置admin用户,然后点击保存
在这里插入图片描述

账户类型

再次进入lam配置-编辑服务器配置文件,到“帐户类型”页面以设置 OpenLDAP 服务器的默认组。
在“用户”部分,将 LDAP 后缀输入为 ou=People,dc=localdomain,dc=com 。 在这个例子中,所有用户都应该在 People 上可用。
在“组”部分,输入 LDAP 后缀为 ou=Groups,dc=localdomain,dc=com 。在此示例中,所有组都应在基本组 Groups 中可用。
在这里插入图片描述保存后回到登录页,用户变成了admin,输入密码123456登录

在这里插入图片描述


客户端

本来看很多人用phpLDAPadmin,安装之后出现无法使用的问题,查资料发现是php版本问题,绕不开
在这里插入图片描述
出自在 Ubuntu 22.04|20.04|18.04 上安装 OpenLDAP 和 phpLDAPadmin(不是有问题就别教我安装啊!)
所以决定听从建议安装LDAP客户管理器了,安装phpLDAPadmin的过程本来有记录的既然丢了就算了

参考:在 Ubuntu 22.04|20.04|18.04|16.04 上配置 LDAP 客户端

安装

将 LDAP 服务器地址添加到 /etc/hosts 文件中。

sudo vim /etc/hosts

192.168.18.50 ldap.mint.com
前面是服务器ip,后面域名
在这里插入图片描述
安装命令:

sudo apt -y install libnss-ldap libpam-ldap ldap-utils

在这里插入图片描述

设置 LDAP URI - 可以是 IP 地址或主机名
在这里插入图片描述设置搜索库的专有名称
在这里插入图片描述选择 LDAP 版本 3
为设为本地根数据库管理员选择是
在这里插入图片描述
LDAP 数据库是否需要登录?回答否
为 root 设置 LDAP 帐户,例如 cn=admin,cd=example,cn=com
在这里插入图片描述

设置 LDAP root 帐户密码:123456

配置

安装后,编辑 /etc/nsswitch.conf 并将 ldap 身份验证添加到 passwd 和 group 行。

sudo vim /etc/nsswitch.conf

在这里插入图片描述
修改文件/etc/pam.d/common-password。删除第 26 行的 use_authtok

在 Ubuntu 系统中,/etc/pam.d/common-password 文件是 PAM(Pluggable Authentication Modules)配置文件之一,用于定义密码认证的相关策略。use_authtok 是 PAM 模块中的一个选项,用于指定是否使用前一个模块提供的认证令牌(通常是密码)。

在这里插入图片描述
通过将以下行添加到文件 /etc/pam.d/common-session 的末尾,可以在首次登录时创建主目录

session optional pam_mkhomedir.so skel=/etc/skel umask=077

在这里插入图片描述

测试

通过切换到 LDAP 上的用户帐户进行测试

sudo su - mouse
id

在这里插入图片描述su: user mouse does not exist or the user entry does not contain all the required fields

提示用户不存在

getent passwd mouse

没有返回结果说明系统无法解析该用户,试了一些常见方法还没弄好,先这样吧


回来力!解决一下这个问题

debug

用nc命令测试能否连到服务器

nc -zv ip 389 

在这里插入图片描述查看服务器ip已经不是那个了所以连不上,改成真实ip就连上了

使用ldapsearch直接查询用户

ldapsearch -x -H ldap://192.168.18.50 -b "dc=mint,dc=com" "(uid=mouse)"

有结果,能正常访问LDAP服务
输出结果也可以检查POSIX属性是否完整,POSIX属性一般包括包括 uidNumber、gidNumber、homeDirectory 和 loginShell,这里都有的
在这里插入图片描述检查 nslcd 配置

sudo vim /etc/nslcd.conf

关键配置项:

uri ldap://ldap.mint.com
base dc=mint,dc=com
binddn cn=admin,dc=mint,dc=com
bindpw 123456
ssl no  # 如果未启用 TLS
tls_reqcert allow  # 允许自签名证书(如有需要)

发现这里缺了不少啊补上,暂时改成这样
(后来发现这里打成ssl on了…人怎么能这么粗心大意)
在这里插入图片描述

保存后需要重启nslcd服务

sudo systemctl restart nslcd

再试还是没用,继续!

日志(其实不用改)

启用调试日志,修改 /etc/nslcd.conf 增加日志级别:

sudo vim /etc/nslcd.conf
loglevel 1  # 日志级别 0-5,5 为最详细
log /var/log/nslcd.log

重启服务并查看日志:

sudo systemctl restart nslcd
sudo tail -f /var/log/nslcd.log

在这里插入图片描述如果报错的话可以这样查看详细信息

systemctl status nslcd.service
journalctl -xeu nslcd.service

比如说第一条命令,在这里可以看到是/etc/nslcd.conf第37行的loglevel无法发识别
在这里插入图片描述因为不同版本nslcd可能用的参数不同…先确定一下版本

nslcd --version

nss-pam-ldapd 0.9.12,但是我也不知道怎么搜他参数…
在这里插入图片描述通过 man 手册获取 nslcd.conf 的参数说明:

man nslcd.conf

看到log是这个形式的
在这里插入图片描述参数形式:log SCHEME LEVEL
SCHEME:指定日志记录的方式,可以是以下选项之一:

  • none:不记录日志。
  • syslog:将日志发送到系统日志(默认方式)。
  • absolute file name:指定一个绝对路径的文件,将日志写入该文件。

LEVEL:可选参数,指定日志级别。日志级别决定了记录哪些级别的消息。可选值包括:

  • crit:仅记录关键错误。
  • error:记录错误信息。
  • warning:记录警告信息。
  • notice:记录重要通知。
  • info:记录一般信息(默认级别)。
  • debug:记录调试信息,包含最详细的消息。

也就是说现在应该是默认的log syslog info,记录一般信息到系统日志,感觉没必要改,把加的log那几句删掉,去系统日志看看吧
那系统日志在哪呢
常见的系统日志文件:

/var/log/syslog:在使用 syslogd 或 rsyslogd 的系统中,这是主要的系统日志文件。
/var/log/messages:在一些系统中,这文件包含一般系统消息。
/var/log/daemon.log:用于记录守护进程的日志信息。
/var/log/auth.log:用于记录认证相关的日志信息(如用户登录、su命令等)。

怎么查看:
使用 tail 命令
查看日志文件的末尾部分(实时更新):

tail -f /var/log/syslog

使用 journalctl(适用于使用 systemd 的系统)
查看特定服务的日志(例如 nslcd):

journalctl -u nslcd.service

所以要查看nscld的日志可以用

tail -f /var/log/syslog

开着这个终端不要退出tail,新开一个终端执行su,查看最新的日志
在这里插入图片描述看了一眼之后想起来配置文件里要改ip…把/etc/nslcd.conf里服务器uri改成真实ip然后重启nslcd服务,再su试试,查看syslog日志:
在这里插入图片描述slapd的:
在这里插入图片描述TLS握手失败,能是证书配置错误或加密协议不兼容。然后再排查了一遍,发现是nslcd.conf里写了ssl on,关掉ssl之后就成功了
在这里插入图片描述可以使用exit或者Ctrl + D退出

好现在来研究一下开ssl怎么搞
在这里插入图片描述证书路径:/etc/ssl/certs/ca-certificates.crt
修改证书权限

sudo chmod 644 /etc/ssl/certs/ca-certificates.crt

不是,怎么就能用了??
在这里插入图片描述
那总之现在问题是解决了先这样吧累了

域名问题

发现服务器ip变了,所以域名失效了
目前搞不了所以只能每次手动换ip了(

静态ip

搞不了啊在学校(X
尝试搞一下
确认当前网络接口名称

ip a

第一个是lo,环回接口,看到第二个,网络接口是ens33
在这里插入图片描述编辑/etc/netplan下的yaml文件,我这是01-network-manager-all.yaml
这里记一下初始的配置防止改坏了

# Let NetworkManager manage all devices on this system
network:
  version: 2
  renderer: NetworkManager

修改成

network:
  version: 2
  renderer: NetworkManager  # 使用 NetworkManager 管理网络
  ethernets:
    ens33:  # 网卡名称
      dhcp4: no  # 禁用 DHCP
      addresses:
        - 192.168.18.50/24  # 静态 IP 和子网掩码(CIDR 格式)
      routes:
        - to: default
          via: 192.168.18.1  # 网关地址
      nameservers:
        addresses: [8.8.8.8, 1.1.1.1]  # DNS 服务器
        
要在Ubuntu 22.04上安装Subversion (SVN) 并将其配置OpenLDAP同步,你可以按照以下步骤操作: 1. **更新系统并安装必要的软件包**: ```bash sudo apt update sudo apt install subversion openssh-server ldap-utils ``` 2. **设置SSH公钥认证**: - 首先,生成SSH密钥对: ```bash ssh-keygen -t rsa -b 4096 ``` - 将公钥添加到`~/.ssh/id_rsa.pub`的内容,并复制到OpenLDAP服务器的对应用户账户的`authorized_keys`文件。 3. **配置Subversion服务器**: - 创建一个新的Subversion仓库目录(如果尚未创建): ```bash mkdir /var/svn/repos chown svn:svnx /var/svn/repos chmod 755 /var/svn/repos ``` - 使用`svnadmin create`初始化仓库: ```bash svnadmin create /var/svn/repos/myrepo ``` 4. **配置Apache作为Subversion访问中介**: - 如果还没有安装Apache,可以安装它: ```bash sudo apt install apache2 ``` - 启动Apache并打开配置文件编辑权限: ```bash sudo systemctl start apache2 sudo nano /etc/apache2/sites-available/default ``` - 添加指向Subversion仓库的URL映射。例如: ``` <Location /> DAV svn SVNPath /var/svn/repos </Location> ``` 5. **启用虚拟主机并重启服务**: ```bash a2ensite default sudo systemctl restart apache2 ``` 6. **配置OpenLDAP**: - 确保你的OpenLDAP服务器已经运行并且配置正确。你需要将Subversion用户的DN、密码等信息添加到合适的 LDAP 模块里。 - 参考OpenLDAP的官方文档(如《OpenLDAP Administrator's Guide》)了解如何配置bind DN和映射到Subversion用户的信息。 完成以上步骤后,你应该能够通过HTTP(S)访问Subversion仓库,并通过OpenLDAP管理用户和权限。具体的设置可能会因你的环境而异,所以记得检查文档并调整以适应你的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值