OpenLDAP服务器搭建以及集成SVN、Linux登陆等应用实现

OpenLDAP服务器搭建全套

目录:

  • 一、制作iso安装源
  • 二、安装前的准备操作
  • 三、安装OpenLDAP服务器
  • 四、安装PhpLDAPAdmin来登陆OpenLDAP
  • 五、打开OpenLDAP的日志
  • 六、主从服务器搭建
  • 七、SVN与LDAP服务器整合验证
  • 八、Linux登陆集成LDAP服务器
安装环境介绍:

CentOS 6.9(其实都要不多,也就CentOS7和CentOS6某些指令不一样而已)

安装物件准备:

安装源DVD文件:http://mirrors.163.com/centos/6.9/isos/x86_64/

下载下来这两个,就可以开始了


一、制作iso安装源

下载了CentOS6.9的DVD,它的DVD文件是两个,所以就要把这两个文件合并成一个iso来使用。 
把这两个文件放到系统中,假设位置分别为/home/CentOS-DVD1.iso和/home/CentOS-DVD2.iso 
1.创建相应操作文件夹

mkdir -p /mnt/dvd1 /mnt/dvd2 /mnt/iso   

2.挂在这两个iso文件

mount mount -o loop /home/CentOS-DVD1.iso /mnt/dvd1
mount mount -o loop /home/CentOS-DVD2.iso /mnt/dvd2

3.复制dvd1的所有内容到/mnt/iso下

