pam和sasl
这几天使用在Postfix搭建一个Webmail的平台,用户认证这一块最终使用了PAM。想整理一下思路,让自己对PAM有个更加清晰的认识。
1. PAM的简介
PAM全称是:Pluggable Authentication Modules。在当前的CentOS中都是用这个模块作各种认证通道。具体可以man 一下pam。
PAM的主要配置文件都集中在/etc/pam.d目录里面,里面有多个文件,每个文件表示了一种服务的认证方法,例如:sshd,login。
管理员可以根据自己的需要定义出自己的服务的认证配置,详细的配置信息可以man pam.d
2. SASL的简介
在对PAM做测试之前,需要一个sasl的工具集。SASL是一个用于认证处理的协议,全称是Simple Authentication and Security Layer。这个协议在rfc4422中定义,具体作用大概如下:
|
SMTP LDAP XMPP Other protocols ... \ | | / \ | | / SASL abstraction layer / | | \ / | | \ EXTERNAL GSSAPI PLAIN Other mechanisms ... |
从上面图可以看到,不同的应用通过SASL使用各种方法来进行用户认证。SASL的作用是为各种协议产生一个认证的抽象层,让用户登录的时候不用理会最终用户认证信息的出处。
一般情况下,当前的centos系统都会安装这套工具。在我的系统中,对应的版本是:
|
[root@kernel pam_mysql-0.7RC1]# rpm -ql cyrus-sasl-2.1.22-5.el5_4.3 /etc/rc.d/init.d/saslauthd /etc/sysconfig/saslauthd /usr/lib/sasl2 /usr/lib/sasl2/libsasldb.la /usr/lib/sasl2/libsasldb.so /usr/lib/sasl2/libsasldb.so.2 /usr/lib/sasl2/libsasldb.so.2.0.22 /usr/sbin/dbconverter-2 /usr/sbin/pluginviewer /usr/sbin/saslauthd /usr/sbin/sasldblistusers2 /usr/sbin/saslpasswd2 /usr/sbin/testsaslauthd /usr/share/doc/cyrus-sasl-2.1.22 /usr/share/doc/cyrus-sasl-2.1.22/LDAP_SASLAUTHD /usr/share/man/man8/pluginviewer.8.gz /usr/share/man/man8/saslauthd.8.gz /usr/share/man/man8/sasldblistusers2.8.gz /usr/share/man/man8/saslpasswd2.8.gz /var/run/saslauthd |
下面是SASL的配置文件,这个配置文件说明,SASL使用PAM作为获取认证数据的机制。
|
[root@kernel pam_mysql-0.7RC1]# cat /etc/sysconfig/saslauthd # Directory in which to place saslauthd's listening socket, pid file, and so # on. This directory must already exist. SOCKETDIR=/var/run/saslauthd # Mechanism to use when checking passwords. Run "saslauthd -v" to get a list # of which mechanism your installation was compiled with the ablity to use. MECH=pam # Additional flags to pass to saslauthd on the command line. See saslauthd(8) # for the list of accepted flags. FLAGS= |
3. 使用SASL工具对PAM进行测试
我们可以用下面方法来对sasl和pam进行测试:
|
[root@kernel pam.d]# testsaslauthd -u root -p xxxx -s su 0: OK "Success." [root@kernel pam.d]# testsaslauthd -u root -p xxxx -s sshd 0: OK "Success." |
|
[root@kernel pam.d]# testsaslauthd testsaslauthd: usage: testsaslauthd -u username -p password [-r realm] [-s servicename] [-f socket path] [-R repeatnum] |
在上面例子中,xxxx要修改为真正的密码。
4. 使用MYSQL作为PAM的数据源
我们还可以用mysql作为PAM存储用户数据的数据库。
如果使用这种方法,我们需要安装pam_mysql。可以在下面链接中获得:
http://sourceforge.net/projects/pam-mysql/
具体的安装方法可以看INSTALL,具体的配置方法可以看里面的README。
安装很简单,就是configure一下,然后执行make,最后把生成的库拷贝到pam的库目录中:
[root@kernel pam_mysql-0.7RC1]# cp .libs/pam_mysql.so /lib/security/
下面是一个配置例子:
|
[root@kernel pam.d]# testsaslauthd -u cyrus -p test -s smtp 0: OK "Success." |
|
[root@kernel pam.d]# cat smtp auth sufficient pam_mysql.so user=root passwd=admin host=localhost db=postfix table=accountuser usercolumn=username passwdcolumn=password auth sufficient pam_unix_auth.so account required pam_mysql.so user=root passwd=admin host=localhost db=postfix table=accountuser usercolumn=username passwdcolumn=password account sufficient pam_unix_acct.so |
smtp中主要是定义了mysql的连接方式和对应的库表,字段。具体可以看READM文件和man pam.d。
根据上面的配置和测试,需要创建数据库postfix,登录帐号密码是root/admin,表是accountuser,列有:username,password。
创建用户信息:cyrus/test。插入数据SQL:INSERT INTO accountuser(username, password) VALUE('cyrus','test')
5. 小结
在这里面对pam和sasl做了入门介绍,希望对大家有帮助。如果有什么问题可以给我发邮件:bljb@qq.com
下面是相关的资料:
l http://cyrusimap.org/docs/cyrus-sasl/2.1.25/
l http://sourceforge.net/projects/pam-mysql/files/?source=navbar
pam和sasl的更多相关文章
- Linux中Postfix邮件认证配置(五)
Postfix+Dovecot+Sasl工作原理 1.A用户使用MUA客户端借助smtp协议登陆smtpd服务器,需要先进行用户和密码认证,而SMTPD服务器端支持sasl认证,例如有一个sasl客户 ...
- Cyrus SASL介绍(翻译)
http://blog.sina.com.cn/s/blog_7695e9f40100pnpa.html Cyrus SASL介绍 1. 综述 这篇文档讲述的是系统管理员配置SASL的方法,其中详细的 ...
- Postfix+Sasl+Courier-authlib+Dovecot+MySQL+extmail 邮件系统部署
# yum remove postfix ##删除系统自带postfix# userdel postfix# groupdel postdrop# groupadd -g 2525 postfix# ...
- Linux可插拔认证模块(PAM)的配置文件、工作原理与流程
PAM的配置文件: 我们注意到,配置文件也放在了在应用接口层中,他与PAM API配合使用,从而达到了在应用中灵活插入所需鉴别模块的目的.他的作用主要是为应用选定具体的鉴别模块,模块间的组合以及规定模 ...
- XEP-0078:非SASL认证
XEP-0078:非SASL认证 抽象: 这个文件规定了使用Jabber的Jabber的服务器和服务认证的协议:智商:AUTH命名空间.注意哦:本文规定的协议,取而代之的SASL认证的被取代,如RFC ...
- nis,nfs,pam小结
最近一周总算把nis/nfs配置起来,中间各种被坑,这里简单记录一下: 主要参考两个大牛的文章,柏青哥,鸟哥 配置完之后的功能是可以连接任意一台主机,所有主机之间共享HOME目录,而且每人都有一定的限 ...
- linux pam 控制模式
工作类别(type).流程栈(stack)和控制模式(control) Linux-PAM 工作的"类别"(type) PAM 的具体工作主要有以下四种类别(type):accou ...
- Arch Linux sudo: PAM authentication error: Module is unknown [Solved!]
问题描述: 我的 Arch Linux 已经用了快半年多,由于 Arch Linux 的滚挂问题,我从没有直接升级过系统.软件版本以及库自然落后了一些. 就在我准备需要用到 NFS 时,挂载网络文件系 ...
- Linux UserSpace Back-Door、Rootkit SSH/PAM Backdoor Attack And Defensive Tchnology
catalog . 引言 . Pam后门 . SSH后门 . Hijacking SSH . Hijacking SSH By Setup A Tunnel Which Allows Multiple ...
随机推荐
- org.apache.http.client.methods.HttpGet 转到定义找不到源代码
例如 org.apache.http.client.methods.HttpGet ,提示没有源码 到这里下载 http://hc.apache.org/downloads.cgi Source 4. ...
- IT管理就这么管
随着信息系统的广泛应用,员工没有电脑就无法工作,企业离开信息系统就无法顺利开展业务.信息部作为企业的内部信息化部门,承担了包括软件开发.系统维 护.硬件维护的几乎所有IT相关任务,对保障公司业务系统的 ...
- IT部门的“2/8”现状
专家的研究和大量企业实践表明,在IT项目的生命周期中,大约80%的时间与IT项目运 营维护有关,而该阶段的投资仅占整个IT投资的20%,形成了典型的“技术高消费”.“轻服务.重技术”现象.Gartne ...
- Java正则表达式的使用和详解(上)
1.匹配验证-验证Email是否正确 public static void main(String[] args) { // 要验证的字符串 String str = "service@xs ...
- 更好的使用JAVA线程池
这篇文章分别从线程池大小参数的设置.工作线程的创建.空闲线程的回收.阻塞队列的使用.任务拒绝策略.线程池Hook等方面来了解线程池的使用,其中涉及到一些细节包括不同参数.不同队列.不同拒绝策略的选择. ...
- 有人在贴吧问phpmyadmin如何设置插入的时候默认插入1条记录
在新版phpmyadmin中(我的版本是3.5.1) 插入的时候会提示插入两条,能够方便操作,让你多录入几条数据,如图 然而有人不想要这个界面默认插入两条,如何改为1条或者其他呢? 我审查了这个元素标 ...
- zabbix中Templates的jmx相关key调试方法
1.下载 cmdline jmxclient 如果你有一个完美的模版,你可能可以忽略此步.但是大多数情况下你没有.况且 zabbix 默认的 tomcat 模版也不能很好的工作.这时候有一个工具来调试 ...
- 【NGINX】Windows配置
缺省安装nginx之后的配置 检查80端口占用 启动缺省配置之后的nginx 配置多端口站点 注册Server,server_name是配置的域名,proxy_pass是上图配置的代理地址 注意: 1 ...
- c++的字节对齐
win32平台下的微软C编译器对齐策略: 1)结构体变量的首地址能够被其最宽数据类型成员的大小整除.编译器在为结构体变量开辟空间时,首先找到结构体中最宽的数据类型,然后寻找内存地址能被该数据类型大小整 ...
- jenkins配置RF构建结果显示
声明:转载请注明出处,谢谢 步骤1:安装robot framework plugin插件:系统管理-管理插件 步骤2:设置构建后操作:job-配置-构建后操作增加“Publish Robot Fram ...