Linux操作系统实验指导-实验06:系统监控与安全管理

449 阅读15分钟

一、实验目的

1、掌握系统性能监控;

2、掌握系统可视化监控;

3、掌握使用SELinux 提升系统内核安全性;

4、掌握使用 Firewalld 提升系统的安全性。

二、实验学时

2学时

三、实验类型

设计研究

四、实验需求

1、硬件

每人配备计算机1台。

2、软件

安装VMware WorkStation Pro或Oracle VM VirtualBox软件,安装Mobaxterm软件。

3、网络

本地主机与虚拟机能够访问互联网,虚拟机网络不使用DHCP服务。

4、工具

无。

五、实验任务

1、完成系统性能监控;

2、完成使用Linux-dash实现系统可视化监控;

3、完成使用SELinux提升系统内核的安全性;

4、完成使用防火墙(Firewalld)提升系统的安全性。

六、实验环境

1、本实验需要VM 1台。

2、本实验VM配置信息如下表所示。

虚拟机配置操作系统配置
虚拟机名称:VM-Lads-06-Task-01-172.31.0.61内存:1GBCPU:1颗,1核心虚拟磁盘:20GB网卡:1块主机名:Lab-06-Task-01IP地址:172.31.0.61子网掩码:255.255.255.0网关:172.31.0.254DNS:172.31.0.254

3、本实验拓扑图。

无。

4、本实验操作演示视频。

本实验操作演示视频为视频集的第6集:www.bilibili.com/video/BV1b1…

七、实验内容及步骤

1、使用命令工具监控系统性能

1.1查看CPU信息

(1)使用lscpu命令工具查看CPU信息。

# 使用lscpu显示CPU详细信息
[root@Lab-06-Task-01 ~]# lscpu
# 以扩展可读的格式显示CPU信息
[root@Lab-06-Task-01 ~]# lscpu -e
# 显示CPU指定列的信息
[root@Lab-06-Task-01 ~]# lscpu -e=CPU
# 以可解析的格式显示CPU信息
[root@Lab-06-Task-01 ~]# lscpu -p
# 显示online CPU信息
[root@Lab-06-Task-01 ~]# lscpu -bp

(2)使用cat /proc/cpuinfo命令工具查看CPU信息。

# 使用cat /proc/cpuinfo显示CPU详细信息
[root@Lab-06-Task-01 ~]# cat /proc/cpuinfo
# 查看CPU型号
[root@Lab-06-Task-01 ~]# cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
# 查看物理CPU个数
[root@Lab-06-Task-01 ~]# cat /proc/cpuinfo | grep 'physical id' | sort | uniq | wc -l
# 查看CPU的总线程数量
[root@Lab-06-Task-01 ~]# cat /proc/cpuinfo| grep "processor"| wc -l

(3)使用mpstat命令工具查看CPU信息。

# 使用mpstat命令工具查看CPU信息
# 查看多核CPU核心的当前运行状况信息,每两秒更新一次
[root@Lab-06-Task-01 ~]# yum install -y sysstat
[root@Lab-06-Task-01 ~]# mpstat  -P ALL 2
# 查看多核CPU核心的当前运行状况信息,每五秒更新一次,采样两次
[root@Lab-06-Task-01 ~]# mpstat  -P ALL 5 2

1.2查看磁盘信息

(1)使用df命令工具查看磁盘信息。

# 使用df命令工具查看磁盘信息
[root@Lab-06-Task-01 ~]# df
# 使用df -i以inode模式来显示磁盘使用情况
[root@Lab-06-Task-01 ~]# df -i
# 使用df -T显示文件系统类型
[root@Lab-06-Task-01 ~]# df -T
# 使用df -h与更易读的方式显示目前磁盘空间和使用情况
[root@Lab-06-Task-01 ~]# df -h
# 使用df -k以单位显示磁盘的使用情况
[root@Lab-06-Task-01 ~]# df -k
# 使用df -l显示本地的分区的磁盘空间使用率
[root@Lab-06-Task-01 ~]# df -l
# 使用df -a显示各文件系统的使用情况
[root@Lab-06-Task-01 ~]# df -a
# 使用df -ia显示各文件系统的i节点的使用情况
[root@Lab-06-Task-01 ~]# df -ia

(2)使用fdisk命令工具查看磁盘信息。

