系统安全及应用(操作)

一、账号安全基本措施

1、系统账号清理

  • 将非登录用户的shell设为/sbin/nologin
usermod -s /sbin/nologin 用户名
  • 锁定长期不使用的账号
usermod -L 用户名
passwd -l 用户名
passwd -S 用户名
  • 删除无用的账号
userdel 【-r】用户名
  • 锁定账号文件passwd、shadow
chattr +i /etc/passwd /etc/shdow  #锁定文件
chattr -i /etc/passwd /etc/shdow  #解锁文件
lsattr /etc/passwd /etc/shdow     #查看状态

用户账号文件/etc/shadow
默认只有root用户能够读取shadow文件中的内容,且不允许直接编辑该文件中的内容。
在这里插入图片描述

**字段1:**用户账号的名称
**字段2:**使用MD5加密的密码字串信息,若为"*"或“!!”表示此用户不能登录到系统,若为空字段表示此用户无需密码即可登录系统。
**字段3:**上次修改密码的时间,表示从1970年01月01日算起到最近一次修改密码时间隔的天数(18445)
**字段4:**密码的最短有效天数,自本次修改密码后,必须至少经过该天数才能再次修改密码。默认值为0,表示不进行限制
**字段5:**密码的最长有效天数,自本次修改密码后,经过该天数以后必须再次修改密码。默认值为99999,表示不进行限制(99999)
**字段6:**提前多少天警告用户密码将过期,默认值为7(7)
**字段7:**在密码过期之后多少天禁用此用户
**字段8:**帐号失效时间,此字段指定了用户作废的天数(从1970年01月01日起计算),默认值为空,表示账号永久可用。
**字段9:**保留字段(未使用)
注:字段7、8、9使用较少,一般使用默认,了解即可

2、密码安全控制

  • 设置密码有效期
  • 要求用户下次登录时修改密码
vim /etc/login.defs   #修改密码配置文件(适用于新建用户)
chage -M 30 lisi       #适用于已有用户
chage -d 0 zhangsan    #强制在下次登录时更改密码(shadow文件中的第三个字段被修改为0

新用户vim /etc/login.defs 设置密码有效期

最多多少天后必须改密码
在这里插入图片描述
密码的最长有效天数改为30
在这里插入图片描述
新建用户wangwu可以看到第五字段变为30
在这里插入图片描述

已有用户 chage -M 30 zhangsan

没改前还是默认99999
在这里插入图片描述
执行命令chage -M 30 zhangsan后第五字段变为30
在这里插入图片描述

下次登录强制改密码

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

3、命令历史的限制

vi /etc/profile
找到(HISTSIZE=1000)1000就是显示保留的命令行数,减少命令行数就改此数值。

export HISTSIZE=数值,当前用户环境下生效,重启失效。

1)vi /etc/profile减少命令行数

在这里插入图片描述
举例改为20行
在这里插入图片描述
source /etc/profile调用配置,让修改配置生效
查看历史命令可以看到只有20行
在这里插入图片描述

2)export HISTSIZE=数值减少命令行数

举例5行
在这里插入图片描述

3)登录时自动清空历史命令

vim ~/.bashrc
echo " " > ~/.bash_history      

在这里插入图片描述

在这里插入图片描述

4、终端自动注销

vim /etc/profile    #编辑profie文件
TMOUT=600           #600秒闲置,终端注销
soure /etc/profile   #执行一次配置文件,让配置文件生效

在这里插入图片描述

二、su命令

1)切换用户

su 目标用户
root用户su其他用户不需要输密码
普通用户su其他用户需要输密码
在这里插入图片描述

2)限制使用su命令的用户

第一步:将允许使用su命令的用户加入wheel组

gpasswd -a 用户 wheel    #添加用户到wheel组中
grep wheel /etc/group    #确定wheel组成员

在这里插入图片描述
第二步:启用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命令

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

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

  • 两行都注释:所有用户都能使用su命令,切换时root和普通用户都需要密码验证
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 开启第一行,注释第二行:(默认状态)允许所有用户间使用su命令进行切换的,切换时,root不需要密码,其他用户需要密码。(前面有不演示了)

  • 注释第一行,开启第二行:只有wheel组内的用户才能使用su命令,root用户也无法切换。

在这里插入图片描述

  • 两行都开启:只有root用户和wheel组内的用户才可以使用su命令。
    在这里插入图片描述

3)查看su操作记录

cat /var/log/secure  #安全日志文件/var/log/secure

会看就行
在这里插入图片描述

三、PAM安全认证

su命令的安全隐患

  • 默认情况下,任何用户都允许使用su命令,有机会反复尝试其他用户(如root)的登录密码,带来安全风险
  • 为了加强su命令的使用控制,可借助于PAM认证模块,只允许极个别用户使用su命令进行交换

PAM可插拔式认证模块

  • 是一种高效而且灵活便利的用户级别的认证方式
  • 也是当前linux服务器普遍使用的认证方式

PAM认证原理

1.PAM 认证一般遵循的顺序:Service(服务)→PAM(配置文件)→pam_*.so;(认证模块)

