目录
1.1-1 将非登录用户的Shell设为/sbin/nologin
1.1-4 锁定账号文件passwd、shadow (chattr、sattr命令)
3.2 PAM(Pluggable Authentication Modules)可插拔式认证模块
1、账号安全基本措施
1.1 系统账号清理
1.1-1 将非登录用户的Shell设为/sbin/nologin
例:指定liuhui用户设置为/sbin/nologin
设置完成后用grep命令查看
1.1-2 锁定长期不使用账户
例:锁定liuhui账户
用passwd -S命令来查看账户是否锁定
同理可以用usermod -U来解除锁定
会发现密码那没有感叹号了,没有感叹号了代表了这个账号可以使用了
注:用usermod锁定账户后是一个感叹号,而用passwd来锁死账户后是两个感叹号
1.1-3 删除无用账户
用userdel -r 删除对你来说无用的用户,查看后会发现没有liuhui用户了
1.1-4 锁定账号文件passwd、shadow (chattr、sattr命令)
例:首先我们用lsattr命令来查看/etc/passwd,正常状态如下:
接下来用chattr +i命令锁定/etc/passwd文件,并在此查看
同理,解锁的话用chattr -i命令来完成解锁
ps:在日常中不想让别人创建用户和修改密码就可以用以上的命令将其文件锁住
1.2、密码安全控制
1.2-1 设置密码有效期
例1:将其有效期设置为30天
我们现在新创一个lh用户并查看一下
例2:对于以前就存在的用户可以用chage -M命令来修改它的密码有效期
要求用户下次登录时修改密码
1.3、命令历史限制
- 减少记录的命令条数
- 注销时自动情况命令历史
例:修改历史命令的保留个数
例2:用户登出时会清除里面的命令
注:文件的读取顺序
1.3-1 终端自动注销
- 闲置600秒后自动注销
2、使用su命令切换用户
2.1 用途及用法
- 用途:Substitute User,切换用户
- 格式:su - 目标用户
例:切换到 ls 用户
2.2 密码验证
- root到任意用户,不需要验证密码
- 普通用户到其他用户,需要验证目标用户的密码
例:从lh用户切换到root用户
2.3 限制使用su命令用户
- 将允许使用su命令的用户加入wheel组
- 启用pam_wheel认证模块
例:首先用 vim /etc/pam.d/su 命令来开启我的组成员
然后将 lh用户加入到组中
然后用cat命令查看组,lh 用户也在当中了
现在我们切换到普通用户 cyk 下进行用户切换,你会发现无法cyk用户无法切换到lh用户
2.4、查看su操作记录
- 安全日志文件:/var/log/secure
3、Linux中的PAM安全认证
3.1 su命令的安全隐患
- 默认情况下,任何用户都可以使用su命令,有机会反复尝试其他用户(如:root)的登录密码,带来安全隐患
- 为了加强su命令的使用控制,可借助pam认证模块,只允许极个别用户使用su命令进行切换
3.2 PAM(Pluggable Authentication Modules)可插拔式认证模块
- 是一种高效而且灵活便利的用户级别的认证方式
- 也是当前Linux服务器普遍使用的认证方式
注:以 .so 结尾的都是模块级别
3.3 Linux--PAM 认证模块
3.4 PAM认证原理
- 一般遵循的顺序
Service(服务)——PAM(配置文件)——pam_*.so
- 首先要确定哪一项服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证文件(位于/lib/security下)进行安全认证
- 用户访问服务器时,服务器的某一个服务程序把用户的请求发送PAM模块进行认证
- 不同的应用程序所对应的PAM模块是不同的
3.5 PAM认证的构成
查看某个程序是否支持PAM认证,可以ls命令
示例:查看su是否支持PAM模块认证
查看su的PAM配置文件:cat/etc/pam.d/su
- 每一行都是一个独立的认证过程
- 每一行可以区分为三个字段
认证类型、控制类型、PAM模块及参数
3.6 PAM安全认证流程
控制类型也称作Control Flags ,用于PAM验证类型的返回结果
- required验证失败时任然继续,但返回Fail
- requisite验证失败则立即结束整个验证过程,返回Fail
- sufficient验证成功则立即返回,不再继续,否则忽略结果并继续
- optional不用于验证,只显示信息(通常用于session类型)
4、使用sudo机制提升权限
4.1 su命令的缺点
使用su命令切换用户必须知道其用户的密码
4.2 sudo命令的用途及用法
visudo 或 vi /etc/sudoers(此文件默认权限为440,保存退出时必须执行“:wq!”来强制操作)
语法格式:用户 主机名=命令程序列表
用户 主机名 =(用户)命令程序列表
用户:直接授权指定的用户名,或采用“%组名”的形式(授权一个组的所有用户)
主机名:使用此规则的主机名。没有配置过主机名的可以使用localhost,有配过主机名则用实际的主机名,ALL则代表所有主机。
(用户):用户能够以何种身份来执行命令
命令程序列表:允许授权用户通过sudo方式执行特权命令,需要填写命令程序的完整路径,多个命令之间以逗号“,”进行分隔。ALL则代表系统中所有命令
注:通配符“*”表示所有、取反符号“!”表示排除
4.3 sudo命令的参数(用的少)
-l:列出用户在主机上可用的和被禁止的命令;一般配置好/etc/sudoers后,要用这个命令来检查和测试是不是配置正确
-v:验证用户的时间戳;如果用户运行sudo后,输入用户的密码之后,在短时间内可以不用输入口令来进行sudo操作(用-v可以跟踪最新的是时间戳)
-u:指定以某个用户进行操作
-k:删除时间戳,下一个sudo命令要求提供密码
例1:
我们首先创建fanlei用户,然后切换到fanlei 用户上进行用户创建,会发现fanlei用户的权限不够
接下来我们来给fanlei用户相应的权限可以创建tanrenzhi 这个用户
权限给了以后再切换到fanlei用户上,用sudo命令创建tanrenzhi用户并查看
当然,你也可以设置一下创建用户的时候不输入密码
设置完成后再次创建用户就不用了输入密码了
例2:
首先我们创建一个sizu组,然后将用户fanlei,zzj添加到组中
接下来我给sizu组所有用户授权
然后我们切换到组中随意一个用户,比如zzj用户,然后输入ifconfig命令查看网卡并设置网卡
在普通用户下不用sudo命令的情况下是不可以设置网卡,但是我们在命令前面加上sudo命令就可以设置网卡
5、用户别名设置
当时用相同授权的用户较多,或者授权的命令较多时,可以采用集中定义的别名。用户、主机、命令部分都可以为别名(必须大写),分别通过关键字User_Alias、Host_Alias、Cmnd_Alias来进行设置。
5.1 用户别名的语法格式
1、User_Alias
用户别名:包含用户、用户组(%组名,使用%引导),还可以包含其他已经用户的别名
User_Alias OPERATORS=zhangsan,tom,lisi
2、Host_Alias
主机别名:主机名、IP、网络地址、其他主机别名。 !取反
Host_Alias MAILSVRS=smtp,pop
3、Cmnd_Alias
命令路径、目录(此目录内的所有命令)、其他事先定义过的别名命令
Cmnd_Alias PKGTOOLS=/bin/rpm,/usr/bin/yum
注:
用户改成别名用户,目的是为了可以操作多个用户和组
主机名改成别名主机,目的是为了可以操作设置主机的多个名称或者主机取反
命令操作列表改成别名命令列表,目的是所有命令可以操作
例1:
设置完成后我们切换用户验证下
zhangshaojie用户可以使用yum命令
我们再切换到fanlei用户验证下,发现fanlei 用户没有权限
例2:
设置完成后我们切换用户进行验证
6、启用sudo操作日志
6.1 创建sudo操作日志命令为:visudo
Defaults logfile = "/var/log/sudo"
sudo日志记录以备管理员查看,应在“/etc/sudoers/”文件中增加“Defaults logfile”设置,如果已启用sudo日志,则可以在/var/log/sudo文件中查看到用户的sudo操作记录。(另一个方式是/var/log/secure 日志可查看到sudo操作用户步骤)
这时候我们去/var/log查看一下,会发现sudo日志已经生成了
7、开关机安全控制
7.1 调整BIOS引导设置
- 将第一引导设备设为当前系统所在硬盘
- 禁止从其他设备(光盘、U盘、网络)引导系统
- 将安全级别设为setup,并设置管理员密码
7.2 GRUB限制
- 使用grup2-mkpasswd-pbkdf2生成密钥
- 修改/etc/grub.d/00_header文件中,添加密码记录
- 生成新的grub.cfg配置文件
通常情况下在系统开机进入GRUB菜单时,按e键可以查看并修改GRUB引导参数,这对服务器来说是一个重大威胁。
可以为RRUB菜单设置一个密码,只有提供正确的密码才被允许修改引导参数
grub2-mkpasswd-pbkdf2——根据提示设置GRUB菜单密码
例:
首先我们生成一个秘钥,再把文件备份一下
然后使用vim进去修改
最后生成新的配置文件
8、终端登录安全控制
8.1 限制root只在安全终端登录
- 安全终端配置:/etc/securetty
8.2 禁止普通用户登录
- 建立/etc/nologin文件
- 删除nologin文件或重启后即恢复正常
例:
禁止普通用户登录
取消上述登录控制
9、系统弱口令检测
9.1 John the Ripper,简称JR
- 一款密码分析工具,支持字典式的暴力破解
- 通过对shadow文件的口令分析,可以检测密码强度
- 官方网站:http://www.openwall.com/john/
9.2 安装JR工具
- 安装方法:make clean 系统类型
- 主程序文件为john
9.3 检测弱口令账号
- 获得Linux或Unix服务器的shadow
- 执行john程序,将shadow文件作为参数
9.4 密码文件的暴力破解
- 准备好密码字典文件,默认为password.lst
- 执行john程序,结合--wordlist=字典文件