从零开始的云计算生活——第十四天,困难重重,安全管理。

发布于:2025-05-29 ⋅ 阅读:(19) ⋅ 点赞:(0)

一·故事背景

在前面的基本无操作内容后,来到了大头内容,安全管理!其中的防火墙相关的内容更是重中之重,要好好掌握,熟练运用。

二·SELinux安全上下文

1·SELinux 简介

a. SELinux(Security-Enhanced Linux)

      是Linux内核的强制访问控制(MAC)安全子系统,由美国国家安全局(NSA)与开源社区合作开发。其核心目标是通过精细化权限管理,提升系统安全性,防止恶意程序或用户越权访问敏感资源。

b.核心思想

   最小权限原则:进程/用户只能访问其明确需要的资源。

   基于标签的访问控制:所有资源(文件、端口、进程)被赋予安全上下文(Security Context)。

c.工作模式

Enforcing(强制模式)​
严格执行策略,拒绝违规操作并记录日志(默认生产环境模式)

Permissive(宽容模式)​
仅记录违规行为但不阻止,用于策略调试或兼容性测试

Disabled(禁用模式)​
完全关闭 SELinux,系统回归传统 DAC 权限控制(不推荐,降低安全性)

2·基础操作命令

① 查看SELinux状态

getenforce# 查看当前模式
sestatus# 详细状态(模式/策略类型)

② 切换工作模式

setenforce 0# 切换到Permissive模式
setenforce 1# 切换到Enforcing模式

注意:setenforce仅临时生效,永久修改需编辑 /etc/selinux/config 文件。

3·安全上下文(Security Context)

① 查看上下文

ls -Z /var/www/html # 查看文件/目录的上下文
ps -Z -C httpd# 查看进程的上下文

② 修改上下文

chcon命令
选项 说明 示例消息
-t, --type TYPE 设置安全上下文的类型部分 已将 file.txt 的类型更改为 httpd_sys_content_t
-u, --user USER 设置安全上下文的用户部分 已将 file.txt 的用户更改为 system_u
-r, --role ROLE 设置安全上下文的角色部分 已将 file.txt 的角色更改为 object_r
--reference=FILE 使用指定文件的安全上下文 已从 ref_file 复制上下文到 target_file
-R, --recursive 递归处理文件和目录 已递归更改 dir/ 及其内容的上下文
-h, --help 显示帮助信息 显示帮助菜单
-v, --verbose 显示操作详情 正在更改 file.txt 的安全上下文
--version 显示版本信息 chcon (GNU coreutils) 8.32
semanage 命令
子命令/选项 用途说明 常用选项 示例消息/操作
semanage login 管理SELinux用户与Linux账户的映射关系 -a (添加)、-d (删除)、-m (修改) 将用户 user1 映射到 SELinux 用户 staff_u
semanage user 管理SELinux用户及其角色和权限 -a、-d、-R (角色)、-L (限制) 创建新SELinux用户 web_user 并分配角色 httpd_role
semanage port 管理网络端口与SELinux类型的绑定关系 -a、-d、-t (类型)、-p (协议) 将TCP端口 8080 绑定到 http_port_t 类型
semanage interface 管理网络接口与SELinux类型的绑定关系 -a、-d、-t 将接口 eth1 绑定到 netif_t 类型
semanage module 管理SELinux策略模块(启用/禁用) -a、-d、-e (启用)、-D (禁用) 启用策略模块 my_custom_module
semanage fcontext 管理文件/目录的默认SELinux上下文规则 -a、-d、-t、-s (范围) 添加规则:/webapps(/.*)? 的上下文类型为 httpd_sys_content_t
semanage boolean 管理SELinux布尔值(开关策略功能) -1 (查看)、--on、--off 启用布尔值 httpd_can_network_connect
semanage dontaudit 管理dontaudit规则(是否记录特定访问拒绝事件) --on、--off 关闭对 sshd 的 dontaudit 规则
-h / --help 显示帮助信息 - 显示子命令的帮助菜单
-v / --verbose 显示详细操作信息 - 显示添加端口 8080 的详细过程
-n / --noheading 输出时隐藏列标题 - 仅显示端口列表数据,无标题行

