yissyuu 发表于 2013-04-07 15:14

[转] svn集成AD域账户验证:subversion + saslauthd

新人贴请见谅,如果不合版规请版主纠正。:mrgreen:
原文:http://practicer.info/?p=310

本文环境是FreeBSD 9.1 + Windows Server 2003,Linux环境也可以参考
svn是常用的版本控制工具,从小到大各种规模的团队都要面对一个问题:用户验证。subversion大致支持3种验证方式:1. 明文记录conf/passwd文件2. subversion + Apache + mod_dav模块,Windows Server AD域验证3. subversion + Cyrus SASL,Windows Server AD域验证第一种既不安全也不方便管理;第二种可以很容易整合AD域验证,而且免费赠送在线浏览svn库的功能,缺点嘛当然是apache大大增加了攻击面;第三种的缺点是非常难配置。如果是Windows环境,直接下载VisualSVN Server就皆大欢喜了。点几下鼠标就搞定,而且有免费版,企业版增加了SSO等功能。VisualSVN本身是基于Apache+subversion。这里只介绍第三种sasl验证方式,环境是FreeBSD 8.2/9.1,Linux环境也可以参考。安装SVNcd /usr/ports/devel/subversion && make config && make install clean记得选上”SASL support“选项,默认安装的貌似是不带SASL的?创建SVN库svnadmin create /home/svn_repochown -R svn:svn /home/svn_repo如果安装svn时没添加svn用户,可以用pw和sysinstall创建一个。配置SVN库编辑/home/svn_repo/conf/svnserve.confanon-access = none
auth-access = writeuse-sasl = true编辑/home/svn_repo/conf/authz,对所有验证过的用户开放读写权限,请自行按需配置[/]
* = rw安装配置Cyrus SASLcd /usr/ports/security/cyrus-sasl2-saslauthd && make install clean编辑/usr/local/etc/saslauthd.conf,有些linux发行版可能是/etc/saslauthd.conf###
### /usr/local/etc/saslauthd.conf
###
ldap_servers: ldap://practicer.info/
ldap_version: 3
ldap_bind_dn:域\专用域账户
#ldap_bind_pw:专用账户密码
ldap_password: 专用账户密码
### ldap_auth_method: fastbind
ldap_mech: DIGEST-MD5
ldap_search_base: dc=PRACTICER,dc=INFOldap_deref: never
ldap_restart: yes
ldap_scope: sub
# ldap_use_sasl: yes
ldap_start_tls: no
ldap_auth_method: bind
ldap_filter: sAMAccountName=%u
# ldap_password_attr: userPassword
ldap_timeout: 10
ldap_cache_ttl: 30
ldap_cache_mem: 32768
#EOF注意根据情况修改黑体部分参数,注意上面填了一个合法的域用户和密码,这是因为Windows AD不允许匿名绑定,sasl绑定(连接)到AD才能验证别的账户。这里可以填一个低权限用户专供绑定用。然后测试下:testsaslauthd -u域用户 -p密码成功后会出现0: OK “Success.”修改/etc/rc.confsaslauthd_enable=”YES”
saslauthd_flags=”-a ldap”编辑/usr/local/lib/sasl2/svn.conf注意CentOS等可能在/etc/sasl2/svn.conf,如果文件不存在就新建一个pwcheck_method: saslauthd
#
## Auxiliary plugin, use ldap
auxprop_plugin: ldap
#
## Mechanism list, plain text only
mech_list: PLAIN DIGEST_MD5
ldapdb_mech: PLAIN DIGEST_MD5
ldap_mech: DIGEST-MD5
ldap_default_domain: PRACTICER.INFO
ldap_search_base: dc=PRACTICER,dc=INFO
ntlm_server:10.0.0.2
ntlm_v2: yes
log_level: 7注意自行修改域名IP。svn.conf和saslauthd.conf共用选项,而且svn.conf优先。启动服务service saslauthd startservice svnserve start运行 ps aux应该可以看到/usr/local/sbin/saslauthd -a ldap和/usr/local/bin/svnserve字样ok,现在可以试一下了,用svn客户端连上来试一试?嗯?总是要求重新输入密码,或者各种SASL(-1)错误?Authentication error from server: SASL(-1): generic failure: Password
verification failed如果上面的步骤没问题,要么你的linux/freebsd版本不同,配置文件位置变了;要么service saslauthd status看看sasl验证服务状态;要么。。。你遇到了这个:默认情况下svnserve用svn账户权限运行,而saslauthd是root。用了sasl验证后svnserve会向/var/log/auth.log、/var/log/debug.log和/var/log/messages,但你在哪里都看不到出错日志,估计是因为权限问题。如果遇到这种情况,可以先修改/etc/rc.confsvnserve_enable=”YES”
svnserve_user=”root”
svnserve_group=”root”以root用户运行svnserve的确不高明,开放那三个日志文件写权限也不行。如果有人知道解决办法,请不吝赐教。解决权限问题后,svn就已经集成了域验证。关于域验证可以参考以前的博客。注:http://cyrusimap.web.cmu.edu/docs/cyrus-sasl/2.1.25/options.phpCyrus SASL选项文档

页: [1]
查看完整版本: [转] svn集成AD域账户验证:subversion + saslauthd