您好,欢迎来到小侦探旅游网。
搜索
您的当前位置:首页基于saslauthd构建AD验证的SVN服务器

基于saslauthd构建AD验证的SVN服务器

来源:小侦探旅游网
基于saslauthd构建AD验证的SVN服务器硬件室技術文檔文件編號版本總頁數ASC-HD-12061.0.08修訂記錄NO.修訂日期版次頁次修訂內容/摘要12014年12月06日1.0.082345678910發行章核准審查制訂部門硬件室檔案名稱基于saslauthd构建編號ASC-HD-版次1.0.0頁數8AD验证的SVN服务器1206开始就有讲到SVN大致有一下3种验证方式:1. 明文记录conf/passwd文件2. subversion + Apache + mod_dav模块,Windows Server AD域验证3. subversion + Cyrus SASL,Windows Server AD域验证第一种是既不安全也不方便管理;第二种轻松简单就很容易整合AD验证,而且可以使用web的方式在线浏览svn库,支持较大规模的开发,缺点就是Apache大大增加了攻击面,对于公司软件代码就是公司机密。访问使用http或者https协议第三种是通过独立服务器方式运行,svnserve相对apache轻量级,简单小巧。使用svn://自己的一套协议进行通信。檔案名稱基于saslauthd构建編號ASC-HD-版次1.0.0頁數8AD验证的SVN服务器1206环境说明:本文假设已经安装并架设好Windows AD服务器,在此AD中有一个SVN的组织单位,并建有luke及jack两个用户以及一个LDAP查询账户svn(如果在生产环境中LDAP查询账户最好设置密码永不过期及用户不能更改密码).SVN服务器配置之saslauthd配置:1.检查是否安装cryus-sasl檔案名稱基于saslauthd构建編號ASC-HD-版次1.0.0頁數8AD验证的SVN服务器1206[root@Node2 ~]# rpm -qa |grep cyrus-saslcyrus-sasl-lib-2.1.23-15.el6_6.1.x86_64cyrus-sasl-2.1.23-15.el6_6.1.x86_64#如果未安装可以使用yum方式进行安装[root@Node2 ~]# yum -y install cyrus-sasl cyrus-sasl-lib cyrus-sasl-plain2.检查saslauthd有几种验证方式[root@Node2 ~]# saslauthd -vsaslauthd 2.1.23authentication mechanisms: getpwent kerberos5 pam rimap shadow ldap#从以上可知,有以下6种方式getpwent、kerberos5、pam、rimap、shadow、ldap。******黄色部分为拓展,可忽略*********现在我们使用系统的shawod方式来验证一下:a.修改/etc/sysconfig/saslauthd下的MECH值来进行设定(默认是pam)[root@Node2 ~]# vim /etc/sysconfig/saslauthdSOCKETDIR=/var/run/saslauthdMECH=shadowFLAGS=b.启动saslauthd服务[root@Node2 ~]# /etc/init.d/saslauthd startc.使用本机密码进行测试:(已建一个账户和密码都是asc的账户)[root@Node2 ~]# testsaslauthd -u asc -p asc0: OK \"Success.\"如果你的密码没有输入错误,就应该正常。如果提示失败,则要查看/etc/sysconfig/saslauthd下的MECH值是不是shadow,另外是否有重新启动saslauthd服务,如果不行,查看/var/log/messsage中的日志进行排错。d.测试正常之后,建议将特意新建的asc账户进行删除,防止系统内不必要的账户,影响系统安全[root@Node2 ~]# userdel -r asc[root@Node2 ~]# cat /etc/passwd |grep asc[root@Node2 ~]# cat /etc/group |grep asc3.由于我们这里是使用AD验证,因此需要将MECH更改为ldap。[root@Node2 ~]# vim /etc/sysconfig/saslauthdSOCKETDIR=/var/run/saslauthdMECH=ldapFLAGS=4.配置saslauthd的配置文件:在正常情况下,是没有/etc/saslauthd.conf这个文件,需要我们手动新建,并添加内容:[root@Node2 ~]# vim /etc/saslauthd.confldap_servers: ldap://192.168.100.5#AD服务器地址ldap_default_domain: lushare.com#默认域ldap_search_base: OU=svn,DC=lushare,DC=com#搜寻依据,以上为在lushare.com域下的svn组织单位内查找账户檔案名稱基于saslauthd构建編號ASC-HD-版次1.0.0頁數8AD验证的SVN服务器1206ldap_bind_dn: CN=svn,OU=SVN,DC=lushare,DC=com#LDAP搜寻账户,上面也可写成svn@lushare.comldap_bind_pw: 1234567#LDAP搜寻账户的密码ldap_deref: neverldap_restart: yesldap_scope: subldap_use_sasl: noldap_start_tls: noldap_version: 3ldap_auth_method: bindldap_filter: sAMAccountName=%u#以上是说将AD中的sAMAccountName映射为这里的用户(重要)ldap_password_attr: userPassword#密码依据(重要)ldap_timeout: 10ldap_cache_ttl: 30ldap_cache_mem: 327685.重新启动saslauthd服务,并测试是否正常[root@Node2 ~]# service saslauthd restartStopping saslauthd: [ OK ]Starting saslauthd: [ OK ][root@Node2 ~]# testsaslauthd -u jack -p asc0: OK \"Success.\"如果不正常,则需要查看/etc/sysconfig/saslauthd下的MECH是否改为ldap,以及/etc/saslauthd.conf的配置是否出错,特别是ldap_search_base,及LDAP搜寻账户的密码是否出错,记得重新启动saslauthd服务6.以上说明saslauthd与AD连接成功,现在要为svn创建验证配置文件,/etc/sasl2/svn.conf此文件不存在需要手动创建。[root@Node2 ~]# vim /etc/sasl2/svn.confpwcheck_method: saslauthd#指明检查方法为saslauthdmech_list: plain login#mech_list指明了认证信息传递机制SVN服务器之SVN软件配置:1.SVN下载安装(yum方式):[root@Node2 ~]# yum -y install subversion2.新建SVN文件夹及SVN仓库[root@Node2 ~]# mkdir -p /data/svn/data /data/svn/conf[root@Node2 ~]# tree /data/data└── svn ├── conf檔案名稱基于saslauthd构建編號ASC-HD-版次1.0.0頁數8AD验证的SVN服务器1206 └── data检查目录是否创建成功如果出现-bash: tree: command not found,则yum -y install tree[root@Node2 ~]# svnadmin create /data/svn/data/sadoc[root@Node2 ~]# mv /data/svn/data/sadoc/conf/* /data/svn/conf/#转移sadoc项目的配置文件3.配置仓库配置文件[root@Node2 ~]# vim /data/svn/conf/svnserve.conf[general]auth-access = writeauthz-db = /data/svn/conf/authzrealm = sadoc Repository[sasl]use-sasl = true以上说明:需要将use-sasl = true前的注释符,取消掉,开启使用sasl验证,还需要修改权限表authz文件的位置,还需开启认证访问可写软链接svnserve.conf文件,将来即便是存在多个仓库也都可以使用一个配置文件及权限[root@Node2 ~]# ln -s /data/svn/conf/svnserve.conf /data/svn/data/sadoc/conf/4.配置仓库权限文件[root@Node2 ~]# vim /data/svn/conf/authz[aliases][groups]dev = luketest = jack[/]@dev = rw@test = r5.启动svn服务:[root@Node2 ~]# svnserve -d -r /data/svn/data/检查启动是否成功[root@Node2 ~]# netstat -ntlup |grep 3690tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN 1168/svnserve6.检查是否正常与AD验证[root@Node2 ~]# svn checkout svn://192.168.100.223/sadoc --username=luke --password=asc --no-auth-cachesvn: Could not obtain the list of SASL mechanisms#如果提示以上就说明未安装cyrus-sals-plain,直接使用[root@Node2 ~]# yum -y install cyrus-sasl-plain进行安装,安装完成之后重新启动SVN服务即可。[root@Node2 ~]# svn co svn://192.168.100.223/sadoc --username=luke --password=asc --no-auth-cache檔案名稱基于saslauthd构建編號ASC-HD-版次1.0.0頁數8AD验证的SVN服务器1206Checked out revision 0.7.使用普通用户权限运行svnserve服务在生产环境中建议使用非root权限运行svnserve服务创建svn账户用以运行svn服务[root@Node2 ~]# useradd svn#将仓库的目录设置为svn所有否则无法写入数据[root@Node2 ~]# chown -R svn /data/svn/data/8.启动svnserve服务a.非root用户在root用户下启动该服务[root@Node2 ~]# su svn -c '/usr/bin/svnserve -d -r /data/svn/data'b.如果需要使用root权限的话就直接[root@Node2 ~]# /usr/bin/svnserve -d -r /data/svn/data9.将SVN服务加入开机自启动:先将saslauthd服务加入开机自启动否则无法进行认证[root@Node2 ~]# chkconfig saslauthd ona.使用非root账户启动加入开机自启动[root@Node2 ~]# echo \"su svn -c '/usr/bin/svnserve -d -r /data/svn/data'\">>/etc/rc.localb.使用root账户运行加入开机自启动[root@Node2 ~]# echo \"/usr/bin/svnserve -d -r /data/svn/data\">>/etc/rc.local以下为一键安装及配置脚本:#!/bin/bash########################################################This Script is install with ad auth svn Server###################################################yum -y install cyrus-sasl cyrus-sasl-lib cyrus-sasl-plain subversion > /dev/null 2>&1[ $? -ne 0 ] && {echo \"Yum Install Failed\" exit 2}cat << EOF >/etc/saslauthd.confldap_servers: ldap://192.168.100.5ldap_default_domain: lushare.comldap_search_base: DC=lushare,DC=comldap_bind_dn: svn@lushare.comldap_bind_pw: 123456ldap_deref: neverldap_restart: yesldap_scope: sub檔案名稱基于saslauthd构建編號ASC-HD-版次1.0.0頁數8AD验证的SVN服务器1206ldap_use_sasl: noldap_start_tls: noldap_version: 3ldap_auth_method: bindldap_filter: sAMAccountName=%uldap_password_attr: userPasswordldap_timeout: 10ldap_cache_ttl: 30ldap_cache_mem: 32768EOFcat << EOF >/etc/sasl2/svn.confpwcheck_method:saslauthdmech_list:PLAIN LOGINEOFsed -i 's#MECH=pam#MECH=ldap#g' /etc/sysconfig/saslauthd[ -d '/data/svn/data' ] && mv -f /data/svn/data /tmp/svndata`date +%Y%m%d%H%M%S`mkdir -p /data/svn/data[ -d '/data/svn/conf' ] && mv -f /data/svn/conf /tmp/svnconf`date +%Y%m%d%H%M%S`mkdir -p /data/svn/conf/usr/bin/svnadmin create /data/svn/data/SaDocmv /data/svn/data/SaDoc/conf/* /data/svn/conf/sed -i 's/# anon-access = read/anon-access = none/g' /data/svn/conf/svnserve.confsed -i 's/# auth-access = write/auth-access = write/g' /data/svn/conf/svnserve.confsed -i 's#\\# authz-db = authz#authz-db = /data/svn/conf/authz#g' /data/svn/conf/svnserve.confsed -i 's/# use-sasl = true/use-sasl = true/g' /data/svn/conf/svnserve.conf#sed -i 's/# min-encryption = 0/min-encryption = 128/g' /data/svn/conf/svnserve.conf#sed -i 's/# max-encryption = 256/max-encryption = 256/g' /data/svn/conf/svnserve.confln -s /data/svn/conf/svnserve.conf /data/svn/data/SaDoc/conf/cat>/data/svn/conf/authz</dev/null 2>&1[ `grep \"su svn -c '/usr/bin/svnserve -d -r /data/svn/data'\" /etc/rc.local|grep -v grep|wc -l` -eq 0 ] && echo \"su svn -c '/usr/bin/svnserve -d -r /data/svn/data'\">>/etc/rc.localexit 0

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- xiaozhentang.com 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务