CentOS7中安裝Subversion 1.9.7(續2)

前面兩篇文章主要介紹了SVN的安裝和使用http/https方式訪問SVN,可是SVN登陸使用的驗證方式仍然是明文密碼形式,本文主要調查如何使用已有的OpenLDAP服務器進行SVN服務器的登陸和驗證。html

咱們先在CentOS 7上安裝OpenLDAP服務器,安裝方法參照這個連接node

https://www.itzgeek.com/how-tos/linux/centos-how-tos/step-step-openldap-server-configuration-centos-7-rhel-7.htmllinux

1.安裝OpenLDAP

1.1 安裝LDAP服務器

執行如下命令安裝OpenLDAPsql

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

安裝完成後啓動LDAP服務數據庫

systemctl enable slapd.service
systemctl start slapd.service

啓動完成後,查看端口號,能夠看到LDAP服務已經啓動。centos

1.2 設置LDAP服務器的root用戶密碼

1.3 配置LDAP服務器

咱們切換到 /etc/openldap/slapd.d/目錄下,建立db.ldif文件,內容以下:api

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

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

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootPW
olcRootPW: {SSHA}NQpsOl1hX39ub2NYtubl85F0+pEtcM0K

執行如下命令,使db.ldif文件生效,修改/etc/openldap/slapd.d/cn=config/olcDatabase={2}hdb.ldif文件的實際內容(不建議直接修改olcDatabase={2}hdb.ldif文件,下面修改monitor文件也是同樣)瀏覽器

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

執行結果以下圖所示:bash

再建立monitor.ldif文件服務器

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=manager,dc=rick,dc=com" read by * none

執行ldapmodify命令更新cn=config/olcDatabase={1}monitor.ldif文件

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

執行後的結果以下圖所示

1.4 建立LDAP服務器證書

執行如下指令建立LDAP服務器證書文件

openssl req -new -x509 -nodes -out /etc/openldap/certs/rickldapcert.pem -keyout /etc/openldap/certs/rickldapkey.pem -days 365

指令執行後,在/etc/openldap/certs目錄下生成兩個pem文件

接下來咱們將這兩個pem文件的全部權賦給ldap用戶(在安裝OpenLDAP時建立),以便在使用ldap用戶啓動

LDAP服務器時使用這兩個pem文件。

