目录
1.系统安全基本措施
系统账号的清理
将非登录的用户的shell设为/sbin/nologin(非登录的用户账号)
查看登录用户,过滤出非登录的用户账号
cat /etc/passwd |grep”/sbin/nologin”
将账号设置为非登录用户:usermod -s /sbin/nologin 用户名
锁定用户:
passwd: passwd -l锁定 passwd -u解锁
usermod: usermod -l锁定 usermod -u解锁
/etc/shadow中密码第一位为!,表示密码锁定
锁定配置文件:
chattr [选项] 文件或目录
选项:
chattr +i /etc/passwd /etc/shadow 锁定文件,包括root也无法修改
chattr -i /etc/passwd /etc/shadow解锁文件
锁定后查看文件状态属性就会显示没有了
查看文件状态属性:lsattr /etc/passwd /etc/shadow
密码安全控制:
设置密码有效期
要求用户下次登录时更改密码
vi /etc/login.defs ,进入这个文件修改
适用于新建用户,99999意味着无期限,更改此选项代表着往后再新建用户,密码有效期的时间将会更改。
查看用户密码还剩多少天:cat /etc/shadow |grep “用户名”
chage -M 30 用户名
适用于已有用户 ,设置密码有效期30天
chage -d 0 用户名
强制下次登陆时改密码
命令历史:
命令历史的限制(分两种,一种是新登录的用户,第二种是修改当前用户)
1、适用于新登录的用户:
vim /etc/profile 进入配置文件修改限制命令条数。适合新用户 HISTSIZE=1000 系统默认是1000条profile, 修改限制命令 source /etc/ 刷新配置文件,使文件立即生效
2.修改当前用户的命令历史限制
export HISTSIZE=200 限制命令历史为200条
source /etc/profile 让配置文件刷新,使文件立即生效
3.注销时自动清空命令:
[root@localhost ~]# vim ~/.bashrc
echo " " > ~/.bash_history 进入在末尾加上
闲置60秒后自动注销:
[root@localhost ~]#vim .bash_profile 进入配置文件
export TMOUT=60 全局声明超过60秒闲置后自动注销终端
[root@localhost ~]# source .bash_profile 刷新文件
[root@localhost ~]# echo $TMOUT 查看自动注销时间 如果不在配置文件输入这条命令,那么是对当前用户生效
[root@localhost ~]# export TMOUT=600 对当前用户生效
[root@localhost ~]#vim .bash_profile
切换用户:su
任何一个用户,登录都需要加载bash这个程序
su 命令:可以切换用户身份。
切换用户方式:
su 用户名:实际并没有切换到新的用户,无法实现后期操作
su -用户名:正确的格式切换用户
su:相当于su -root
超级用户(root)切换到普通用户不需要密码
查看su操作记录
安全日志文件:/var/log/secure
确定当前用户是谁
woami,w,who
限制使用su命令的用户
1.添加wheel组:
系统会自己创建一个wheel组,如果没有groupadd创建一个几个
grep wheel /etc/group
2.将用户添加到wheel用户组
usermod -G wheel test1
3.修改插拔认证模块(PAM)
vim /etc/pam.d/su
4.这样就进不去test1了
查看su的PAM配置文件
vim /etc/pam.d/su
限制su命令 | 作用 |
---|---|
auth sufficient pam_ rootok.so | 超级管理员是否需要输入密码 |
auth required pam_ wheel.so use_ _uid | 属于whell组,可以切换(属于文件的第六行) |
PAM:安全认证
当前linux普遍的认证方式
PAM模块:插件式的模块
常见的功能:
1.验证 用户名 密码功能
2.开发出一款软件如果要用到用户名和密码的功能时,就会调用pam架构中的密码模块,不需要二次开发
PAM认证原理
PAM认证一般遵循这样的顺序:Service(服务)→PAM(配置文件)→pam_*.so
想查看某个程序是否支持PAM认证,可以用ls命令进行查看/etc/pam.d/
例如:ls /etc/pam.d | grep su 查看su是否支持PAM模块认证
专用配置文件/etc/pam.d/格式
type:功能
control:判断成功失败
module-path:指明本模块对应的程序文件的路径名
arguments:传递该模块的参数
认证模块类型(module-type)
auth:对用户身份进行识别,如提示输入密码,判断是否为root。
acconut:对账号各项属性进行检查,如是否允许登录系统,帐号是否已经过期,是否达到最大用户数等。
password:使用用户信息来更新数据,如修改用户密码
session:用户会话期间的控制,如登录连接信息,用户数据的打开和关闭,挂载文件系统
-type:表示因为缺失而不能加载的模块将不记录到系统日志,对于那些不总是安装在系统上的模块有用
control(控制位)
作用是验证是否成功
required:一票否决(失败了也会往下走)
requisite:一票否决(失败了退出,成功继续)
sufficient:一票通过(成功了退出,失败了会继续往下走)
sudo
sudo特性:
sudo 能够授权指定用户在指定主机上运行某些命令。 如果未授权用户尝试使用 sudo,会提示联系管理员。
sudo 可以提供日志,记录每个用户使用sudo操作,以便于日后审计。
sudo 为系统管理员提供配置文件,允许系统管理员集中地管理用户的使用权限和使用的主机。
sudo 默认存活期为5分钟。
编辑sudo配置文件的方式:改配置文件前先备份
1.sudoedit /etc/sudoers
2.vim /etc/sudoers
3.visudo
visudo -c:该命令具有语法检查功能,输入配置完后可以用这个命令检查
配置文件规则有两类:语法和别名
sudo语法
user which_hosts= (runas) command
允许哪个用户 在哪台主机上 执行某一条命令
user:运行命令者的身份
host:哪台主机,可以指定某个ip地址表示
(runas):以哪个用户的身份
command:运行哪些命令
免密运行命令:nopasswd:命令
别名(定义)
别名格式:必须大写字母,数字可以使用但是不能放在开头
sudo别名有四种类型:
-
Host_Alias 定义主机别名
-
User_Alias 用户别名,别名成员可以是用户,用户组(前面要加%号)
-
Runas_Alias 用来定义runas别名,这个别名指定的是“目的用户”,即sudo 允许切换至的用户
-
Command_Alias 定义命令别名