免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 9616 | 回复: 0
打印 上一主题 下一主题

[FreeBSD] [转] svn集成AD域账户验证:subversion + saslauthd [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-04-07 15:14 |只看该作者 |倒序浏览
新人贴请见谅,如果不合版规请版主纠正。
原文: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环境也可以参考。

安装SVN

cd /usr/ports/devel/subversion && make config && make install clean

记得选上”SASL support“选项,默认安装的貌似是不带SASL的?

创建SVN库

svnadmin create /home/svn_repo

chown -R svn:svn /home/svn_repo

如果安装svn时没添加svn用户,可以用pw和sysinstall创建一个。

配置SVN库

编辑/home/svn_repo/conf/svnserve.conf

[general]

anon-access = none
auth-access = write

[sasl]

use-sasl = true

编辑/home/svn_repo/conf/authz,对所有验证过的用户开放读写权限,请自行按需配置

[/]
* = rw

安装配置Cyrus SASL

cd /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=INFO

ldap_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.conf

saslauthd_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 start

service 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.conf

svnserve_enable=”YES”
svnserve_user=”root”
svnserve_group=”root”

以root用户运行svnserve的确不高明,开放那三个日志文件写权限也不行。如果有人知道解决办法,请不吝赐教。

解决权限问题后,svn就已经集成了域验证。关于域验证可以参考以前的博客。

注:

http://cyrusimap.web.cmu.edu/docs/cyrus-sasl/2.1.25/options.php  Cyrus SASL选项文档



您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP