http://blog.sina.com.cn/s/blog_7695e9f40100pnpa.html

Cyrus SASL介绍

1. 综述

这篇文档讲述的是系统管理员配置SASL的方法,其中详细的描述了系统管理员如何利Cyrus SASL库来安装一个服务。

2. SASL 概念

SASL的全称是the Simple Authentication and Security Layer。它的机制是对协议执行验证。如果有某种f服务(如SMTP或IMAP)使用了SASL,使用这种协议的应用程序之间将会共享代码。一些明显使用SASL的应用程序有sendmail( 8.10.0版本以后)和Cyrus imapd(1.6.0版本以后)。

使用SASL库的应用程序之间将会告诉彼此如何完成 SASL协议的改变,并且告诉改变后的结果。

SASL只是一个框架,特定SASL机制控制着准确地协议改变。如果有n个协议使用m种不同的认证方式,SASL试图只用n+m种说明写入SASL库,并不需要写入n*m种,而且只要第一次写入,应用程序就可以运用SASl来执行服务。

3. 认证和授权标志符

"authorization identifier","authentication identifer"是不同的概念,我们需要熟悉两者之间的不同。

userid (user id, authorization id)

userid是应用程序用来核对可用选项的标识符。如,在unix系统,用户“bovik”可以用来写入“/home/bovik” 和它的子目录,但是不允许写入”/etc”。

authid (authentication id)

“authentication”是用来被核对标志符。如,”bovik”的密码是“qqqq”,系统会验证任何知道“bovik”的密码为“qqqq”的登录者。这样一个用户担当另一个用户的角色是容易被验证的。示例:Harry正在度假,他让他的学生jane来帮他查看他的邮箱。他可以让jane担当他的角色,jane只需要他的id和密码验证即可,但是需要被“bovik”用户授权。这样jane通过“jane” id、jane的密码和“bovik”用户的授权就可以登录邮件系统。

应用程序能够设置它们拥有的代理权限;默认,SASL库允许相同的用户去代理其他的用户(这些用户是必须是userid,authid)。

4. 领域

Cyrus SASL库支持领域的定义。一个领域是指用户和在一个特定领域,特定机制的认证用户的抽象集。

以单个机器的单个服务的最简单的案例中,领域可以描述成服务的域名。如果应用程序没有具体制定SASL的领域,大部分机制默认采用这用方法。

如果一个站点希望在多台机器之间分享的密码,但可以选择认证的领域作为域名,如“CMU.EDU”。另一方面,为了防止当一台机器的不安全,使整个网站的安全受到连累,每台服务器可以有它自己的领域。某些机制迫使用户(客户端)手动配置他们所处什的领域,使得用户认证更加坚固。

一个单一的站点可能支持多个不同的领域,这可能会造成应用程序混乱,但应用程序并不希望如此。你需要确保应用程序支持被添加不同领域的用户到sasldb,并需要设置saslpasswd。

Kerberos机制是把SASL领域当成Kerberos领域。 因此,这个Kerberos的SASL领域默认为服务器上的Kerberos默认领域。他们支持跨域认证;检查你的应用程序如何处理这个SASL领域。

一些认证机制,如PLAIN和CRAM-MD5,并不支持领域的概念。

5. SASL工作原理及服务器和客户端是如何精确的选择、使用SASL来实现那些认证机制

PLAIN

PLAIN自身并没有安全认证的机制。它的作用是通过另外的标准加密连接。(比如,IMAP命令“STARTTLS”产生一个加密的连接,通过使用PLAIN。)PLAIN工作机制是通过传送一个userid,一个authentication id和一个密码给服务器。并且服务器就验证PLAIN传送的是否一个三元组。系统管理员首先关注的是怎么样认证和验证密码是否正确。Cyrus SASl库可以实现这个功能。

passwd

/etc/passwd 可以很好的被SASL库支持。简单的配置是把“pwcheck_method”设置成”passwd”。

Shadow

/etc/shadow 有点复杂。如果使用SASL库的服务使用root用户来执行,是没有问题的,只需要把“pwcheck_method”设置成”shadow”。然而为了安全,大部分守护进程并不是采用root用户,比如说Cyrus imapd。为了能够使这些服务能够检查密码,他们需要一个root执行的辅助程序,或者特别许可的权限来读取/etc/shadow。最简单的方式就是赋给服务程序权限来读取/etc/shadow。比如,添加用户组为“shadow”的cyrus 用户,这样cyrus用户就有权限读取/etc/shadow。

Kerberos_v4

Kerberos v4的建立是在编译的时候的进行配置的。通过把“pwcheck_method”设置成”Kerberos_v4”,可以对明文的密码进行检查。

pam

PAM在linux和solaris里默认采用的验证用户的方式。通过配置它可以采用不同的方式检查密码。如果你采用pam验证同时采用Cyrus SASL库,那么只需在编译的时候把"pwcheck_method" 设置成"PAM"。采用SASL机制的pam认证,只会对明文验证有作用。对其他的密码验证是没有效果的。

sasldb

Sasldb是存储SASL密码的暗文数据库。相同的数据库存储着暗文共享的方法。它的首先是共享密匙机制的密码的将会与明文机制的密码的同步。但是常规系统内置将不使用sasldb。如果你在sasldb里设置明文密码。你只需要配置“saslpasswd”即把pwcheck_method设置成sasldb。

write your own

最后,也是最重要的,PLAIN最灵活的验证方法是自己写自己需要验证的方式。一些应用程序条用"sasl_checkpass()"惯例或使用PLAIN将会调用自己写的验证代码。最简单修改验证惯例的方法是修改lib/server.c(详细略)。

