控制用户的登录地点
文件/etc/secruity/access.conf可控制用户登录地点,为了使用access.conf,必须在文件/etc/pam.d/login中加入下面行:
account required /lib/security/pam_access.so
access.conf文件的格式:
permission : users : origins
其中:
permission:可以是 “+”或“-”,表示允许或拒绝。
user:可以是用户名、用户组名,如果是all则表示所有用户。
origins:登录地点。local表示本地,all表示所有地点,console表示控制台。另外,origins也可以是某一网络。
后面两个域中加上 except是“除了”的意思。例如:除了用户wheel、shutdown、sync禁止所有的控制台登录:
-:ALL EXCEPT wheel shutdown sync:console
root账户的登录地点不在access.conf文件中控制,而是由/etc/securetty文件控制。
必须保证/etc/pam.d/login有下面这行:
auth required pam_securetty.so
etc/securetty文件指定了允许root登录的tty设备,由/bin/login程序读取,其格式是一个被允许的名字列表,你可以编辑/etc/securetty且注释掉如下的行。
# tty2
# tty3
# tty4
# tty5
# tty6
这时,root仅可在tty1终端登录。
关于PAM的一些解释
热身:
何要授予用户特权的程序都要能够进行用户认证。当您登入系统时,您需要提供用户名和口令,而后登入进程据此以检验登入的合法性---确认您就是该用户。还有除口令认证之外的其他认证形式,而且口令的存储方式也是各不相同的。
1、说明
A、PAM可加载目标文件(模块)是在RedHat Linux系统中它们被放在了/lib/security目录下
B、PAM库本地系统配置文件/etc/pam.conf OR /etc/pam.d/目录下的一些配置文件来设置
2、# more login
#%PAM-1.0
auth required pam_securetty.so
用来控制root用户只可以从包含在/etc/securetty文件中的终端登录系统。
auth required pam_stack.so service=system-auth
auth required pam_nologin.so
提供标准的UNIX nologin登录认证。如果/etc/nologin文件存在,则只有root用户可以登录,其他用户登录时只会得到/etc/nologin文件的内容。如果/etc/nologin不存在,则该模块没有作用。
account required pam_stack.so service=system-auth
password required pam_stack.so service=system-auth
# pam_selinux.so close should be the first session rule
session required pam_selinux.so close
session required pam_stack.so service=system-auth
session optional pam_console.so
# ls -l /dev/pts/1
crw--w---- 1 root tty 136, 1 May 15 21:19 /dev/pts/1
# ls -l /dev/pts/2
crw--w---- 1 test tty 136, 2 May 15 21:20 /dev/pts/2
用户登陆时,它将TTY设备权限改成该用户所有,当用户退出时,将TTY设备权限改为root所有。
# pam_selinux.so open should be the last session rule
session required pam_selinux.so multiple open
login要做两件事,首先查询用户,然后为用户提供所需服务,例如提供一个shell程序。
通常,login会提示用户输入密码。然后对密码进行校验,这项任务就是Linux-PAM完成的。
上例中三个required连续使用, 即便第一个模块失败了,也要完成三个模块的校验。这是一种安全上的考虑 ---这种设计永远不要让用户知道他或她们为什么会被拒绝,否则会让其更容易突破认证。可以将“required”改成“requisite”来修改这种认证方式。如果有任何“requisite”模块以失败返回,整个PAM认证将终止再调用其它模块也以失败返回。
3、pam_unix认证模块
所属类型: account; auth; password; session
功能描述:该模块是标准UNIX认证模块pam_unix的替代模块。
在作为auth类型使用时,此时该模块可识别的参数有debug、audit、use_first_pass、try_first_pass、nullok、nodelay,主要功能是验证用户密码的有效性,在缺省情况下(即不带任何参数时),该模块的主要功能是禁止密码为空的用户提供服务;
auth required /lib/security/$ISA/pam_env.so
auth sufficient /lib/security/$ISA/pam_unix.so likeauth nullok
auth required /lib/security/$ISA/pam_deny.so
在作为account类型使用时,此时该模块可识别的参数有debug、audit,该模块主要执行建立用户帐号和密码状态的任务,然后执行提示用户修改密码,用户采用新密码后才提供服务之类的任务;
account required /lib/security/$ISA/pam_unix.so
account sufficient /lib/security/$ISA/pam_succeed_if.so uid