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. 提升Android ListView性能的几个技巧

    ListView如何运作的? ListView是设计应用于对可扩展性和高性能要求的地方.实际上,这就意味着ListView有以下2个要求: 尽可能少的创建View: 只是绘制和布局在屏幕上可见的子Vi ...

  2. 团队计划会议(二)——WBS

    一.会议及WBS 因为是第一次开发android应用,所以我们对这次开发心里也没底,最后我们商量暂时先实现主要的几个骨架功能,之后再慢慢完善. 会议期间,我们根据自己的能力大致先估算了完成这些功能需要 ...

  3. dtd文件本地配置

    在struts包解压出来以后的地方找

  4. Programming Protocol-Independent Packet Processors

    引言 OpenFlow协议固定的包头域数目,使得南向协议过于死板. P4可以实现自定义包头,增加灵活性. P4是OpenFlow未来发展的方向. We propose P4 as a strawman ...

  5. jdbc 5.0

    1.事务 事务将单个SQL语句或一组SQL语句视为一个逻辑单元,如果任何语句失败,整个事务将失败. jdbc的MySQL驱动程序中的事务默认是自动提交. 默认情况下,每个SQL语句在完成后都会提交到数 ...

  6. [2017BUAA软工]第一次博客作业

    一.一些疑问 看书看得比较慢,暂时只思考了以下几个问题,有些自问自答,不知道符合不符合要求…… [1] 第一章中书上提到了这样一个例子: “如果一架民用飞机上有需求,用户使用它的概率是百万分之一,你还 ...

  7. Navicat Premium_11.2.7简体中文版 破解版本 windows版本

    亲测可用 自己一直在用的 https://pan.baidu.com/s/1VVKKQoIKVB0BgNXBK4YTrQ

  8. php自带的filter过滤函数

    PHP 过滤器用于对来自非安全来源的数据(比如用户输入)进行验证和过滤. filter_has_var()检查是否存在指定输入类型的变量. filter_id()返回指定过滤器的 ID 号. filt ...

  9. 在DBGrid中实现多选功能

    1.首先把DBGrid->options-dgMulitSelect设为True.  dgRowSelect也设为True,此属性设为true后,DBGrid将不能编辑,如何实现能否编辑代码如下 ...

  10. MVC SignalR Hub初学

    具体有关SignalR的说明查网上,我这里简单列举一个例子 1.新建MVC,添加SignalR引用(NuGet安装). 2.添加OWIN START类 public class Startup { p ...