# 使用fdisk -l显示磁盘当前分区信息
[root@Lab-06-Task-01 ~]# fdisk -l
# 使用fdisk -lu显示SCSI磁盘的每个分区的情况
[root@Lab-06-Task-01 ~]# fdisk -lu

1.3查看系统实时状态

使用top命令工具查看系统实时状态。

# 使用top命令显示系统进行信息
[root@Lab-06-Task-01 ~]# top
# 使用top -d设置信息更新时间
[root@Lab-06-Task-01 ~]# top -d 3
# 使用top -p显示指定进程的信息
[root@Lab-06-Task-01 ~]# top -p 192
# 使用top -n显示更新3次后推出
[root@Lab-06-Task-01 ~]# top -n 3
# 使用top -S累计显示进程CPU使用时间
[root@Lab-06-Task-01 ~]# top -S
# 使用top -H显示进程中线程的详细信息
[root@Lab-06-Task-01 ~]# top -H

1.4查看系统性能状态

(1)使用htop命令工具查看系统性能状态。

# 使用htop命令工具通过图形操作界面查看系统性能状态
[root@Lab-06-Task-01 ~]# htop

(2)使用sar命令工具查看系统性能状态。

# 使用sar命令工具查看系统性能状态
# 使用sar -u查看CPU状态,每 1s 监控一次,共监控 3 次
[root@Lab-06-Task-01 ~]# sar -u 1 3
# 使用sar -r查看内存使用率,每 1s 监控一次,共 3 次
[root@Lab-06-Task-01 ~]# sar -r 1 3
# 使用sar -B查看内存分页情况,每隔 1s 监控一次,共 3 次
[root@Lab-06-Task-01 ~]# sar -B 1 3
# 使用sar -W查看系统交换活动信息,每隔 1s 监控一次,共 3 次
[root@Lab-06-Task-01 ~]# sar -W 1 3
# 使用sar -d查看磁盘使用情况,每 1s 监控一次,共 3 次
[root@Lab-06-Task-01 ~]# sar -d 1 3 -p
# 使用sar -b查看 I/O 和传输率,每 1s 监控一次,共 3 次
[root@Lab-06-Task-01 ~]# sar -b 1 3
# 使用sar -n查看网络情况,每隔 1s 监控一次,共 3 次
[root@Lab-06-Task-01 ~]# sar -n ALL 1 3
# 使用sar -q查看队列的长度与负载的状态,每隔 1s 监控一次,共 3 次
[root@Lab-06-Task-01 ~]# sar -q 1 3

(3)使用dstat命令工具查看系统性能状态。

# 使用dstat命令工具查看系统性能状态
[root@Lab-06-Task-01 ~]# dstat
# 使用dstat -c查看CPU信息,每隔 1s 监控一次,共 3 次
[root@Lab-06-Task-01 ~]# dstat -c 1 3
# 使用dstat -d查看磁盘使用情况,每隔 1s 监控一次,共 3 次
[root@Lab-06-Task-01 ~]# dstat -d 1 3
# 使用dstat -m查看内存使用情况,每隔 1s 监控一次,共 3 次
[root@Lab-06-Task-01 ~]# dstat -m 1 3
# 使用dstat -n查看网络传送信息,每隔 1s 监控一次,共 3 次
[root@Lab-06-Task-01 ~]# dstat -n 1 3
# 使用dstat -p进行进程统计,每隔 1s 监控一次,共 3 次
[root@Lab-06-Task-01 ~]# dstat -p 1 3
# 使用dstat -r进行io请求统计,每隔 1s 监控一次,共 3 次
[root@Lab-06-Task-01 ~]# dstat -r 1 3
# 使用dstat -t进行时间和日期的输出
[root@Lab-06-Task-01 ~]# dstat -t

2、使用Linux-Dash实现系统可视化监控

2.1部署Linux-Dash

# 使用yum工具安装Apache
[root@Lab-06-Task-01 ~]# yum install -y httpd
# 使用systemctl start命令启动Apache服务
[root@Lab-06-Task-01 ~]# systemctl start httpd
[root@Lab-06-Task-01 ~]# systemctl enable --now httpd
[root@Lab-06-Task-01 ~]# yum install -y python php php-fpm
# 在/var/www/html目录下,下载linux-dash的源码包
[root@Lab-06-Task-01 ~]# cd /var/www/html
[root@Lab-06-Task-01 html]# git clone https://github.com/afaqurk/linux-dash.git

2.2配置安全策略

