linux系统安全及应用

一、账号的基本安全管理

1. 系统账号相关管理

对系统账号的管理一般分为:

  1. 非登录用户
  2. 长期搁置账号
  3. 无用账号
  4. 账号文件

1.1 非登录用户

将这些用户的Shell设为/sbin/nologin或/bin/false(禁止登陆系统)

  • 方法一:usermod -s /sbin/nologin 用户名
  • 方法二:使用vim /etc/passwd在passwd文件内更改

1.2 长期搁置账号

可以对账号进行锁定

  • 命令一:usermod -L 用户名

  • 命令二:passwd -l 用户名

  • 查看账号状态:passwd -S 用户名

  • 解锁usermod -U 和passwd -u

1.3 无用账号

可以对账号进行删除

  • userdel [-r] 用户名

1.4 账号文件

锁定账号文件passwd、shadow(锁定后不允许创建用户)

  • 锁定状态:chattr +i /etc/passwd /etc/shadow
  • 解锁状态:chattr -i /etc/passwd /etc/shadow
  • 查看状态:lsattr /etc/passwd /etc/shadow

锁定演示:
在这里插入图片描述
解锁:
在这里插入图片描述

锁定 passwd文件或shadow文件一样效果

2. 账号密码安全管理

2.1 设置账号下次登陆强制修改密码

命令:

change -d 0 wang   
//设置为wang用户  下次登陆会被强制修改密码

在这里插入图片描述
通过查看wang用户的账号信息 ,可以发现 上次修改密码到现在的时间数变成了0 (为0时则需要修改密码)

下次登陆时 输入两次旧密码就会提示重新设置新密码

2.2 设置账号密码有效期


1. 对于现有用户
chage -M 有效期 用户名
2. 对于即将创建的用户
修改配置文件
vim /etc/login.defs          #编辑login.defs文件
PASS_MAX_DAYS   30           #设置有效期30天

1. 对于现有用户
在这里插入图片描述
ps :设置张三的密码有效期为6天

2. 对于即将创建用户
vim /etc/login.defs
在这里插入图片描述
将图中标记那一行的值修改为需要设置的期限 保存退出
然后正常创建用户即可,期限会自动变为配置文件里设置的期限

3. 减少历史命令显示条数

为避免实际环境中的历史命令泄露,造成安全问题,可将历史命令显示条目进行调整

3.1 减少显示条目
方法一:全局环境生效
vim /etc/profile         
 #编辑profile文件
HISTSIZE=20              
#历史记录保留20条
soure /etc/profile       
 #执行配置文件,使配置文件生效
 
方法二:当前环境生效,重启失效
export HISTSIZE=数值      
#保留历史记录为(数值)条

方法一 修改全局生效配置文件
vim /etc/profile
在这里插入图片描述
在这里插入图片描述
可以看到 通过修改并重新执行配置文件 历史命令条目变为十条

方法二 临时修改
在这里插入图片描述
重启后配置失效

3.2 登陆时自动清空历史命令
vim ~/.bashrc
// 编辑配置文件,这个配置文件会在打开新bash时自动执行
echo "" >~/.bash_history
// 添加这条配置

在这里插入图片描述
在这里插入图片描述

4. 终端超时自动登出

方法一:永久配置
vim /etc/profile    #编辑profie文件
添加export TMOUT=600          #600秒闲置,终端注销
source /etc/profile   #执行一次配置文件,让配置文件生效

方法二:当前配置,重启失效
export TMOUT=数值    #(数值)秒闲置,终端注销

类似与减少历史命令的配置方式

方法一 配置全局生效

  • 编辑profie文件 vim /etc/profile
  • 添加一条 export TMOUT=600
  • 保存退出
  • 重新执行文件 source /etc/profile
    在这里插入图片描述
    在这里插入图片描述

二、su操作