cp -r /mnt/dvd1/* /mnt/iso/

4.复制dvd2下Packages目录下的所有的rpm包到/mnt/iso/Packages下

cp -r /mnt/dvd2/Packages/*.rpm /mnt/iso/Packages/

5.合并TRANS.TBL文件

cat /mnt/dvd[12]/Packages/TRANS.TBL|sort > /mnt/iso/Packages/TRANS.TBL

6.备份yum配置文件

cd /etc/yum.repos.d
rename .repo .repo.bak *.repo

7.复制一个新的配置文件

cp CentOS-Media.repo.bak CentOS-Media.repo

8.编辑这个CentOS-Media.repo修改中间的三项

vi CentOS-Media.repo

[c6-media] 
name=CentOS-\$releasever - Media 
baseurl=file:///mnt/iso 
gpgcheck=0 
enabled=1 
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

9.生效yum配置

yum clean all
yum upgrade
yum makecache

iso制作完成


二、安装前的准备操作

1.关闭防火墙

/etc/init.d/iptables stop  && chkconfig iptables off

2.关闭NetworkManager(非图形化界面的最小安装系统可以忽略)

/etc/init.d/NetworkManager stop && chkconfig NetworkManager off

3.SeLinux设为disabled

使用getenforce命令查看是否为Disabled,若不是,则修改。 
运行命令setenforce 0,再getenforce的时候为permissive 
修改配置文件:vi /etc/sysconfig/selinux 把 SELINUX=disabled 保存

4.重启电脑

shutdown -r now

三、安装OpenLDAP服务器

1.执行安装

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

安装完成后可以使用tail -n 1 /etc/passwd结果: 
ldap:x:55:55:LDAP User:/var/lib/ldap:/sbin/nologin 
还可以通过rpm -qa|grep openldap看到安装了5个软件包

2.复制配置文件

cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
cp /usr/share/openldap-servers/slapd.conf.obsolete /etc/openldap/slapd.conf

3.生成密码

slappasswd >> /etc/openldap/slapd.conf

然后让你输入两次密码,密码你来定 这条命令是将输出结果输入到slapd.conf文件尾部

4.修改slapd.conf文件内容

vi /etc/openldap/slapd.conf

1) 文件尾部则出现"{SSHA}sdjajdsdaskdjaxxxxx"一串密文密码 在非编辑状态: 
光标放到密文密码这一行按yy 
使用:set nu来显示行号 
去大约在123行附近,准确的说是

#   rootpw          secret  

这一行后面按p则粘贴到这一行,前面添加"rootpw" 
注意rootpw必须要顶格,roowpw与密文密码之间大约有三个TAB键,密文跟secret的横向位置相同,最终达到的效果是这样的:

# rootpw            secret
rootpw              {SSHA}sdjajdsdaskdjaxxxxx

不要忘记删除最后一行的密码,shift+g到最后一行,dd删除。

2)修改

  • 107行(by dn.exact="cn=x1,dc=x2,dc=x3" read)
  • 115行(suffix "dc=x2,dc=x3")
  • 117行(rootdn "cn=x1,dc=x2,dc=x3")

三处的cn=x1,dc=x2,dc=x3为你想使用的名字 
x1、x2、x3为你想取得名字

5.重新生成配置文件信息文件

1)检测刚刚修改的slapd.conf是否有错误

slaptest -f /etc/openldap/slapd.conf

会报三行错误,是因为没有重新生成配置文件并启动slapd 
先启动slapd:

/etc/init.d/slapd restart

又报错了,是因为没有授权:

chown -R ldap.ldap /var/lib/ldap/   

再启动slapd:

/etc/init.d/slapd restart

启动成功了再回来检测配置文件是否错误

slaptest -f /etc/openldap/slapd.conf

表示配置文件没有问题

2)生成配置文件信息文件 
先删除原来的内容:

rm -rf /etc/openldap/slapd.d/*
slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d/

成功后可以查看/etc/openldap/slapd.d/cn\=config/olcDatabase\=\{2\}bdb.ldif这个文件, 这个文件中olcSuffix和olcRootDN项应该有你亲切的x1、x2、x3

3)重启服务(先授权再重启)

chown -R ldap.ldap /etc/openldap/slapd.d/ 
/etc/init.d/slapd restart 

出现两个OK说明成功了

至此,OpenLDAP服务基本配置完成


四、安装PhpLDAPAdmin来登陆OpenLDAP

1.安装EPEL仓库,镜像里没有PhpLDAPAdmin这个的安装包,所以得安装EPEL仓库

rpm -ivh  http://mirrors.ukfast.co.uk/sites/dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
yum clean all 
yum makecache   

2.安装PhpLDAPAdmin

yum -y install phpldapadmin  

3.修改phpldapadmin的配置文件,访问控制权限,配置允许谁访问

vi /etc/httpd/conf.d/phpldapadmin.conf

Allow from xx.xx.xx.xx

写上个你的IP,后期使用这台机器来访问 save

如果允许所有人访问,那就去掉“Deny from all”这行

4.修改配置文件:

vi /etc/phpldapadmin/config.php  

打开397行"$servers->setValue('login','attr','dn')"的注释 
关闭下一行398行"$servers->setValue('login','attr','uid')"的注释 

5.重启httpd服务

/etc/init.d/httpd restart   

6.在你添加访问权限的那台机子上输入 http://xx.xx.xx.xx/ldapadmin/ 应该可以看到登陆界面了,使用"cn=x1,dc=x2,dc=x3"作为用户名,之前你自己定的密码作为密码登录, 虽然能登陆成功,但是还是有跟下图是不一样的,还是需要做点配置

7.导入管理员账号信息 随便找个地方新建一个文件,文件名就叫root.ldif 
下面是文件内容,每个属性的空格与值之间有一个空格,其中换成你搭建OpenLDAP服务器的时候的那个名字

dn: dc=x2,dc=x3 
objectclass: dcObject 
objectclass: organization 
o: x2 
dc: x2

dn: cn=x1,dc=x2,dc=x3 
objectclass: organizationalRole 
cn: x1

ldapadd -x -D "cn=x1,dc=x2,dc=x3" -W -f root.ldif

输入密码,看到两条adding new ....则成功

你可能碰到这个问题:

 解决:检查【root.ldif】文件每行最后有没有空格,如果有就删掉就行了
再去登陆,则出现下图登陆成功的样子 
 
至此PhpLDAPAdmin搭建完成


五、打开OpenLDAP的日志

1.修改配置文件

vi /etc/openldap/slapd.conf 

在最后加上

loglevel -1

修改了配置文件就要重新生成一下配置信息

rm -rf /etc/openldap/slapd.d/*
slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d/
chown -R ldap.ldap /etc/openldap/slapd.d/    

2.修改系统日志

vim /etc/rsyslog.conf

在大约61行下面加上

local7.* /var/log/boot.log 
local4.* /var/log/slapd/slapd.log

注意对齐,之后重启系统日志服务

/etc/init.d/rsyslog restart       

3.创建日志文件夹及修改权限 
没有则创建,一般是有

mkdir /var/log/slapd
chmod 755 /var/log/slapd/
chown ldap.ldap /var/log/slapd/   

4.重启OpenLDAP服务

/etc/init.d/slapd restart   

就可以在那个日志文件中看到日志了


六、主从服务器搭建

1.在主服务器上的操作: 
1)复制一份配置文件:

cp /etc/openldap/slapd.conf /etc/openldap/slapd.bak

2)停掉服务:

/etc/init.d/slapd stop

3)修改配置文件

vi /etc/openldap/slapd.conf

将135行后面添加,注意对齐

index nisMapName,nisMapEntry eq,pres,sub 
index entryCSN,entryUUID eq

将57行(# moduleload symcprov.la)注释去掉 
将34(# modulepath /usr/lib/openldap)、35(# modulepath /usr/lib64/openldap)行注释去掉

在文件末尾添加,后面的汉语解析不要加上

overlay syncprov 后端工作再overlay模式 
syncprov-checkpoint 100 10 当满足修改100个条目或者10分钟的条件时主动以推的方式执行 
syncprov-sessionlog 100 会话日志条目的最大数量

4)重新生成配置文件信息文件

rm -rf /etc/openldap/slapd.d/*
slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d/
chown -R ldap.ldap /etc/openldap/slapd.conf 
chown -R ldap.ldap /etc/openldap/slapd.d
/etc/init.d/slapd restart   

5)拷贝一份配置文件到从服务器上

scp /etc/openldap/slapd.conf root@[ip]:/etc/openldap/slapd.conf   

输上密码就可以了,最好先删除掉从服务器上的那个配置文件

2.在从服务器上操作 
1)去掉配置文件内容:

overlay syncprov 
syncprov-checkpoint 100 10 
syncprov-sessionlog 100

再加上后面的解释不要加上:

syncrepl rid=003 
provider=ldap://10.0.0.138:389/ 
type=refreshOnly 
retry="60 10 600 +" 尝试时间 
interval=00:00:00:10 设置同步更新时间(日:时:分:秒) 
searchbase="dc=lemon,dc=com" 
scope=sub 匹配根域所有条目 
schemachecking=off 同步更新时是否开启schema语法检测 
bindmethod=simple 同步验证模式为简单模式(即明文 ) binddn="cn=Captain,dc=lemon,dc=com" 使用Captain用户读取目录树信息 
attrs="*,+" 同步所有属性信息 
credentials=123456 管理员密码

2)重新生成配置文件信息文件

rm -rf /etc/openldap/slapd.d/*
slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d/
chown -R ldap.ldap /etc/openldap/slapd.conf 
chown -R ldap.ldap /etc/openldap/slapd.d
/etc/init.d/slapd restart

主从服务器配置完成


七、SVN与LDAP服务器整合验证

说明:

  1. svn的访问是以svn://协议访问的,一般都是用http协议访问,所以要使用apache的httpd服务器
  2. apache已经添加了对ldap服务器的支持,所以svn的认证过程是使用apache代理OpenLDAP来完成的
  3. svn的权限控制还是要放在其svn服务上(authz文件)

操作: 
以下为环境安装,如果你的svn服务器和ldap服务器都已经安装好了可以直接从第三步开始

1.安装httpd 
因为我们在安装PhpLdapAdmin的时候已经安装了httpd,所以此项可以跳过

2.安装Subversion服务

yum -y install subversion

3.安装httpd对LDAP服务的支持

yum -y install mod_dav_svn

4.配置subversion.conf 
找到apache服务器的安装路径,一般在/etc/httpd/下,在conf.d目录下有一个subversion.conf文件,打开它,先上我的配置:

<Location /opt/svn> 
DAV svn 
SVNParentPath /opt/svn 
SVNListParentPath on 
AuthzSVNAccessFile /opt/svn/authz

AuthName "Subversion repository" 
AuthType Basic 
AuthBasicProvider ldap 
AuthzLDAPAuthoritative on 
AuthLDAPURL "ldap://xxx.xxx.xx.xx:389/ ou=people,dc=example,dc=com?uid?sub?(objectclass=*)" 
AuthLDAPBindDN "cn=root,dc=example,dc=com" 
AuthLDAPBindPassword "123123"

Require ldap-user 
</Location>

前4行不用说了

  • AuthName:写死就行
  • AuthType:验证类型,Basic使用账号密码验证
  • AuthBasicProvider:ldap写死不解释
  • AuthzLDAPAuthoritative:这个搭配最下面“Require ldap-user”使用,on表示只要求验证ldap用户,别的不认;off则可以使用svn的账号和ldap混合账号登陆
  • Require:ldap-user或者valid-user,你要是只用ldap账号登陆的话就填写第一个

在解释AuthLDAPURL|AuthLDAPBindDN|AuthLDAPBindPassword的时候要先讲一下LDAP服务器认证过程,方便理解:

客户端(httpd)使用提供的URL(AuthLDAPURL)进行验证的时候,并不是直接验证输入的账 号密码,因为LDAP服务器在验证的时候要使用DN(每个节点用户的唯一标识)和密码来进行登陆验证的,但是DN一般来说比较长,诸如:“cn=xxx,ou=xxx,ou=xxx,dc=xxx,dc=xxx”,这种光输入的时候就烦气了,所以要想使用简短的用户名来登陆的时候,一般的做法是在某个节点用户上添加一个属性,比如mobile(手机号),Email(邮箱),user name或者uid(用户名),然后使用这个属性的值来登陆。

当用户输入这个属性值和密码的时候,客户端(httpd服务器)先使用AuthLDAPBindDN和AuthLDAPBindPassword作为用户名和密码登陆,根据AuthLDAPURL指定的查询规则(AuthLDAPURL的查询规则一会再说)来查找用户输入的属性的值有没有,如果查找的条数为0或者大于1,则返回错误,如果查找的条数等于1,则使用查找到的这个条目的DN和用户输入的密码进行登陆验证,成功则成功,失败则失败,这就是OpenLDAP的验证过程。

  • AuthLDAPBindDN|AuthLDAPBindPassword:就是用于查找用户的账号密码了,一般设定一个用友只读权限的账号就行
  • AuthLDAPURL: 
    对应上面那个url:[协议名称]://[ip地址或者域名]:[端口号]/[baseDN]?[attr]?[scope]?[filter] 
    baseDN:指定开始搜索节点的名称 
    attr:就是用户输入的属性键,默认是"uid",我使用的是uid,还可以使用cn,mobile,Email等。。。 
    scope:one,sub,base三者之一,默认sub 
    filter:过滤器,默认(objectclass=*)

配置完了之后重启服务

5.现装svn的小伙伴还需要配置一个库,没库看啥效果,本来就有库的就可以看效果了 
1)创建svn版本库目录 
随便建地方,不过要跟上面配置文件中的SVNParentPath值一致:

mkdir /opt/svn

2)启动svn服务

svnserve -d -r /opt/svn

3)创建一个svn版本库,要去/opt/svn下执行啊

svnadmin create Test

4)授权,不然web会有errorlog

chown apache.apache -R /opt/svn 

5)创建权限管理文件

vim /opt/svn/authz   

[groups] 
admin=xxx 
users=yyy,zzz

[/] 
@admin = rw

[Test:/] 
@users = r

这里的xxx,yyy,zzz是只用户输入的属性的值(LDAP服务器中某个用于登陆的节点的属性值),如果你没配置这里的权限,用户虽然登陆成功了,但是没有相应的权限页面会提示没权限查看的,users后面跟多个以","分割的用户名(你设置的查询规则按什么查询就是什么)

过程中出现问题看日志哦,第五章已经开启了日志功能了,虽然看不懂,不过有可能能提供解决思路

暴一下当时配置的坑,脑子不好使了,在配置AuthLDAPBindPassword密码的时候想着123123,写成了123456,怎么连接都连不同,傻了。

OK,SVN+apache+OpenLDAP完成


八、Linux登陆集成LDAP服务器

1.停掉sshd服务

service sshd stop && chkconfig sshd off

2.安装nslcd服务

yum install nss-pam-ldapd

3.修改vi /etc/nslcd.conf这个配置文件

最后两行,换上你的uri和base。注意:不一定是最后两行,反正肯定有uri和base的配置,要改成你的。

4.vi /etc/pam.d/system-auth (下面能对齐就对齐)

1)在auth required pam_deny.so这行上面加上"auth sufficient pam_ldap.so use_first_pass
2)在account required pam_permit.so这行上面加上account [default=bad success=ok user_unknown=ignore] pam_ldap.so 
3)在password required pam_deny.so这行上面加上password sufficient pam_ldap.so use_authtok
4)在最后一行加上session optional pam_ldap.so 
5)在session块中的第二行下面添加session optional pam_mkhomedir.so skel=/etc/skel/ umask=0022 

!注意:如果你的配置文件中的这四块里面有关于pam_sss.so的,在其前面加#注释掉

5.vi /etc/nsswitch.conf

大约在33,34,35行左右的三行: 
passwd: files 
shadow: files 
group: files 
每行后面加个空格再加上“ldap” 
passwd: files ldap 
shadow: files ldap 
group: files ldap 

亲测CentOS7下files后面可能有sss,不用管,在其后面加上ldap就可以了

6.vi /etc/sysconfig/authconfig

确保: 
USESHADOW=yes 
USELDAPAUTH=yes 
USELOCAUTHORIZE=yes 
USELDAP=yes 

7.重启nslcd服务

/etc/init.d/nslcd restart   

8.到这里就可以使用LDAP账号进行本地登录了,添加用户验证: 

问题: 

这是因为没有某个组,就是这玩意,创建一个就可以选了我也不知道这个组干啥用的,懂得可以留言教我: 

!!!这里有个深坑,在添加用户的时候填写密码的时候,密码后面的加密方式一定要使用(crypt,md5crypt)这两种其一,要不然是登陆不上去的,会密码验证失败的!!!

贴上创建账号的图,可供参考 

但是一般谁本地登陆啊,肯定是用ssh登陆,下面接着ssh配置

9.vi /etc/ssh/sshd_config

大约在97行左右,确保: UsePAM是yes

10.vi /etc/pam.d/sshd

1)在最后面添加session required pam_mkhomedir.so 
2)在account块中添加account required pam_access.so(后续控制用户使用) 

11.vi /etc/pam.d/password-auth

1)auth块中倒数第二行添加auth sufficient pam_ldap.so use_first_pass 
2)account块中倒数第二行添加account [default=bad success=ok user_unknown=ignore] pam_ldap.so 
3)password块中倒数第二行添加password sufficient pam_ldap.so use_authtok 
4)session块中最后一行添加session optional pam_ldap.so 

!注意:如果你的配置文件中的这四块里面有关于pam_sss.so的,在其前面加#注释掉

12.重启sshd服务

service sshd restart

现在可以使用LDAP账号进行SSH登陆了

13.可能会有需要配置某个账号不能登陆的情况

vi /etc/security/access.conf

最后一行添加: 
"- : t2 : ALL" 

注意之间的空格,限制t2用户不能登陆 
保存此文件即生效

至此,Linux登陆整合LDAP服务器就完成了


鸣炮感谢 
感谢李博主的博客,博客地址: 
https://www.cnblogs.com/lemon-le/p/6266921.html


至此OpenLDAP服务器全套教程完成

天王盖地虎 小鸡炖蘑菇

原创文章,转载请注明出处,谢谢


持续更新BUG解决:

使用SSH登陆还是登不上,可能这个配置文件没有编辑

/etc/pam_ldap.conf

这个文件中有对LDAP服务器的配置

查错,看/var/log/secure日志文件

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值