# 配置防火墙,允许80/tcp端口访问
[root@Lab-06-Task-01 ~]# firewall-cmd --zone=public --add-service=http --permanent
[root@Lab-06-Task-01 ~]# firewall-cmd --reload
[root@Lab-06-Task-01 ~]# firewall-cmd --list-all
# 配置SELinux
[root@Lab-06-Task-01 ~]# setenforce 0
# 修改SELinux配置文件
[root@Lab-06-Task-01 ~]# vi /etc/selinux/config
-------------------- config ----------------------
SELINUX=permissive
--------------------------------------------------
[root@Lab-06-Task-01 ~]# reboot

2.3访问测试

# 进行访问安全配置
# 修改httpd的配置文件,使用httpd启动方式进行登录保护
[root@Lab-06-Task-01 ~]# vi /etc/httpd/conf.d/dash.conf
-------------------- dash.conf ------------------
<Directory /var/www/html/linux-dash/app>
    Options FollowSymLinks
    AllowOverride All
    Order allow,deny
    allow from all
</Directory> 
--------------------------------------------------
# 在/var/www/html/linux-dash/app目录下创建.htaccess文件
[root@Lab-06-Task-01 ~]# vi /var/www/html/linux-dash/app/.htaccess
-------------------- .htaccess  ------------------
AuthType Basic
AuthName "Restricted Files"
AuthUserFile /var/www/html/linux-dash/app/.htpasswd
Require valid-user
--------------------------------------------------
# 设置访问linux-dash页面的登录账号和密码
[root@Lab-06-Task-01 ~]# htpasswd -c /var/www/html/linux-dash/app/.htpasswd admin
New password: 
Re-type new password: 
Adding password for user admin
# 重新服务
[root@Lab-06-Task-01 ~]# systemctl restart httpd

在Windows本地客户端使用浏览器访问http://172.31.0.61/linux-dash/app/,输入linux-dash的账号和密码:admin,能够访问Linux-dash监控页面,如图6-1所示。

3、使用 SELinux 提升系统的安全性

3.1 配置SELinux

(1)管理 SElinux 的工作模式

使用 getenforce 命令查看当前的工作模式,使用 setenforce命令在强制模式和宽容模式间进行切换。

# 查看当前SELinux的工作模式
[root@Lab-06-Task-01 ~]# getenforce
# 默认为强制模式
Enforcing

# 修改SELinux的工作模式为宽容模式
[root@Lab-06-Task-01 ~]# setenforce 0
# 查看修改后模式
[root@Lab-06-Task-01 ~]# getenforce
Permissive

# 恢复SELinux的运行模式为强制模式
[root@Lab-06-Task-01 ~]# setenforce 1
# 查看修改后模式
[root@Lab-06-Task-01 ~]# getenforce
Enforcing

(2)更改 SELinux 的工作模式和运行状态

永久修改工作模式或者关闭 SELinux,需对 SELinux 的配置文件进行修改,修改完成后重新启动操作系统方可生效。

# 查看系统当前SELinux的运行状态
[root@Lab-06-Task-01 ~]# cat /etc/selinux/config | grep '^SELINUX='
SELINUX=enforcing

