Linux系统安全及应用

一.账号安全基本措施

1.系统账号清理

将非登录用户的Shell设为/sbin/nologin
usermod -s /sbin/nologin 用户名
(-s:指可登录的Shell,不可登陆就是/sbin/nologin,可登录就是/bin/bash)

锁定长期不使用的账号
usermod -L 用户名 ( 锁定用户账户)
passwd -l 用户名 (锁定用户密码)
passwd -S 用户名 (查看用户状态)

解锁用户账号
usermod -U 用户名 (解锁用户账户)
passwd -u 用户名 (解锁用户密码)

删除无用的账号
userdel [-r] 用户名 (-r:连属主目录一起删除)

锁定账号文件passwd、shadow
chattr +i /etc/passwd /etc/shadow (锁定文件)
lsattr /etc/passwd /etc/shadow (查看文件状态,如果有带i字样是锁定的,不带i就是没锁定的)
chattr -i /etc/passwd /etc/shadow (解锁文件)

2.密码安全控制

设置密码有效期
vi /etc/login.defs
PASS_MAX_DAYS 30 (适用于新用户,30表示天数)

chage -M 天数 用户 (适用老用户)
要求用户下次登录时修改密码
chage -d 0 用户名 (强制用户下次登录修改密码,第三个字段0表示上次更改密码的时间)

3.命令历史限制

减少历史命令记录
vi /etc/profile
export HITSIZE=200 (参数200表示有多少历史记录,可以自行修改)

登录时自动清除历史命令
方法一:
vi ~/.bashrc (更改.bashrc文件。用户登录环境就会执行这个文件下面的脚本)
在这里插入图片描述
·bash_history用于保存历史命令
然后重启:
在这里插入图片描述
历史命令就没有了。
方法二:vim rc.local (系统启动时会自动执行下面的脚本,在centos6用的多,在7系统中默认是没有权限的需要赋予权限)
在这里插入图片描述
在这里插入图片描述
保存退出,重启就会自动清除历史命令了。

二.使用su命令切换用户

1.用法和用途

用途:Substiute User , 切换用户
格式:su -目标用户(-:选项表示将使用目标 用户的登录Shell环境)

2. 密码验证

root用户切换到任意用户,不需要验证密码。
普通用户切换到其他用户,验证目标用户的密码。

3.su命令的安全隐患

1.默认情况下,任何用户都允许使用su命令,有机会反复尝试其他用户的登录密码,带来安全隐患。
2.为了加强su命令的使用控制,可借助于PAM认证模块达到只允许极个别用户使用su命令来进行用户切换。(PAM认证是一种高效且灵活的用户级别认证方式,也是当前Linux服务器普遍使用的方式)

4.限制使用su命令的用户

1.将允许使用su命令的用户加入wheel组
2.启用pam_wheel认证模块

首先开启su的认证模块
在这里插入图片描述
在这里插入图片描述
保存并退出,这样只有加入wheel组的成员才能使用su命令了。

5.查看su操作记录

安全日志文件位置保存在 /var/log/secure

三.PAM认证

1. PAM认证原理

1.遵循的顺序
Service(服务)→PAM(配置文件)→pam_*.so(配置模块)
2.首先确认哪一项服务,然后加载相应的PAM配置文件(/etc/pam.d目录下),最后调用认证文件(/lib64/security目录下)进行安全认证。
3.用户访问服务器时,服务器的摸一个服务程序把用户的请求发送到PAM模块进行认证。
4.不同的应用程序所对应的PAM模块是不同的。
在这里插入图片描述

2.PAM认证的构成

