系统安全及应用(操做)

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文件中的内容,且不容许直接编辑该文件中的内容。
在这里插入图片描述

linux

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








shell

二、密码安全控制

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

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

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




vim

已有用户 chage -M 30 zhangsan

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


安全

下次登陆强制改密码

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

三、命令历史的限制

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

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

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

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




bash

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

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

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

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

在这里插入图片描述

在这里插入图片描述

四、终端自动注销

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

在这里插入图片描述

2、su命令

1)切换用户

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


网络

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

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

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

在这里插入图片描述
第二步:启用pam_wheel认证模块
ui

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

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

3、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 类型)。无论成功、失败,继续下一模块的验证,且此模块的服务也能享用。

4、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受权


5、开关机安全

1)调整BIOS引导设置

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

二、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重启



在这里插入图片描述

6、终端登陆

一、限制root用户

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

二、限制普通用户

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

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

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述 普通用户没法登陆了,root用户能够登陆。删除nologin文件后,恢复正常。重启也能够恢复正常,但在实际状况下,公司内部不会让你重启服务器,因此须要删除文件。

相关文章
相关标签/搜索