pam验证和sudo介绍及操作

pam多条件验证

pam是linux可植入式的验证模块

作用:通过多个模块对相应的程序进行多条件验证

​ 不是所有的程序都支持pam,一般用于像ssh,login,vsftd等程序

[root@localhost ~]# /etc/pam.d     配置文件(相当于门)

[root@localhost ~]# /etc/pam.d/login中常见的选项
requisite  必要条件,不满足就退出
sufficient	满足条件就ok
required	必要条件,不满足也不退出
optional	条件无所谓


[root@localhost ~]# /lib64/security	库文件(想当于锁)

pam_nologin禁止非root

方法一:脚本

#!/bin/bash

for user in `awk -F: '$3!=0 &&  '$3!=65534 && $NF=="/bin/bash" {print $1} /etc/passwd`
do
	sed -i '/^'$user':/s/\bin\/bash\/bin\/false/' /etc/passwd
done

方法二:使用pam模块

根据/etc/pam.d/login的第四行来进行测试,这一行默认就有,不需要做任何修改
account required pam_nologin.so

[root@localhost ~]# touch /etc/nologin  发布信息并且拒绝除root管理员之外所有用户登录(只要有这个文件就拒绝登录)

pam_listfile黑白名单

以ftp为例:
根据/etc/pam.d/vsftpd的第二行进行测试		
auth required pam_listfile.so item=user sense=deny	file=/etc/vsftpd/ftpusers onerr=succeed

vsftpd服务本身有一个黑白名单文件/etc/vsftpd/user_list,然后pam_listfile模块为vsftpd模块又加了一层黑白名单,也就是说vsftpd是双重黑白名单

**可以通过查看/var/log/secure日志看到pam相关的拒绝信息 **

pam_time时间控制

[root@localhost ~]# vim /etc/pam.d/login
添加以下内容
account requisite pam_time.so

[root@localhost ~]# vim /etc/security/time.conf
在此文件加入需要设置的时间以致时间控制生效
login;*;zxc;Mo1148-1150

login: 登录
*: 代表终端类型
zxc: 用户名
Mo1148-1150: 修改的时间(此处指只可以在周一11:48到11:50可以登录)

pam_tally2防止暴力破解密码

[root@localhost ~]# vim /etc/pam.d/sshd		加入下面这句代码
auth required pam_tally2.so deny=3 even_deny_root root_unlock_time=600 unlock_time=600

even_deny_root:表示对root用户也生效
deny=3	root_unlocak_time=600:表示root累积失败3次会锁定600s
deny=3	unlock_time=600:表示普通用户累积失败3次会锁定600s

可以通过pam_tally2 --user=root命令查看连续失败的次数。成功ssh登录后,失败次数会清零。
也可以使用pam_tally2 --user=root --reset把连续失败次数清零。

pam_cracklib控制密码复杂度

[root@localhost ~]# vim /etc/pam.d/passwd
password  required 	pam_cracklib.so  minlen=8 minclass=2 difok=3 maxrepeat=3 maxsequence=5

minlen: 设置密码长度
minclass: 字符类型(数字、小写字母、大写字母、符号)
difok:表示新密码和旧密码需要变动的字符  (difok=3 表示新密码和旧密码需要变动3个字符)
maxrepeat:表示重复相同字节 如:33 666
maxsequence:表示连续字节	如:123  abc

pam_securetty控制root本地登录

# vim /etc/pam.d/login      此文件默认有pam_securetty模块
auth [user_unknown=ignore success=ok ignore=ignore default=bad]	 pam_securetty.so

# vim /etc/securetty
tty2 		--只留下tty2,表示只能在tty2进行root用户登录(非root用户不受影响);还可以把这里的终端全去掉,实现root用户无法登录

注:在vmware虚拟里切换终端快捷键为alt+F1-F6来切换

pam_limits限制用户登录数

# vim /etc/pam.d/sshd   (限制ssh连接数)
session		required	pam_limits.so

[root@localhost ~]# vim /etc/security/limits.conf
zxc		hard		maxlogins		2	表示zxc用户,最多只能ssh登录两个,第三个登录就会被拒绝

sudo

使用另一个身份来执行命令

  1. 普通用户可临时使用root相应的权限
  2. 管理为防止误操作,平时使用普通用户

sudo实例

root授予zxc用户touch命令的权限

root	ALL=(ALL)		ALL
zxc		ALL=/usr/bin/touch(此处必须写绝对路径) 

root授予zxc用户touch中的部分权限

root	ALL=(ALL)		ALL
zxc		ALL=/usr/bin/touch  /root/222,/usr/bin/touch /root/333
表示zxc用户只能创建222和333文件

root授予zxc用户有关网络的用户,但是有关命令很多,很麻烦,可以使用别名

 Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net, /sbin/iptables, /usr/bin/rfcomm   等
 
root	ALL=(ALL)		ALL
zxc		ALL=NETWORKING

总结

root用户授予相应的权限给普通用户(权限最小化的原则),普通用户就可以不使用root密码来
实现root相应的权限,即使做了误操作,也能相应防护。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柒哥fu.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值