Ubuntu18 使用 Openldap 认证登录

1. 软件安装和基本配置

//软件安装

$ sudo apt update
$ sudo apt install libnss-ldap libpam-ldap ldap-utils nscd sudo-ldap

安装上面的软件时,会跳出 UI 页面,进行 ldap 的基本配置。

//配置 openldap 服务器


image.png

//配置搜索域


image.png

//配置 ldap 版本


image.png

//是否使用本地管理用户密码


image.png

//连接ldap是否需要登录


image.png

//配置连接ldap的用户


image.png

//配置连接ldap用户的密码


image.png

//问题:如果 root 未设置密码,会出现下面的报错

Refusing to remove sudo.
dpkg: error processing package sudo (--remove):
 installed sudo package pre-removal script subprocess returned error exit status 1
Errors were encountered while processing:
 sudo
E: Sub-process /usr/bin/dpkg returned an error code (1)

配置完成后,所做的设置保存在/etc/ldap.conf文件中,所以您后续可以直接修改这个文件,进行再次配置。

2. 认证配置

上面安装的时候,已经进行了基本的配置,但还需要进一步配置。

//关闭 tls-check,由于我们是私有证书

$ sudo nano /etc/ldap.conf
...
tls_checkpeer no

//开启 ldap 认证

$ sudo nano /etc/nsswitch.conf
...
passwd:         compat systemd ldap
group:          compat systemd ldap
...
sudoers:        files ldap

//开启自动创建用户家目录,末尾添加以下内容

$ sudo nano /etc/pam.d/common-session
...
session required pam_mkhomedir.so skel=/etc/skel umask=077

//重启服务

$ sudo systemctl restart nscd
$ sudo systemctl enable nscd

3. 用户测试

//查看用户

$ id jack
uid=55776(jack) gid=0(root) groups=503(sudo-admin),0(root)

//切换 openldap 用户测试

$ sudo su - jack
Creating directory '/home/users/jack'.

//从服务器检查特定用户的LDAP条目,也可以使用这种方法

$ getent passwd jack
jack:x:55776:0:jackzang:/home/users/jack:/bin/bash

4. 配置和测试 sudo

//获取 ca 证书

$ openssl s_client -connect openldap.xiodi.cn:636 -showcerts < /dev/null | openssl x509 -text

...
-----BEGIN CERTIFICATE-----
MIIDuDCCAqCgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBoMQswCQYDVQQGEwJDTjEO
MAwGA1UECAwFSGVOYW4xEjAQBgNVBAcMCVpoZW5nWmhvdTERMA8GA1UECgwIeGlv
ZGkuY24xDDAKBgNVBAsMA2VkdTEUMBIGA1UEAwwLY2EueGlvZGkuY24wHhcNMTkw
NDI3MDk1NzQyWhcNMjAwNDI2MDk1NzQyWjBaMQswCQYDVQQGEwJDTjEOMAwGA1UE
CAwFSGVOYW4xETAPBgNVBAoMCHhpb2RpLmNuMQwwCgYDVQQLDANlZHUxGjAYBgNV
BAMMEW9wZW5sZGFwLnhpb2RpLmNuMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
CgKCAQEA3RLRpDER0KG5zN7O/fROD3oMLb01BOCW+8LmlWz4oy5/KrP8XlrQIzzl
L6Q2eHq2kX5eMalDnQvc2jkmebigYiBbZtASnoYcX1ITneFTPuih/c4CatzvyBUg
P2orGHoJQoIxfZcCZdXalwb0GjuyoIv4CavneA9jA8NF4rgoDJM1jxbKolxnWMCc
uis+2jfG0cBiv7dICpMDDexpF5Dj8tjDLPswXr3xfafwgORGxkVZMxL4KlHseVhV
AcAB3yKVsttB1DmvDUY/MCY5JzRg4Y2rTMkz9OO6BqZg56W3ASeTM2hB1XpLVjm+
VwRq7TNqRk+h5XKUiiD4v6x3B4igpQIDAQABo3sweTAJBgNVHRMEAjAAMCwGCWCG
SAGG+EIBDQQfFh1PcGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4E
FgQUCa8Mlg/I6GH0CDONYnbvfYYTiIMwHwYDVR0jBBgwFoAUyJ9qxzO1nS+/4Vd0
leVcsSEnWAowDQYJKoZIhvcNAQELBQADggEBAKmaY3FZ7ixrZwgm537NU+2W6zYH
l7X4D+rF/ASelne/o8p2Bhph3Vne0HvAvb4kmIwiNEjGYf7d0wKfgwFb4pxPv/5j
71dCl92FIykTm76bU4/g/hPWuygXSMqGPJkWhAgfXwaE3SeBmblwMPNSVS2eOQFB
lmqh+1u3B46tbtIwSu7Qui1f6kZSwOvOfOFiiUkFWo132zjP0tJ+VxitNtObqU/G
hp4nh3Ne15lfRuBinla/4KMWlyVdRCstqrePxTJgBNN/P/xjAGTUuPCiK9jpLPWf
INbazksXtG6IO1TTOnaqhjHr0V8vxvZ6fuDDhgy7Gs/l1B7oChifqBWSkag=
-----END CERTIFICATE-----

$ nano /etc/ssl/cacert.crt
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----

//配置 sudo

$ sudo nano /etc/ldap/ldap.conf
URI         ldap://openldap.xiodi.cn
BINDDN      cn=client search,ou=admin,dc=xiodi,dc=cn
BINDPW      xiodi.cn
bind_timelimit 30
timelimit 30
sudoers_base   ou=sudoers,dc=xiodi,dc=cn
sudoers_debug 0
sudoers_timed yes
TLS_REQCERT allow
TLS_CACERT /etc/ssl/cacert.crt

[warning]经过多次测试,无法使用ldaps的方式,后续有解决方案时,再更新。

//测试

jackzang@u1820041:~$ sudo su - jack
jack@u1820041:~$ sudo su - root      //使用jack用户执行 sudo 测试
root@u1820041:~#
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。