6. 如何配置SASL

默认配置文件

一般,Cyrus SASL库从/usr/lib/sasl/app.conf读取配置文件。其中app是应用程序的命名。比如sendmail从/usr/lib/sasl/sendmail.conf读取配置文件。

应用程序的配置

应用程序可以重新定义SASl库寻找配置信息的方式。例如Cyrus imapd 的asl配置项是从它自己的配置文件/etc/imapd.conf内读取sasl_pwcheck_option”信息。

不幸的是,自从SASL变得高灵活性的情况下,管理员可以很轻松的升级或安装新认证插件,并不需要重新编译应用程序。但是他的灵活性也造成编译的繁琐。

Cyrus SASL介绍(翻译)的更多相关文章

  1. .NET 5.0正式发布,功能特性介绍(翻译)

    本文由葡萄城技术团队翻译并首发 转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 我们很高兴今天.NET5.0正式发布.这是一个重要的版本-其中也包括了C# ...

  2. 使用MyGeneration创建模板:介绍(翻译)

    原文信息 原文地址 原文作者信息: Justin Greenwood MyGeneration Software http://www.mygenerationsoftware.com April 2 ...

  3. bcache 状态/配置 文件详细介绍(翻译自官网)

    声明: 文中 斜体带下划线  的段落为翻译不够准确的段落 原文:https://www.kernel.org/doc/Documentation/bcache.txt 官网:https://bcach ...

  4. Rpgmakermv(7) Chronus插件介绍翻译

    协议:MIT 作用:时间,有时间推进,可以设置速度,随着游戏中时间的推进,会发生昼夜改变和天气变化. ------------------------------------------------- ...

  5. Zookeeper 介绍翻译

    源网址链接 https://zookeeper.apache.org/ Apache Zookeeper 开放源码的服务器,提供高可靠的分布式协调服务. Zookeeper是一个维护配置信息,命名服务 ...

  6. LDAP服务器的概念和原理简单介绍

    LDAP服务器的概念和原理简单介绍 1. 目录服务 目录是一个为查询.浏览和搜索而优化的专业分布式数据库,它呈树状结构组织数据,就好象Linux/Unix系统中的文件目录一样.目录数据库和关系数据库不 ...

  7. SVN CentOS7 下配置svn的安装及基础配置介绍

    CentOS7 下配置svn的安装及基础配置介绍 by:授客 QQ:1033553122 目录 一. 二. 三. 四. 五. 六. 七. 一.      实践环境 CentOS 7操作系统(CentO ...

  8. ASP.NET Core 介绍

    原文:Introduction to ASP.NET Core 作者:Daniel Roth.Rick Anderson.Shaun Luttin 翻译:江振宇(Kerry Jiang) 校对:许登洋 ...

  9. 【转】 svn 错误 以及 中文翻译

    直接Ctrl+F 搜索你要找的错 # # Simplified Chinese translation for subversion package # This file is distribute ...

随机推荐

  1. 【snmp】Linux开启snmp及查询

    1.Linux snmp 1.安装snmp yum install -y net-snmp* 2.备份snmp配置 cp /etc/snmp/snmpd.conf /etc/snmp/snmpd.co ...

  2. 亚马逊6月18日发布惊世之作 或为3D智能手机

    亚马逊将在 6 月 18 日举行一个产品发布会. 其内容可能是关于传闻已久的亚马逊智能手机.该公司在 YouTube 上公布了一段炫耀这款设备的视频.这段视频展示了很多人在这款产品前摇头晃脑,并且表现 ...

  3. 效能检测 psp

    1.本周psp: 2.本周进度条: 3.累计进度图(折线图) 4.psp饼状图:

  4. TCP系列46—拥塞控制—9、SACK下的快速恢复与Limited transmit

    一.概述 1.SACK下的特殊处理过程 SACK下的拥塞控制处理是linux中拥塞控制的实现依据,再次强调一遍RFC6675的重要性,linux中拥塞控制主体框架的实现是与RFC6675一致的,所以如 ...

  5. Java实现的词频统计——单元测试

    前言:本次测试过程中发现了几个未知字符,这里将其转化为十六进制码对其加以区分. 1)保存统计结果的Result文件中显示如图: 2)将其复制到eclipse环境下的切分方法StringTokenize ...

  6. python配置文件读取

    在代码实现的过程中,我们经常选择将一些固定的参数值写入到一个单独的配置文件中.在python中读取配置文件官方提供了configParser方法. 主要有如下方法(找官文):   (这家伙很懒,直接复 ...

  7. [Google] 看雪论坛: 安卓碎片化的情况

    2018年10月28日早间消息,谷歌方面发布了Android各版本的最新份额数据,截止到10月26日.即便是已经推出3个月了,Android 9 Pie系统的用户数仍旧没有超过0.1%,导致未出现在榜 ...

  8. Linux输入子系统:多点触控协议 -- multi-touch-protocol.txt768

    转自:http://blog.csdn.net/droidphone/article/details/8434768 Multi-touch (MT) Protocol --------------- ...

  9. sqlserver-触发器-判断更新了哪个字段。

    create trigger 触发器名称on 表名(将触发器创建到那张表中)for updateasif update(判断更新字段)beginupdate (要更新的表名) set 字段=inser ...

  10. Kafka生产者各种启动参数说明

    首先是启动一个生产者 final String kafkazk="localhost:9092"; String topic="testAPI"; Proper ...