借助sasl构建基于AD用户验证的SVN服务器

SVN服务器的用户验证方式很多,以下列出一些我所了解的:

1 最简单的,即使用SVN版本库目录之下的conf/passwd文件存储用户信息。然而,密码使用了明文存储,有安全隐患。

2 SVN+sasl实现密码加密,我参考网上资料:

http://www.cnblogs.com/linn/archive/2011/08/04/2127014.html

进行了实验,该方式使用了另外的可自定义的sasldb文件来存储用户信息,然而,似乎没有实现加密的效果,初看之下,sasldb文件确实一堆乱码,但仔细看看,发现密码仍然是明文的,莫非我操作有偏差?更重要的是,这种方式使得用户管理极其麻烦。

3 既然提到了sasl,sasl提供各种用户验证方式,例如mysql、AD域等,非常理想,但查找资料发现,大多依赖于Apache,这意味着我们将使用http://、https://方式来使用SVN,这是令人讨厌的,性能也必然有所下降。

4 SVN+sasl+AD,令人愉快的是,剔除Apache,借助saslauthd构建基于AD用户验证的SVN服务器仍然是可行的,使用SVN自己的svn://协议进行通信。

 

本文将讲述第4种方案的实现方法。

 

环境说明:

SVN的安装、AD服务器的搭建、域帐号的添加等琐碎不在本文关心之列,以我所在环境为例,假设环境基础已经完备:

1 AD服务器

         操作系统:WindowsServer 2012 R2 Datacenter

         域:ad.com

         IP:10.17.1.2

         SVN域帐号:pub-svn+pw000000(密码应配置为不可更改,永不过期)

         SVN测试用户域帐号:test+pw111111

 

2SVN服务器

         操作系统:CentOS7.1 x64

         IP:10.17.1.10

         版本库:/home/svn/project_art

 

Step by Step!

 

1 检查是否已经安装cryus-sasl:

[root@localhostproject_art]# rpm -qa | grep cyrus-sasl

cyrus-sasl-lib-2.1.26-17.el7.x86_64

cyrus-sasl-2.1.26-17.el7.x86_64

cyrus-sasl-plain-2.1.26-17.el7.x86_64

cyrus-sasl-gssapi-2.1.26-17.el7.x86_64

cyrus-sasl-scram-2.1.26-17.el7.x86_64

cyrus-sasl-md5-2.1.26-17.el7.x86_64

 

如果没有安装则安装之:

[root@localhost project_art]#yum-y install cyrus-sasl cyrus-sasl-lib cyrus-sasl-plain

 

2 查看sasl的用户验证方式:

[root@localhostproject_art]# saslauthd -v

saslauthd 2.1.26

authenticationmechanisms: getpwent kerberos5 pam rimap shadow ldap httpform

我们要使用的AD验证方式便依靠ldap提供支持。

 

3 修改sasl的用户验证方式为ldap:

[root@localhostproject_art]# vi /etc/sysconfig/saslauthd

# Directory in which toplace saslauthd's listening socket, pid file, and so

# on.  This directory must already exist.

SOCKETDIR=/run/saslauthd

 

# Mechanism to use whenchecking passwords.  Run "saslauthd-v" to get a list

# of which mechanismyour installation was compiled with the ablity to use.

# MECH=pam

MECH=ldap

 

# Additional flags topass to saslauthd on the command line. See saslauthd(8)

# for the list ofaccepted flags.

FLAGS=

 

4 修改sasl配置文件/etc/saslauthd.conf,如果配置文件不存在,touch之:

[root@localhostproject_art]# vi /etc/saslauthd.conf

#AD服务器地址,写域名或IP都行

ldap_servers:ldap://ad.com

#AD默认域名

ldap_default_domain:ad.com

#用户信息查找配置,组织与单位OUGZY,要查找所有组织单位,则不填写OU

#ldap_search_base: OU=GZY,DC=ad, DC=com

ldap_search_base: DC=ad,DC=com

#SVN的域帐号

#ldap_bind_dn:CN=pub-svn, OU=GZY, DC=ad, DC=com

ldap_bind_dn: ad\pub-svn

#ldap_bind_pw:pw000000

ldap_password: pw000000

#其他设置

ldap_deref: never

ldap_restart: yes

ldap_scope: sub

ldap_use_sasl: no

ldap_start_tls: no

ldap_version: 3

ldap_auth_method: bind

ldap_mech: DIGEST-MD5