1.查看某个程序是否支持PAM认证,可用ls命令
示列:查看su是否支持PAM模块认证
ls /etc/pam.d | grep su
2.查看su的PAM配置文件:cat /etc/pam.d/su
每一行都是一个独立的认证过程
每一行可以区分为三个字段:
认证类型
控制类型
PAM模块及其参数
在这里插入图片描述
第一列代表PAM认证模块类型
1.auth:对用户身份进行识别,如提示输入密码,判断是否为root。
2account:对账号各项属性进行检查,如是否允许登录系统,帐号是否已经过期,是否达到最大用户数等。
3password:使用用户信息来更新数据,如修改用户密码。
4session:定义登录前以及退出后所要进行的会话操作管理,如登录连接信息,用户数据的打开和关闭,挂载文件系统。
第二列代表PAM控制标记
1required:表示需要返回一个成功值,如果返回失败,不会立刻将失败结果返回,而是继续进行同类型的下一验证,所有此类型的模块都执行完成后,再返回失败。
2requisite:与required类似,但如果此模块返回失败,则立刻返回失败并表示此类型失败。
3sufficient:如果此模块返回成功,则直接向程序返回成功,表示此类成功,如果失败,也不影响这类型的返回值。
4optional:不进行成功与否的返回,一般不用于验证,只是显示信息(通常用于 session 类型)。
5include:表示在验证过程中调用其他的PAM配置文件。比如很多应用通过完整调用/etc/pam.d/system-auth(主要负责用户登录系统的认证工作)来实现认证而不需要重新逐一去写配置项。
第三列代表PAM模块,默认是在/lib64/security/目录下,如果不在此默认路径下,要填写绝对路径。
同一个模块,可以出现在不同的模块类型中,它在不同的类型中所执行的操作都不相同,这是由于每个模块针对不同的模块类型编制了不同的执行函数。
第四列代表PAM模块的参数,这个需要根据所使用的模块来添加。
传递给模块的参数,参数可以有多个,且用空格隔开。

3.PAM安全认证的流程

在这里插入图片描述
控制类型也称做Control Flags,用于PAM验证类型的返回结果。
1.required验证失败时仍然继续,返回Fail。(最为严格,要求全部认证通过,发现未通过也不会立马反馈失败,而是把同一个类型认证完,然后再反馈错误。)
2.requisite验证失败时立即结束验证过程,返回Fail。
3.sufficient验证成功立即返回,不在继续,否则忽略结果并继续。(前面认证通过了到这里也通过了就允许放行不用管下面optional是否通过)
4.optional不用于验证,只显示信息,通常用于session类型。(什么事都不管直接返回显示)

四.sudo机制

1.su命令的缺点

su命令用于切换用户(如root用户),限制su的登录并不能完全避免风险,如果不是管理员管理root账号被su到root账号被别人掌握了风险就会永远存在。为了解决这个问题用到sudo命令来给普通用户提升部分的权限,而不是把全部权限交出去。

2.sudo命令的用途和用法

用途:以其他用户身份(如root)执行授权命令
用法:sudo 授权命令
提升权限得先修改sudo的配置文件。

3.配置sudu授权

1.visudo或者vi /etc/sudoers(sudoers没有写的权限需要强制保存,只有管理员可以用)
2.记录格式用户 主机名=命令程序列表(主机名可以直接写all代表所有主机名,命令程序列表bin目录下基本所有用户都可以使用,sbin只有管理员用户可以使用。如果有多个命令需要逗号相隔)
用户:直接授权指定的用户名,或采用“%组名”的形式(授权一个组的所有用户)
主机名:使用此规则的主机名。没配置过主机名时默认使用localhost,配过的主机名则使用实际主机名,ALL代表所有主机。
命令程序列表:允许授权的用户通过sudo方式执行的特权命令,需填写命令程序的完整路径,多个命令之间以逗号“,”进行分隔,ALL代表系统中所有命令。
通配符“*”代表所有、取反符号“!”代表排除。
3.visudo查询模板,把前面的#去除就可以使用。
4.示列:在这里插入图片描述

4.查看sudo操作记录

需要启用Defaults logfile 配置
默认日志文件:/var/log/sudo
开启sudo日志方法:首先进入 :visudo
把Defaults logfile = “/var/log/sudo” 加上就可以了,启动之后每个sudo都会被记录下来。

5.GRUB限制

方法:使用grub2-mkpasswd-pbkdf2生成密码。(生成密码之后复制下来)
修改/etc/grub.d/00_header文件中,把新的密码添加上去。
生成新的grub.cfg配置文件。(注意生成前备份一下,如果生成错了还可以恢复)

6.限制普通用户登录

方法:在/etc目录下建立一个nologin就可以了。(命令:touch /etc/nologin)
删除nologin或者重启就可以恢复正常了nologin文件消失。(命令:rm -rf /etc/nologin)

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页