目录
一、 账号安全及基本措施
1.将非登陆用户的shell改为sbin/nologin
- usermod -s nologin 用户名 #禁止登录
修改前:
修改后:
2.锁定/解锁账户(必须要usermod和passwd一起锁,才能不会登录。管理员可以切回普通用户,普通用户之间不能随意切换)
-
usermod -L 用户名 //锁定账户
-
usermod -U 用户名 //解锁账户
-
passwd -l 用户名 //锁定账号
-
passwd -u 用户名 //解锁账户
3.删除用户
- usedel 用户名
4.chatter 锁定账号文件(passwd,shadow)
- lsattr /etc/passwd /etc/shadow #查看文件状态
- chattr +i /etc/passwd /etc/shadow #锁定文件
- chattr -i /etc/passwd /etc/shadow #解锁文件
5.修改账户的有效期
- 对新用户而言,在配置文件修改
- vim /etc/login.defs //修改新用户的密码有效期为30天
- 新建一个用户后查看一下
cat /etc/shadow
修改已有账户的密码有效期
chage -M 7 cfs
强制在下次登录时修改密码
#chage -d 0 cfs //第三个字段为0
6.命令历史限制
[root@localhost ~]# history -c //临时清除记录,重启后记录还在
临时修改当前用户的历史命令条数,然后su一下(刷新)
[root@localhost ~]# export HISTSIZE=200
[root@localhost ~]# echo $HISTSIZE 200
200 200
永久修改当前用户的历史命令条数
[root@localhost ~]# vim /etc/profile
[root@localhost ~]# source /etc/profile //刷新文件,立即生效
退出时命令清除
[root@localhost ~]# vim .bash_logout
[root@localhost ~]# source .bash_logout
开机时命令清除
[root@localhost ~]# vim .bashrc
[root@localhost ~]# source .bashrc
设置登录超时时间
[root@localhost ~]# vim /etc/profile
[root@localhost ~]# source /etc/profile
7.使用su命令切换用户
su - 用户名:完整切换,会读取目标用户的配置文件,切换到自己的家目录
su 用户名: 不完整切换,会读取目标用户的配置文件
su:刷新
管理员切换至普通用户不需要密码
普通用户之间相互切换需要密码
普通用户切换管理员需要密码
限制su命令的用户:(因为任何用户都能使用su,会有风险)
将允许使用su命令的用户加入wheel用户中,只有wheel组中的用户可以使用su命令
查看su操作记录
[root@localhost ~]# cat /var/log/secure
eg:有ym和ky27两个用户,要求设置ym可以使用su命令切换用户,ky27用户不允许使用
[root@localhost ~]# vim /etc/pam.d/su //编辑配置文件,将auth required pam_wheel.so use_uid取消注释
gpasswd -a ym wheel
正在将用户“ym”加入到“wheel”组中
8.PAM安全认证
特点:
轻松替换(增删改查)
不用对应用程序进行修改(通过api接口完成,给接口传参数,start,stop等参数)
不用关心如何实现
无法感受对某些应用程序作出改变
使用统一的API接口(统一的指令可以对所有的服务通用)
将服务认证区分开(httpd和ssh不一样,给httpd修改,不会影响ssh)
认证机制
如果想查看某个程序是否支持PAM认证,可以用ls命令进行查看/etc/pam.d/。
PAM相关文件
包名: pam
模块文件目录:/lib64/security/*.so
特定模块相关的设置文件:/etc/security/
应用程序调用PAM模块的配置文件/etc/pam.d/
主配置文件:/etc/pam.conf,默认不存在,一般不使用主配置
注意:如/etc/pam.d存在,/etc/pam.conf将失效
ls /lib64/sccurity/ 认证模块的位置
/etc/pam.d/* 配置文件位置
[root@localhost pam.d]# cat system-auth
第一列:type类型 第二列:control控制位 第三列:PAM模块
type类型:
auth 用户身份认证
account 帐户的有效性,与账号管理相关的非认证类的功能,如:用来限制/允许用户对某个服务的访问时间,限制用户的位置(例如:root用户只能从控制台登录)
password 用户修改密码时密码复杂度检查机制等功能
session 用户会话期间的控制,如:最多打开的文件数,最多的进程数等
type 表示因为缺失而不能加载的模块将不记录到系统日志,对于那些不总是安装在系统上的模块有用
control:(控制位)
required:一票否决,一旦失败,继续执行,直到执行完毕后返回信息:失败原因
requisite:一票否决,一旦失败,立即返回
sufficient:一票通过,只要成功立即返回,其他不重要失败了也没有关系
9.实验:shell模块,检查shell的有效性
不允许/bin/csh的用户本地登录
bash.改成csh
首先查看支持shells的环境
[root@localhost ~]# cd /etc/pam.d/
[root@localhost pam.d]# cat /etc/shells
[root@localhost pam.d]# vim /etc/pam.d/su
[root@localhost pam.d]# usermod -s /bin/csh qiao
[root@localhost pam.d]# cat /etc/passwd | grep qiao
[root@localhost pam.d]# vim /etc/shells
进入shells将csh删除
此时用户已无法切回root!
10.sudo
格式
用户 主机名=命令程序列表
用户 主机名=(用户)命令程序列表
eg:ym ALL=(root) /sbin/ifconfig
以用户身份,强制执行root命令
例如,普通用户无法执行修改网卡的命令,运用了sudo之后强制执行
查看当前sudo配置文件,启用sudo操作日志
启用sudo操作日志
需启用Defaults logfile配置
默认日志文件:/var/log/sudo
操作:在/etc/sudoers末尾添加Defaults logfile=“/var/log/sudo”
查询授权的sudo操作 --包含详细的信息
sudo -l
示例1:配置文件使qiao可以通过sudo命令使用ifconfig
示例2:设置wheel组进行sudo操作时无需密码验证,并将ky27用户添加到wheel组中测试
更改之前,出现安全提示,输入密码才可以
[root@localhost ~]# vim /etc/sudoers
[root@localhost ~]# gpasswd -a ky27 wheel
没有了安全提示了
示例3:使用关键字来进行设置别名,批量控制用户
要求:控制用户进行sudo操作时无法使用重启(reboot)、关机(poweroff)、
切换init和无法删除
[root@localhost ~]# vim /etc/sudoers