1. su命令概念

  • 作用:切换用户
  • 格式:su [目标用户]
  • 可登录的用户一般分两种种,超级用户root、普通用户。
  • 当root切换到任意的用户时,不需要密码。
  • 但当普通用户切换其他用户的时候,需要输入目标用户的密码进行验证。

2. 限制用户使用su命令

  1. 首先把允许使用su命令的用户添加进wheel组中
  2. 修改/etc/pam.d/su认证配置启用pam_wheel认证

第一步:将允许使用su的用户添加wheel组

gpasswd -a 用户 wheel    #添加用户到wheel组中

在这里插入图片描述
第二步:修改/etc/pam.d/su认证配置启用pam_wheel认证

vim /etc/pam.d/su     #编辑/etc/pam.d/su文件
auth sufficient pam_rootok.so  
#pam_rootok.so模块的主要作用是使uid为0的用户root能够直接通过认证而不用输入密码

auth required pam_wheel.so use_uid 
 #pam_wheel.so作用是让wheel组内的用户使用su命令,其他人(包括root)无法使用su命令

在这里插入图片描述
此时只有root和加入wheel组的账号才是使用su命令
在这里插入图片描述
可以看到 在wheel组中的wang用户 和root用户都能使用su命令,未在wheel组内的tako用户没有使用su的权限

ps:
1. auth sufficient pam_rootok.so
2. auth required pam_wheel.so use_uid

  • 两行都注释:所有用户都能使用su命令,切换时root和普通用户都需要密码验证
  • 开启第一行,注释第二行:(默认状态)允许所有用户间使用su命令进行切换的,切换时,root不需要密码,其他用户需要密码。
  • 注释第一行,开启第二行:只有wheel组内的用户才能使用su命令,root用户也无法切换。
  • 两行都开启:只有root用户和wheel组内的用户才可以使用su命令。

3. 查看su操作日志

/var/log/secure    //是su的日志目录

在这里插入图片描述

三、 PAM认证

1. PAM及其应用

  • PAM是linux可插拔认证模块,是一套可定制、可动态加载的共享库,系统管理员通过PAM配置文件随意选择程序的认证方式。
  • PAM的配置文件位于/etc/pam.d目录下,CentOS7的本地认证模块放置在/lib64/security下。

2. PAM认证原理

  • PAM认证顺序:Service(服务)—>PAM(配置文件)—>pam_*.so
  • PAM首先确定服务,然后加载相应的PAM配置文件,最后调用PAM认证模块进行安全认证。
  • 用户访问服务器的时候,服务器的某一个服务程序把用户的请求发送到PAM模块进行认证。不同的应用程序所对应的PAM 模块也是不同的。

3. PAM认证构成

  • 每一行都是一个独立的认证和过程,它们按从上往下的顺序依次由PAM模块调用

  • 每行都有三个分区:认证类型、控制类型、PAM模块、PAM模块参数
    在这里插入图片描述
    认证类型:

  • auth 对用户身份进行识别,如提示输入密码,判断是否为root。

  • account 对账号各项属性进行检查,如是否允许登录系统,帐号是否已经过期,是否达到最大用户数等。

  • password 使用用户信息来更新数据,如修改用户密码。

  • session 定义登录前以及退出后所要进行的会话操作管理,如登录连接信息,用户数据的打开和关闭,挂载文件系统。

控制类型: PAM使用控制类型来处理和判断各个模块的返回值

  • required 需要返回一个成功值,如果返回失败,不会立刻将失败结果返回,而是继续进行同类型的下一验证,所有此类型的模块都执行完成后,再返回失败。该行以及所涉及模块的成功是用户通过鉴别的必要条件
  • requisite 与required类似,但如果此模块返回失败,则立刻返回失败并表示此类型失败。
  • sufficient 如果此模块返回成功,则不管后面的验证,直接向程序返回成功,表示验证通过,如果返回失败,则可以看成optional。(慎用)
  • optional 不进行成功与否的返回,一般不用于验证,只是显示信息(通常用于 session 类型)。不管成功、失败,继续下一模块的验证,且此模块的服务也能享用。
  • include 表示在验证过程中调用其他的PAM配置文件。比如很多应用通过完整调用/etc/pam.d/system-auth(主要负责用户登录系统的认证工作)来实现认证而不需要重新逐一去写配置项。