三·Linux防火墙-Firewalld

1·概述

按表现形式划分:

软件防火墙: 集成在系统内部,Linux系统: iptables、firewalld、ufw; windows系统下: windows defender

硬件防火墙: 华为防火墙、思科防火墙、奇安信防火墙、深信服防火墙等

按技术划分:

包过滤防火墙: 检查数据包的源IP、目的IP、源端口、目的端口、TCP的syn控制位

七层防火墙:除了上述检查外,还会检查数据内容

防火墙的作用:

阻止来自网络外部的攻击、进行流量控制

2、 Linux防火墙

① 防火墙结构

用户态:

iptables: 使用iptables命令对防火墙规则进行管理,必须深度理解网络技术和四表五链,对于初                    学者或者网络技术不达标的人员不友好

firewalld:使用firewall-cmd命令对防火墙进行管理,采用的是区域划分的形式。不需要连接底层                     的四表五链,对于初学者比较友好

ufw: 使用ufw命令对防火墙进行管理,命令简单易懂。(默认未安装)

内核态:

四表: 从内核->用户的顺序: raw -> mangle -> nat -> filter

五链: input、output、forward、prerouting、postrouting

② firewalld防火墙

区域分类,功能

九大区域:

block: 阻塞区域 (拒绝任何流量,但给出回应)

dmz: 非军事化管理区域(内部的服务器放于该区域)

drop: 丢弃区域(丢弃一切流量,不给出任何回应)

external: 外部区域 (连接外部网络,例如: internet网络

home: 家庭区域

internal: 内部区域 (连接内部网络)

public:公共区域,默认区域

trusted: 完全信任区域
work: 工作区域

命令分类:
查看命令

firewall-cmd --list-all --zone=public    #查看指定区域的详细信息

添加命令

 firewall-cmd --add-port=80/tcp --zone=public #添加端口到指定区域

修改命令

firewall-cmd --change-interface=ens224 --zone=internal #修改网络接口所属区域

删除命令

firewall-cmd --remove-port=80/tcp --zone=public #删除端口到指定区域

保存规则

firewall-cmd --runtime-to-permanent        #一次性保存所有规则

案例:①禁止外部主机ping本机

本机ip:192.168.71.132

②允许外部主机访问本机的http服务

本机ip:192.168.71.132 ens160

#######环境配置 开始#########
##本机安装httpd服务


#改变SElinux的规则
[root@localhost ~]# setenforce 0
[root@localhost ~]# yum install -y httpd


##启动httpd服务
[root@localhost ~]# systemctl start httpd


##修改httpd服务的监听IP
[root@localhost ~]# vim /etc/httpd/conf/httpd.conf
Listen 192.168.80.128:80


##重启httpd服务
[root@localhost ~]# systemctl restart httpd


##验证服务监听状态
[root@localhost ~]# netstat -naptu | grep :80
tcp00 192.168.80.128:800.0.0.0:* LISTEN5884/httpd 


#######环境配置 结束#########
#防火墙配置
[root@localhost ~]# firewall-cmd --change-interface=ens34 --zone=dmz
success


##客户端验证访问##
[root@localhost ~]# curl 192.168.80.128
curl: (7) Failed connect to 192.168.80.128:80; 拒绝连接
##发现无法访问###


#服务端查看dmz区域信息
[root@localhost ~]# firewall-cmd --list-all --zone=dmz

#发现没有放心http服务
#配置dmz区域http服务放行策略
[root@localhost ~]# firewall-cmd --add-service=http --zone=dmz 
success
 

总结

今日的重点是firewall的操作,但是目前最实用的还是明日的iptables,重点是Iptables的运用,明日会继续更新。