# 修改配置文件实现SELinux为关闭状态
[root@Lab-06-Task-01 ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
# 重启操作系统
[root@Lab-06-Task-01 ~]# reboot
# 检验状态修改是否生效
[root@Lab-06-Task-01 ~]# getenforce
Disabled
# 修改配置文件实现SELinux为开启状态
[root@Lab-06-Task-01 ~]# sed -i 's/SELINUX=disabled/SELINUX=enforcing/g' /etc/selinux/config
# 重启操作系统
[root@Lab-06-Task-01 ~]# reboot
# 检验状态修改是否生效
[root@Lab-06-Task-01 ~]# getenforce
Enforcing

3.2 安装 SELinux 管理工具

SELinux 常用的管理工具有 chcon、semange 等,本实验步骤选用 semange 工具。semange 工具集成在 policycoreutils-python-utils 软件中,可使用 yum 工具安装。

# 使用yum工具安装policycoreutils-python-utils
[root@Lab-06-Task-01 ~]# yum install -y policycoreutils-python-utils

3.3 依据场景设计SELinux

通过 SELinux 提升用户操作的安全性。

需求描述:

第一:修改系统用户映射到 SELinux 内核用户的类型,实现创建用户时 SELinux 用户类型为 user_u。

# 查看系统默认用户类型
[root@Lab-06-Task-01 ~]# semanage login -l
登录名                  SELinux 用户           MLS/MCS 范围           服务
# 系统默认用户的 SELinux 用户类型为 unconfined_u(未限制)
__default__          unconfined_u         s0-s0:c0.c1023       *
root                 unconfined_u         s0-s0:c0.c1023       *

# 修改系统默认用户的 SELinux 用户类型
[root@Lab-06-Task-01 ~]# semanage login -m -s user_u -r s0 __default__

# 修改后重新验证查看是否配置成功
[root@Lab-06-Task-01 ~]# semanage login -l
登录名                  SELinux 用户           MLS/MCS 范围           服务
# 查看系统默认用户的 SELinux 用户类型已经更改为 user_u(普通用户类型)
__default__          user_u               s0                   *
root                 unconfined_u         s0-s0:c0.c1023       *

# 创建新的用户,并使用新用户进行登录验证
[root@Lab-06-Task-01 ~]# adduser testuser
#设置密码
[root@Lab-06-Task-01 ~]# passwd testuser

# 切换为新用户进行登录,查看该用户的安全上下文信息
[testuser@Lab-06-Task-01 ~]# id -Z
user_u:user_r:user_t:s0

4、使用防火墙进行系统安全防护

4.1配置防火墙

(1)管理防火墙服务

对防火墙服务的管理包括查看防火墙Firewalld服务状态、开启、关闭、重启、重新载入防火墙策略等。

# 查看防火墙Firewalld服务状态
[root@Lab-06-Task-01 ~]# systemctl status firewalld

# 关闭防火墙服务
[root@Lab-06-Task-01 ~]# systemctl stop firewalld

# 开启防火墙服务
[root@Lab-06-Task-01 ~]# systemctl start firewalld

# 重启防火墙服务
[root@Lab-06-Task-01 ~]# systemctl restart firewalld

# 设置防火墙为开机不自启
[root@Lab-06-Task-01 ~]# systemctl disable firewalld

# 设置防火墙为开机自启动
[root@Lab-06-Task-01 ~]# systemctl enable firewalld

# 重新载入防火墙规则
[root@Lab-06-Task-01 ~]# firewall-cmd --reload

(2)配置防火墙日志

对防火墙日志的配置有全局日志配置和规则日志配置两部分。全局日志配置是对防火墙日志规则进行配置,防火墙日志服务由系统rsyslog服务进行管理,日志默认存放在/var/log/firewalld日志文件中,日志文件基于日期时间自动归档。规则日志配置是设置防火墙触发特定防火墙规则时记录日志的方式。

# 全局日志配置
# 实现防火墙对单播网络通信的日志记录。
# 防火墙日志存放目录变更为/var/log/firewalldlog。
# 防火墙日志记录等级调整为所有等级的日志均记录。
# 使用vi命令编辑/etc/firewalld/firewalld.conf文件
[root@Lab-06-Task-01 ~]# vi /etc/firewalld/firewalld.conf
# --------------------/etc/firewalld/firewalld.conf文件--------------------
# firewalld.conf配置文件内容较多,本部分仅显示与防火墙日志配置有关的内容
# 将LogDenied=off改为LogDenied=unicast,实现对单播网络通信的日志记录
LogDenied=unicast
# --------------------/etc/firewalld/firewalld.conf文件--------------------

# 使用vi命令编辑/etc/rsyslog.conf文件
[root@Lab-06-Task-01 ~]# vi /etc/rsyslog.conf
# --------------------/etc/rsyslog.conf文件--------------------
# 在配置文件中增加以下内容,kern.*表示记录所有等级的系统内核产生的日志信息
kern.*                                             /var/log/firewalldlog/loginfo
# --------------------/etc/rsyslog.conf文件--------------------

# 创建防火墙日志存放目录
[root@Lab-06-Task-01 ~]# mkdir /var/log/firewalldlog
# 重新载入配置文件
[root@Lab-06-Task-01 ~]# systemctl reload firewalld
# 重启日志相关服务
[root@Lab-06-Task-01 ~]# systemctl restart rsyslog

# 规则日志配置
# 允许本地主机(172.20.1.36)通过httpd服务访问服务器。
# 实现触发规则的通信的日志记录。
# 设置日志记录的频率为每秒最多3条。
# 根据防火墙规则要求配置
[root@Lab-06-Task-01 ~]# firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=172.20.1.36 service name="http" log level=notice prefix="HTTP" limit value="3/s" accept'

# 重新载入防火墙配置使其生效
[root@Lab-06-Task-01 ~]# firewall-cmd --reload

4.2依据场景设计防火墙

(1)通过防火墙指定端口和协议允许访问。

需求描述:

第一:打开443/TCP端口。

第二:永久打开3690/TCP端口。

第三:永久打开100-500/TCP端口(指定范围内端口全部打开)。

# 打开443/TCP端口
[root@Lab-06-Task-01 ~]# firewall-cmd --add-port=443/tcp

# 永久打开3690/TCP端口
[root@Lab-06-Task-01 ~]# firewall-cmd --add-port=3690/tcp --permanent

# 永久打开100-500/TCP端口(指定范围内端口全部打开)
[root@Lab-06-Task-01 ~]# firewall-cmd --add-port=100-500/tcp --permanent

# 重新载入防火墙配置
[root@Lab-06-Task-01 ~]# firewall-cmd --reload

(2)通过防火墙提升远程连接服务的安全性 。

需求描述:

第一:允许地址172.20.1.36/24内的客户端远程连接服务器,进行远程管理维护。

第二:客户端远程连接服务器时,每分钟最多允许5次远程连接,禁止频繁请求。

# 使用firewall-cmd命令删除默认ssh服务规则
[root@Lab-06-Task-01 ~]# firewall-cmd --permanent --remove-service=ssh

# 使用firewall-cmd命令添加指定地址能够远程访问的规则
[root@Lab-06-Task-01 ~]# firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=172.20.1.36/24 service name="ssh" limit value="5/s" accept'

# 重新载入防火墙配置
[root@Lab-06-Task-01 ~]# firewall-cmd --reload

(3)通过防火墙指定IP地址允许/禁止访问。

需求描述:

第一:允许来自IP地址为172.31.0.11/24的主机的流量通过防火墙。

第二:禁止来自IP地址为172.31.0.21/24的主机的流量通过防火墙。

# 允许来自IP地址为172.31.0.11/24的主机的流量通过防火墙
[root@Lab-13-Task-01 ~]# firewall-cmd --add-source=172.31.0.11 --permanent

# 禁止来自IP地址为172.31.0.21/24的主机的流量通过防火墙
[root@Lab-13-Task-01 ~]# firewall-cmd --remove-source=172.31.0.21 --permanent

# 重新载入防火墙配置
[root@Lab-13-Task-01 ~]# firewall-cmd --reload

(4)通过防火墙提升文件传输服务的安全性 。

需求描述:允许地址范围172.20.1.36/24内的客户端通过主动与被动模式访问FTP服务器。

# 使用firewall-cmd命令添加通过主动模式访问FTP服务器
[root@Lab-06-Task-01 ~]# firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=172.20.1.36/24 port port=20-21 protocol=tcp limit value="10/m" accept'

# 使用firewall-cmd命令添加本地客户端允许访问phpMyAdmin
[root@Lab-06-Task-01 ~]# firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=172.20.1.36/24 port port=9000-9020 protocol=tcp limit value="10/m" accept'

# 重新载入防火墙配置
[root@Lab-06-Task-01 ~]# firewall-cmd --reload

八、实验考核

实验考核分为【实验随堂查】和【实验线上考】两个部分。

实验随堂查:每个实验设置5个考核点。完成实验任务后,按照考核点要求,学生提交实验成果的截图或录屏视频。通过线上考核平台(如课堂派)进行作答。依据提交成果进行评分。

实验线上考:每个实验设置5道客观题。通过线上考核平台(如课堂派)进行作答。系统自动评分。

1、实验随堂查

本实验随堂查设置提交实验成果-5个截图/视频,具体如下:

题目1[文件题]:提交使用“mpstat -P ALL 5 2”命令查看CPU信息的截图;

题目2[文件题]:提交使用yum工具成功安装Apache的截图;

题目3[文件题]:提交在Windows本地客户端使用浏览器访问Linux-dash监控页面的截图;

题目4[文件题]:提交使用SELinux 用户类型为 user_u的账户登录操作系统后,运行“id -Z”查看该用户的安全上下文信息的截图;

题目5[文件题]:提交完成场景设计的防火墙后,运行“firewall-cmd --list-all”查看防火墙运行策略的截图;

2、实验线上考

本实验线上考共5题。