从login登陆过程初窥安全认证机制PAM

By Zing - 2014-11-01

登陆linux的时候,输入的仅是用户名和口令,但是登陆的过程中并不止于对这二者的检查,最近了解了一些关于PAM的工作原理,对linux也有进一步的理解。

用户检查是登陆系统的核心,login把这一伟大艰巨的任务托付给了PAM,PAM会把login登陆过程中需要
检查的逻辑流程记录在/etc/pam.d/login中,这是一个ascii文本,如下图

从图中可以看到检查的逻辑流程

PAM是如何完成整个流程的(用pages画图我也是醉了)

PAM人如其名,Pluggable Authentication Module,就像一个大插槽一样,各种服务比如login,sftp,ssh如果需要安全认证功能,那么就把自己插在PAM上,在外界进行访问的时候,PAM就会调用自己的各种库来对对方进行各类盘查,使得程序不再需要自己单独编写维护认证模块,认证过程变得简洁,独立,好用。

那么需要使用认证服务的程序怎样把自己插到PAM?下面这个图比较直观清晰

下面通过为sftp进行安全配置来说明PAM的具体使用

一切都是在虚拟机环境中进行,vsftp服务安装在192.168.58.224上,并新建了账户bai和leaf,配置目标是限制用户bai只能在192.168.58.223上登陆,而用户leaf不能在192.168.58.137上登陆.

首先在/etc/security文件末尾加上两行限制,如下图,第一行的减号表示禁止访问,ALL EXCEPT 表示除了192.168.58.223其他的ip都不能登陆。第二行表示限制leaf用户在192.168.58.137上登陆。

然后在/etc/pam.d/vsftp下pam_shells.so下面加上 account required pam_access.so

现在输入 service vsftpd restart 重启服务

下面来检测一下限制是否成功,首先在192.168.58.223上以bai账户登陆,登陆成功

然后在192.168.58.224上以bai账户登陆,登录失败

下面在192.168.58.137上以leaf账户登陆,登陆失败

在192.168.58.224上以leaf登陆,登陆成功

可以看到可以使用pam对账户登陆进行很好的限制。

From Z1ng'Blog