2.PAM认证首先要确定哪一项应用服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证模块(位于 /lib64/security/下)进行安全认证。

3.用户访问服务器的时候,服务器的某一个服务程序把用户的请求发送到PAM模块进行认证。

4.不同的应用程序所对应的PAM 模块也是不同的。

这里想看某个程序是否支持PAM认证,可以用ls命令查看/etc/pam.d/。

PAM认证的构成

查看某个程序是否支持PAM模块认证

示例:查看su是否支持PAM模块认证
ls /etc/pam.d | grep su  

在这里插入图片描述

查看su的PAM配置文件

cat /etc/pam.d/su

在这里插入图片描述

  • 每一行都是一个独立的认证和过程,它们按从上往下的顺序依次由PAM模块调用
  • 每行都有三个分区:认证类型、控制类型、PAM模块、PAM模块参数

认证模块类型 第一列
auth:对用户身份进行识别,如提示输入密码,判断是否为root。
account:对账号各项属性进行检查,如是否允许登录系统,帐号是否已经过期,是否达到最大用户数等。
password:使用用户信息来更新数据,如修改用户密码。
session:定义登录前以及退出后所要进行的会话操作管理,如登录连接信息,用户数据的打开和关闭,挂载文件系统。

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

PAM安全认证流程

在这里插入图片描述

required:验证失败时仍然继续进行同类型的下一验证,所有此类型的模块都执行完成后,返回失败

requisite:验证失败则立即结束整个验证过程返回失败

sufficient:如果此模块返回成功,则不管后面的验证,直接向程序返回成功,表示验证通过,如果返回失败,则可以看成optional。(慎用)

optional:不进行成功与否的返回,一般不用于验证,只是显示信息(通常用于 session 类型)。不管成功、失败,继续下一模块的验证,且此模块的服务也能享用。

四、sudo

sudo是一种授权命令。以其他用户身份(如root)执行授权的命令

配置命令:

visudo 
或者 vim /etc/sudoers(此文件的默认权限为 440,保存退出时必须执行“:wq!”命令来强制操作)
记录格式:用户  主机名=命令程序列表

语法格式:

用户 主机名=命令程序列表
用户 主机名=(用户) 命令程序列表

解释:
用户:直接授权指定的用户名,或采用“%组名”的形式(授权一个组的所有用户)。

主机名:使用此规则的主机名。没配置过主机名时可用localhost,有配过主机名则用实际的主机名,ALL则代表所有主机

(用户):用户能够以何种身份来执行命令。此项可省略,缺省时以root用户的身份来运行命令

命令程序列表:允许授权的用户通过sudo方式执行的特权命令,需填写命令程序的完整路径,如果不知道路径可以用“which”查,多个命令之间以逗号“,”进行分隔。ALL则代表系统中的所有命令;通配符“*”表示所有、取反符号“!”表示排除

在这里插入图片描述

举例 lisi 可用 ifconfig

visudo编辑最后面加上 (用户 主机名=命令程序列表)

在这里插入图片描述

在这里插入图片描述

启动sudo操作日志

visudo                             #进入编辑
Defaults logfile = /var/log/sudo   #将该命令添加至最后一行:wq保存并退出即可

进入visudo编辑 G 可直接到最后一行
在这里插入图片描述

别名创建

使用关键字 User_Alias、Host_Alias、Cmnd_Alias 来进行设置别名(别名必须为大写)
多个信息需要用“,”隔开。

User_Alias JISHU=用户名1,用户名2,用户名3        #用户别名,JISHU代表后面三个用户
Host_Alias HELLO=localhost,lisi             #主机别名
Cmnd_Alias CMN=/sbin/*,!/sbin/useradd,!/sbin/userdel  #命令别名(除了这些命令其他都能用)
USERS HOSTS=CMNDS   #使用别名编写授权

在这里插入图片描述
命令文件前"!"都得是英文格式,中文格式会报错。
配置好验证下

在这里插入图片描述
sudo -l 可以查看当前用户sudo授权

五、开关机安全

1)调整BIOS引导设置

(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 文件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
init 6重启

在这里插入图片描述

六、终端登录

1、限制root用户

linux系统启动时,login程序会读取 /etc/securetty文件(安全终端配置文件),决定允许root用户从哪些终端登录。所以想要限制需要编辑 /etc/securetty文件。root用户默认可以使用所有终端,不允许哪几个终端登录直接编辑 /etc/securetty 找到终端前面加”#“注释掉。
在这里插入图片描述

2、限制普通用户

login 程序会检查/etc/nologin 文件是否存在,如果存在,则拒绝普通用户登录系统(root 用户不受限制)

touch /etc/nologin			#禁止普通用户登录
rm -rf /etc/nologin			#取消登录限制

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
普通用户无法登录了,root用户可以登录。删除nologin文件后,恢复正常。重启也可以恢复正常,但在实际情况下,公司内部不会让你重启服务器,所以需要删除文件。

猜你喜欢

转载自blog.csdn.net/weixin_51616026/article/details/110818161