本次该篇博客将有关Liunx系统中(所有实验基于Centos 7)安全方面的各个知识分别由七个实验来实际阐述。


目录:

  • 账户文件控制(加锁)
  • 控制历史记录
  • 账户密码时效管理
  • 账户安全切换
  • SUDO命令提权
  • GRUB菜单管理
  • NMAP扫描

一、账户文件控制(加锁)

账户文件控制实际上就是对用户账户(密码)文件的加锁与解锁,一旦将账户和密码文件上锁,该服务器将无法创建新的用户。
实现步骤:

1、查看上锁前的账户文件状态,输入:

[root@localhost ~]# lsattr /etc/passwd /etc/shadow

centos 取消磁盘加密 centos 全盘加密_sudo命令

2、将账户文件上锁并查看加锁后的状态,输入:

[root@localhost ~]# chattr +i /etc/passwd /etc/shadow
[root@localhost ~]# lsattr /etc/passwd /etc/shadow

centos 取消磁盘加密 centos 全盘加密_sudo命令_02

3、使用添加用户命令(useradd),会发现无法新增用户。

[root@localhost ~]# useradd tasetplayer

centos 取消磁盘加密 centos 全盘加密_centos 取消磁盘加密_03

二、控制历史记录

在Linux中,历史记录会完整的保存之前输入的命令,这是非常危险,一旦获取到历史记录就能通过历史记录推断出之前执行的操作。所以我们要对历史记录表的容量进行限制。
实现步骤:

1、修改配置文件——针对整个系统:

[root@localhost ~]# vim /etc/profile

2、在配置文件中找到“HISTSIZE”将后面的数字进行修改

(默认为1000,即最多可保存1000条历史记录)

3、重新执行配置文件

这时候虽然完成了配置文件的修改,但实际上并没有执行,需要重启或者输入:

[root@localhost ~]# source /etc/profile

重新执行刚修改的配置文件,使配置文件生效。

centos 取消磁盘加密 centos 全盘加密_centos 取消磁盘加密_04


centos 取消磁盘加密 centos 全盘加密_centos 取消磁盘加密_05


centos 取消磁盘加密 centos 全盘加密_sudo命令_06

1、修改配置文件——针对某个用户

[root@localhost ~]# vim /home/zhy/.bash_logout

其中,“/home/zhy”表示用户的宿主目录

2、在用户的配置文件中手动添加:

history -c
clear

centos 取消磁盘加密 centos 全盘加密_配置文件_07


centos 取消磁盘加密 centos 全盘加密_配置文件_08

三、账户密码时效管理

实验一:

设置密码有效期
要求用户下次登录时修改密码

[root@localhost ~]# vim /etc/login.defs

PASS_MAX_DAYS 30(适用于新建用户,原用户有效期不会变化)

centos 取消磁盘加密 centos 全盘加密_配置文件_09


centos 取消磁盘加密 centos 全盘加密_账户安全_10

[root@localhost ~]# vim /etc/shadow(该条命令可以修改已有用户的有效期)

centos 取消磁盘加密 centos 全盘加密_sudo命令_11

除了上面的两条命令能够控制用户有效期的长短:

[root@localhost ~]# chage -d 0 wangwu(强制在下次登录时更改密码)

强烈建议不要使用这条命令!!!!因为你的新密码基本不会设置成功(即使满足密码复杂性的要求),会有各种各样的问题出现!!

例如:这样的

centos 取消磁盘加密 centos 全盘加密_centos 取消磁盘加密_12


这样的

centos 取消磁盘加密 centos 全盘加密_centos 取消磁盘加密_13


还有这样的

centos 取消磁盘加密 centos 全盘加密_安全_14

四、账户安全切换

通常情况下,哪怕是普通用户也可以使用“su”命令在多个账户间进行切换,从而有机会反复尝试其他用户(如root)的登录密码,带来非常大的安全风险。
为了加强su命令的使用控制,可借助pam_wheel认证模块,只允许个别用户使用su命令(在wheel组中的用户)进行切换。
实现过程:

1、将想要授权的用户移入wheel,输入命令:

[root@localhost ~]# gpasswd -a zhaosi wheel
[root@localhost ~]# cat /etc/group | grep wheel

centos 取消磁盘加密 centos 全盘加密_账户安全_15

2、修改/etc/pam.d/su认证配置,用来启用pam_wheel认证

[root@localhost ~]# vim /etc/pam.d/su

auth sufficient pam_rootok.so

#auth required pam_wheel.so use_uid(将该行前面的#去掉以启用认证模块)