ldap_filter:sAMAccountName=%u

ldap_password_attr:userPassword

ldap_timeout: 10

ldap_cache_ttl: 30

ldap_cache_mem: 32786

 

5 重启sasl服务:

[root@localhost project_art]#systemctl restart saslauthd.service

重启后测试一下能否正常连接到AD域:

[root@localhostproject_art]# testsaslauthd -u test -p 'pw111111'

0: OK"Success."

如果连接失败,检查配置,找一下问题所在吧。

 

6 修改SVN的sasl配置文件/etc/sasl/svn.conf,同样,如果配置文件不存在,touch之:

[root@localhostproject_art]# vi /etc/sasl2/svn.conf

#用户验证方法

pwcheck_method:saslauthd

#用户验证信息怎么传输

mech_list: plain login

由于svn.conf依赖于saslauthd.conf,不需要配置过多内容,svn.conf也可以按照saslauthd.conf进行配置,这时它的配置选项有更高的优先级。

 

7 修改SVN版本库的配置:

[root@localhostproject_art]# vi /home/svn/project_art/conf/svnserve.conf

 [general]

anon-access = none

auth-access = write

#关闭passwd

# password-db = passwd

#如果要对版本库进行权限控制,开启authz

authz-db = authz

 [sasl]

#开启sasl用户验证

use-sasl = true

 

8 重启SVN:

[root@localhostproject_art]# ps -ef | grep svn

root     17131    1  0 14:30 ?        00:00:00 svnserve -d

root     18040 13803  0 15:57 pts/1    00:00:00 grep --color=auto svn

[root@localhostproject_art]# kill 17131

[root@localhostproject_art]# svnserve -d

 

有点暴力,SVN还有其他重启方式吗,Tell me!

 

9 到域用户客户端连接SVN服务器验证一下。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
要在Kafka服务器端开启SASL认证,需要进行以下步骤: 1. 配置Kafka Broker的JAAS文件。JAAS(Java Authentication and Authorization Service)是Java提供的一种用于身份验证和授权的API,Kafka使用JAAS来实现SASL认证。可以在Kafka Broker的配置文件(kafka_server_jaas.conf)中指定JAAS文件的路径和内容。例如: ``` KafkaServer { org.apache.kafka.common.security.plain.PlainLoginModule required username="broker_username" password="broker_password"; }; ``` 其中,KafkaServer是JAAS文件中的一个应用程序名称,可以自定义。PlainLoginModule是指定使用PLAIN机制进行身份验证。username和password指定了用于Broker身份验证用户名和密码。 2. 配置Kafka Broker的SASL参数。需要在Kafka Broker的配置文件中指定SASL参数,包括支持的SASL机制、支持的协议、JAAS文件路径等。例如: ``` listeners=SASL_PLAINTEXT://hostname:port sasl.enabled.mechanisms=PLAIN security.inter.broker.protocol=SASL_PLAINTEXT sasl.mechanism.inter.broker.protocol=PLAIN sasl.jaas.config=pathto/kafka_server_jaas.conf ``` 其中,listeners指定了Broker监听的地址和端口,这里使用了SASL_PLAINTEXT协议。sasl.enabled.mechanisms指定了支持的SASL机制,这里只支持了PLAIN。security.inter.broker.protocol指定了Broker之间通信的安全协议,这里也使用了SASL_PLAINTEXT。sasl.mechanism.inter.broker.protocol指定了Broker之间通信使用的SASL机制,这里也是PLAIN。sasl.jaas.config指定了JAAS文件的路径。 3. 重启Kafka Broker。在修改完配置文件后,需要重启Kafka Broker,使配置生效。 4. 配置Kafka Client的SASL参数。在使用Kafka Client连接到SASL认证启用的Kafka Broker时,需要在Kafka Client的配置文件中指定相应的SASL参数。例如: ``` bootstrap.servers=hostname:port security.protocol=SASL_PLAINTEXT sasl.mechanism=PLAIN sasl.jaas.config=pathto/kafka_client_jaas.conf ``` 其中,bootstrap.servers指定了Kafka Broker的地址和端口。security.protocol指定了与Broker通信的安全协议,这里也使用了SASL_PLAINTEXT。sasl.mechanism指定了使用的SASL机制,这里也是PLAIN。sasl.jaas.config指定了用于Client身份验证的JAAS文件路径。 通过以上步骤,就可以在Kafka服务器端开启SASL认证,提高Kafka集群的安全性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值