chown -R ldap:ldap /etc/openldap/certs/*.pem

建立certs.ldif文件,標明在LDAP服務器中使用這兩個pem文件。

dn: cn=config
changetype: modify
replace: olcTLSCertificateFile
olcTLSCertificateFile: /etc/openldap/certs/rickldapcert.pem

dn: cn=config
changetype: modify
replace: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/openldap/certs/rickldapkey.pem

執行LDAPModify命令,導入certs.ldif文件

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

執行結果以下圖所示

執行下列命令肯定上述LDAP服務器配置修改是否有效

slaptest -u

若是配置無誤,會顯示config file testing succeeded信息

1.5 建立LDAP數據庫

拷貝LDAP數據庫配置樣例文件到/var/lib/ldap目錄下,並改變樣例文件全部者爲ldap用戶。

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

添加consine和nis LDAP schemas

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

執行後的結果以下圖所示

建立rick域生成所需的base.ldif文件

dn: dc=rick,dc=com
dc: rick
objectClass: top
objectClass: domain

dn: cn=Manager,dc=rick,dc=com
objectClass: organizationalRole
cn: Manager
description: LDAP Manager

dn: ou=People,dc=rick,dc=com
objectClass: organizationalUnit
ou: People

dn: ou=Group,dc=rick,dc=com
objectClass: organizationalUnit
ou: Group

執行下列命令,加載base.ldif文件,添加rick域

ldapadd -x -W -D "cn=Manager,dc=rick,dc=com" -f base.ldif

執行結果以下圖所示

建立SVN訪問的用戶svnuser2,配置文件svnuser2.ldif以下

dn: uid=svnuser2,ou=People,dc=rick,dc=com
objectClass: top
objectClass: account
objectClass: posixAccount
objectClass: shadowAccount
cn: svnuser2
uid: svnuser2
uidNumber: 9999
gidNumber: 100
homeDirectory: /home/svnuser2
loginShell: /bin/bash
gecos: svnuser2 [Admin (at) Rick]
userPassword: {crypt}x
shadowLastChange: 17058
shadowMin: 0
shadowMax: 99999
shadowWarning: 7

加載svnuser2.ldif文件,建立LDAP用戶svnuser2

ldapadd -x -W -D "cn=Manager,dc=rick,dc=com" -f svnuser2.ldif

執行結果以下圖所示

設置svnuser2用戶的密碼爲123456

ldappasswd -s 123456 -W -D "cn=Manager,dc=rick,dc=com" -x "uid=svnuser2,ou=People,dc=rick,dc=com"

其中-D 是表示登陸的root用戶,-x 表示是須要設置的LDAP用戶的路徑,-s表示須要設置的密碼。

設置完成後,咱們查看svnuser2用戶的信息

ldapsearch -x cn=svnuser2 -b dc=rick,dc=com

信息以下圖所示

1.6 開啓LDAP防火牆

爲了方便管理LDAP服務器,也便於遠端服務器訪問LDAP服務器,咱們須要開啓LDAP服務器的防火牆,執行如下指令

firewall-cmd --permanent --add-service=ldap
firewall-cmd --reload

或者

firewall-cmd --permanent --add-port=[LDAP服務器端口號]
systemctl restart firewalld.service

1.7 開啓LDAP日誌

配置rsyslog記錄LDAP服務器的事件日誌到/var/log/ldap.log文件

咱們修改/etc/rsyslog.conf文件,在文件最後添加如下語句:

local4.* /var/log/ldap.log

重啓rsyslog服務器,conf文件的修改即生效

systemctl restart rsyslog

1.8 LDAP服務器鏈接驗證

咱們使用Apache Directory Studio對咱們安裝的LDAP服務器進行鏈接驗證,鏈接參數以下圖所示

其中Bind DN or user咱們使用base.ldif中建立的管理員用戶,密碼則是base.ldif中設置的olcRootPW的明文密碼。

鏈接成功後能夠看到LDAP服務器的節點樹結構,以及咱們建立的svnuser2用戶。

 

 

2.配置SVN服務器使用LDAP驗證

首先安裝mod_ldap模塊

yum install -y mod_ldap

安裝完成後訪問/etc/httpd/conf.d/subversion.conf文件,配置使用LDAP方式驗證登陸

<Location /rootSvn>
  DAV svn
  SVNPath /opt/svnRepos/
  SVNListParentPath On
  AuthType Basic
  AuthBasicProvider ldap
  AuthName "SVN Repo"
  Require valid-user
  AuthzSVNAccessFile /opt/svnRepos/conf/authz
  #AuthUserFile /opt/svnRepos/conf/http_passwd
  AuthLDAPURL "ldap://192.168.56.103:389/ou=People,dc=rick,dc=com?uid?sub?(objectClass=*)"
  AuthLDAPBindDN "cn=Manager,dc=rick,dc=com"
  AuthLDAPBindPassword [LDAP管理員用戶登陸密碼]
</Location>

AuthLDAPURL行表示咱們使用192.168.56.103(咱們安裝的LDAP服務器)上的

ou=People,dc=rick,dc=com節點下全部具備uid的用戶節點進行SVN用戶登陸驗證。

AuthLDAPBindDN是LDAP管理員賬號,AuthLDAPBindPassword是管理員賬號密碼,和使用Apache Directory Studio登陸時配置信息一致。

AuthBasicProvider ldap一行表示使用ldap做爲用戶登陸驗證。

AuthzSVNAccessFile一行保持不變,表示用戶訪問SVN的權限仍然在authz文件中配置。

再修改/opt/svnRepos/conf/authz文件,添加svnuser2用戶的訪問權限。

[/]
.....
svnuser2=rw

修改完成後重啓httpd服務。

咱們使用瀏覽器訪問SVN服務器,彈出用戶名/密碼輸入框

咱們輸入svnuser2和LDAP密碼,登陸成功後顯示SVN目錄

須要說明的是,以前設置的svnuser2密碼默認是按SSHA方法存儲密碼的,在進行SVN用戶和密碼驗證時會出現驗證不經過的狀況,爲了不這種狀況,建議使用Apache Directory Studio登陸LDAP服務器後修改SVN用戶密碼爲plain text方式保存,我以後會繼續研究如何使用SSHA保存密碼的前提下保證SVN用戶驗證經過。

相關文章
相關標籤/搜索