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. ICPC 沈阳 Problem C

    题意 求n的全排列中将前k个数排序后最长公共子序列>=n-1的个数 思考 我们先把最后可能产生的结果找出来,再找有多少种排列能构成这些结果 设排列为s S like 1,2,3,...,n , ...

  2. ES6中Class的继承关系

    es5实现中,每个对象都有__proto__属性(也就是关系图中[[prototype]]属性),指向对应的构造函数的prototype.Class 作为构造函数的语法糖,同时有prototype属性 ...

  3. 关于《数据结构》课本KMP算法的理解

    数据结构课上讲的KMP算法和我在ACM中学习的KMP算法是有区别的,这里我对课本上的KMP算法给出我的一些想法. 原理和之前的KMP是一样的https://www.cnblogs.com/wkfvaw ...

  4. linux awk,sort,uniq,wc,cut命令详解

    1.awk awk是行处理器: 相比较屏幕处理的优点,在处理庞大文件时不会出现内存溢出或是处理缓慢的问题,通常用来格式化文本信息 $ 表示当前行 $ 表示第一列 NF 表示一共有多少列 $NF 表示最 ...

  5. “来用”Beta版使用说明

    补发Beta版使用说明.Beta版与alpha版相比去掉了计算器,界面上没有太大变化. 1引言 1 .1编写目的 针对我们发布的Beta版本做出安装和使用说明,使参与内测的人员及用户了解软件的使用方法 ...

  6. javascript方法扩展

    String.prototype.startWith = function(str){ return str.indexOf(str) == 0; }; var str = "abc&quo ...

  7. (三)MySQL终极篇

    1.索引 详细介绍:http://www.cnblogs.com/57rongjielong/p/8039452.html 索引是对数据库表中一个或多个列的值进行排序的结构.索引是经过某种算法优化过的 ...

  8. Beta阶段冲刺第二天

    提供当天站立式会议照片一张 讨论项目每个成员的昨天进展 错题集功能编写没有彻底完成. 界面改善 测试数据库连接 讨论项目每个成员的存在问题 邹其元:错题集功能需要用到数据库,现在要解决的问题是怎样把数 ...

  9. 第八次java笔记

  10. windows平台下nginx+PHP环境安装

    因为日常工作在windows下,为方便在window是下进行PHP开发,需要在windows平台下搭建PHP开发环境,web服务器选择nginx,不过windows版本的nginx性能要比Linux/ ...