PAM模块

  • CentOS7默认是在/lib64/security/目录下,如果不在此默认路径下,要填写绝对路径。
  • 同一个模块,可以出现在不同的模块类型中,它在不同的类型中所执行的操作都不相同,这是由于每个模块针对不同的模块类型编制了不同的执行函数。

PAM模块参数:

  • 这个需要根据所使用的模块来添加。传递给模块的参数。参数可以有多个,之间用空格分隔开
    在这里插入图片描述

四、sudo命令

作用:提升执行权限,可以使其他用户使用部分root用户权限

1. 配置sudo权限

  1. 通过vim /etc/sudoers(默认权限为440 需使用wq!保存退出)
  2. 通过visudo

2. 配置授权格式

用户 主机名=命令程序列表
用户 主机名=(用户) 命令程序列表
  • 用户:直接授权指定的用户名,或采用“%组名”的形式(授权一个组的所有用户)。
  • 主机名:使用此规则的主机名。没配置过主机名时可用localhost,有配过主机名则用实际的主机名,ALL则代表所有主机
  • (用户):用户能够以何种身份来执行命令。此项可省略,缺省时以root用户的身份来运行命令
  • 命令程序列表:允许授权的用户通过sudo方式执行的特权命令,需填写命令程序的完整路径,如果不知道路径可以用“which”查,多个命令之间以逗号“,”进行分隔。ALL则代表系统中的所有命令;通配符“*”表示所有、取反符号“!”表示排除
  • 注:初次使用sudo时需验证当前用户的密码,默认超时时长为5分钟,在此期间不再重复验证密码。
    在这里插入图片描述

3. 设置授权别名

当有些用户、主机名或命令字符比较长或复杂,可以设置别名

  • 使用关键字 User_Alias、Host_Alias、Cmnd_Alias 来进行设置别名(别名必须为大写)
    多个信息需要用“,”隔开。
  • User_Alias USERS=用户名1,用户名2,用户名3 #用户别名,USERS代表后面三个用户
  • Host_Alias HOSTS=localhost,bogon #主机别名
  • Cmnd_Alias CMNDS=/sbin/ifconfig,/usr/sbin/useradd,/usr/sbin/userdel #命令别名
  • USERS HOSTS=CMNDS #使用别名编写授权
    在这里插入图片描述

五、开机安全

1. 调整开机引导设置

  1. 将第一引导设备设为当前系统所在硬盘。
  2. 禁止从其他设备(光盘、U盘、网络)引导系统,将对应的项设置为“disabled”。
  3. 将安全级别设为setup,并设置管理员密码。

2. GRUB限制

grub2-mkpasswd-pbkdf2       
#使用grub2-mkpasswd-pbkdf2生成密钥

cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.bak
cp /etc/grub.d/00_header /etc/grub.d/00_header.bak

vim /etc/grub.d/00_header       
#修改/etc/grub.d/00_header文件,添加密码记录

cat << EOF
set superusers="root"					
#设置用户名为root
password_pbkdf2 root grub.pbkdf2……		
#设置密码,省略部分内容为经过加密生成的密码字符串
EOF

grub2-mkconfig -o /boot/grub2/grub.cfg	#生成新的 grub.cfg 文件

第一步:使用grub2-mkpasswd-pbkdf2生成密钥
在这里插入图片描述
第二步:修改/etc/grub.d/00_header文件,添加密码记录
(建议修改前先备份)
在这里插入图片描述
在这里插入图片描述
第三步:生成新的grub.cfg配置文件
在这里插入图片描述
此时在开机加载页面时 按e需要输入设置的用户和密码才能进行修改

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值