Cyrus SASL介绍(翻译)
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介绍(翻译)的更多相关文章
- .NET 5.0正式发布,功能特性介绍(翻译)
本文由葡萄城技术团队翻译并首发 转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 我们很高兴今天.NET5.0正式发布.这是一个重要的版本-其中也包括了C# ...
- 使用MyGeneration创建模板:介绍(翻译)
原文信息 原文地址 原文作者信息: Justin Greenwood MyGeneration Software http://www.mygenerationsoftware.com April 2 ...
- bcache 状态/配置 文件详细介绍(翻译自官网)
声明: 文中 斜体带下划线 的段落为翻译不够准确的段落 原文:https://www.kernel.org/doc/Documentation/bcache.txt 官网:https://bcach ...
- Rpgmakermv(7) Chronus插件介绍翻译
协议:MIT 作用:时间,有时间推进,可以设置速度,随着游戏中时间的推进,会发生昼夜改变和天气变化. ------------------------------------------------- ...
- Zookeeper 介绍翻译
源网址链接 https://zookeeper.apache.org/ Apache Zookeeper 开放源码的服务器,提供高可靠的分布式协调服务. Zookeeper是一个维护配置信息,命名服务 ...
- LDAP服务器的概念和原理简单介绍
LDAP服务器的概念和原理简单介绍 1. 目录服务 目录是一个为查询.浏览和搜索而优化的专业分布式数据库,它呈树状结构组织数据,就好象Linux/Unix系统中的文件目录一样.目录数据库和关系数据库不 ...
- SVN CentOS7 下配置svn的安装及基础配置介绍
CentOS7 下配置svn的安装及基础配置介绍 by:授客 QQ:1033553122 目录 一. 二. 三. 四. 五. 六. 七. 一. 实践环境 CentOS 7操作系统(CentO ...
- ASP.NET Core 介绍
原文:Introduction to ASP.NET Core 作者:Daniel Roth.Rick Anderson.Shaun Luttin 翻译:江振宇(Kerry Jiang) 校对:许登洋 ...
- 【转】 svn 错误 以及 中文翻译
直接Ctrl+F 搜索你要找的错 # # Simplified Chinese translation for subversion package # This file is distribute ...
随机推荐
- C# ArcFace 免费人脸识别 2.0 demo
**配置过程:** 1. 到[虹软官网](https://ai.arcsoft.com.cn/index.htm?utm_source=csdn&utm_medium=referral)下载S ...
- 【Python入门学习】闭包&装饰器&开放封闭原则
1. 介绍闭包 闭包:如果在一个内部函数里,对在外部作用域的变量(不是全局作用域)进行引用,那边内部函数被称为闭包(closure) 例如:如果在一个内部函数里:func2()就是内部函数, 对在外部 ...
- 3.openldap生成LDAP用户
1.用migrationtools生成用户 #yum install migrationtools -y #vim /usr/share/migrationtools/migrate_common.p ...
- 20181113-7 Beta阶段第1周/共2周 Scrum立会报告+燃尽图 05
作业要求https://edu.cnblogs.com/campus/nenu/2018fall/homework/2387 版本控制https://git.coding.net/lglr2018/F ...
- struts传值方式ModelDriven的使用
struts传值不需要用到request,struts会处理好. 1.不是面向对象直接在jsp页面和Java代码都写:name,password... 以下为面向对象 2.action类实现Model ...
- uc浏览器的用户体验
用户界面: 我认为,uc浏览器的用户界面还是很招人喜欢的,可以很容易让用户找到自己想看的网页.简单快捷. 记住用户的选择: uc在每次用户访问完网站之后都会记住用户访问的高频网站,以便下次用户可以更好 ...
- 软件工程课堂练习——找出1-n中1出现的个数
题目:给定一个十进制的正整数,写下从1开始,到N的所有整数,然后数一下其中出现“1”的个数. 要求:写一个函数 f(N) ,返回1 到 N 之间出现的 “1”的个数.例如 f(12) = 5. 在3 ...
- 2018软工实践—Alpha冲刺(2)
队名 火箭少男100 组长博客 林燊大哥 作业博客 Alpha 冲鸭鸭! 成员冲刺阶段情况 林燊(组长) 过去两天完成了哪些任务 协调各成员之间的工作 协助前端界面的开发 搭建测试用服务器的环境 完成 ...
- MOOK学习
课程选择及其理由 课程:c++程序设计 教师:魏英 学校:西北工业大学 总共:48讲 选择理由:我其实之前找了好几个,但由于小白,思考了下(迷茫,感觉好像都不错),然后看了一下大家都选择了西北工业大学 ...
- Microsoft Orleans 之安装
先决条件 Orleans 是一个.net 类库集,为了使用它,你需要.net 4.5.1 或者更高版本,开发工具集需要visual studio 2015 或者更高版本或者其他支持的开发工具,不支持V ...