centos 取消磁盘加密 centos 全盘加密_安全_16

3、配置完成后,我们只是将“zhaosi”加入wheel组中,所以其它用户将无法使用su命令进行用户之间的切换

[wangwu@localhost ~]$ su - root
密码:
su: 拒绝权限
[wangwu@localhost ~]$ (切换失败,仍为原来用户)

centos 取消磁盘加密 centos 全盘加密_配置文件_17

五、sudo命令提权

在Liunx中,说到既可以让普通用户拥有一部分的管理权限,又可以不知道root密码的命令。那说的一定就是sudo命令了!!只要管理员提前进行授权,就可以让指定的普通用户拥有一部分管理权限。

1、在配置文件/etc/sudoers中添加授权(也可以直接使用visudo工具直接进行授权)

[root@localhost ~]# visudo

wangwu localhost=/usr/sbin/ifconfig(为wangwu提供ifconfig命令的授权)
:wq

centos 取消磁盘加密 centos 全盘加密_账户安全_18

2、通过sudo执行特权命令

对于已授权的用户,通过sudo执行时,只要在正常的命令之前加上sudo即可。

[wangwu@localhost ~]$ /sbin/ifconfig ens33 192.168.1.11/24(未用sudo的情况)
SIOCSIFADDR: 不允许的操作
SIOCSIFFLAGS: 不允许的操作
SIOCSIFNETMASK: 不允许的操作
[wangwu@localhost ~]$ sudo /sbin/ifconfig ens33 192.168.1.11/24(使用sudo的情况)

[sudo] wangwu 的密码:
[wangwu@localhost ~]$ ifconfig (验证执行结果)
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.11 netmask 255.255.255.0 broadcast 192.168.1.255

centos 取消磁盘加密 centos 全盘加密_账户安全_19


centos 取消磁盘加密 centos 全盘加密_账户安全_20

六、grub菜单管理

GRUB菜单作为启动过程的必备项,一旦遭到破坏便会导致无法进入系统。通常情况下,grrub菜单不会出现大的问题。但在之前的博客中曾经介绍过通过修改grub引导参数进入单用户模式来修复系统问题,这种方法可以绕开开机密码进入系统,并且拥有root权限。方法虽好,但从安全角度来说,任何人都可以通过修改grub参数来获取root权限,本身对服务器就是一个极大的威胁。
所以为了防止这种情况的发生,我们可以为GRUB菜单设置一个单独的密码。

1、分别将grub菜单文件和它的头文件进行备份,以防实验失败造成无法开机

[root@localhost ~]# cp /boot/grub2/grub.cfg  /boot/grub2/grub.cfg.bak
[root@localhost ~]# cp /etc/grub.d/00_header /etc/grub.d/00_header.bak

centos 取消磁盘加密 centos 全盘加密_安全_21

2、生成设置grub菜单所需的密码哈希(Hash)值

[root@localhost ~]# grub2-mkpasswd-pbkdf2

centos 取消磁盘加密 centos 全盘加密_账户安全_22

3、设置grub菜单头文件

[root@localhost ~]# vim /etc/grub.d/00_header

具体修改步骤:

按下G定位到头部文件末尾,并按o在下一行输入
输入“cat << EOF”
输入“set superusers=”root””
最后一行输入“passwd_pbkdf2 root之前计算出的哈希值”
:wq(保存退出)

centos 取消磁盘加密 centos 全盘加密_账户安全_23

4、重新创建grub的配置

[root@localhost ~]# grub2-mkconfig -o /boot/grub2/grub.cfg

centos 取消磁盘加密 centos 全盘加密_账户安全_24


到此就完成GRUB菜单密码的设置,下次想要进入GRUB设置就必须输入密码才能进入了。

七、NMAP扫描——端口扫描

NMAP的扫描语法

格式:nmap [扫描类型] [选项] <扫描目标…>
常用的扫描类型:
-aS:TCP SYN扫描
-sT:TCP连接扫描
-sF:TCP FIN扫描
-sU:UDP扫描
-sP:检测ping
-P0:跳过ping检测

实验步骤:

1、安装NMAP扫描工具

[root@localhost ~]# yum install nmap -y

centos 取消磁盘加密 centos 全盘加密_安全_25

2、通过该工具查看本机对外开启的具体端口服务

TCP端口开启的服务

[root@localhost ~]# nmap -sT 127.0.0.1

centos 取消磁盘加密 centos 全盘加密_sudo命令_26

UDP端口开启的服务

[root@localhost ~]# nmap -sU 127.0.0.1

centos 取消磁盘加密 centos 全盘加密_配置文件_27