当前位置: 首页 > news >正文

Linux学习——管理网络安全(二十一)

一、管理服务器防火墙(firewalld)

RHEL 默认使用 firewalld 作为防火墙管理工具,它通过 “区域(zone)” 和 “服务(service)” 的概念简化规则配置,支持动态更新规则而无需重启服务。

1.1 防火墙基础操作

首先需要了解 firewalld 的基本状态和常用命令:

查看防火墙运行状态:

sudo systemctl status firewalld

若防火墙未启动,执行以下命令启动并设置开机自启:

sudo systemctl start firewalld
sudo systemctl enable firewalld

查看当前默认区域(默认区域是规则的主要应用对象):

sudo firewall-cmd --get-default-zone

查看当前区域的所有规则(包括开放的端口和服务):

sudo firewall-cmd --list-all

1.2 配置防火墙规则(核心操作)

开放指定服务

firewalld 预定义了常见服务(如 ssh、http、ftp)的端口配置,直接开放服务比手动指定端口更便捷。

例如,允许 HTTP 服务通过默认区域:

# 临时开放(重启防火墙后失效)
sudo firewall-cmd --add-service=http# 永久开放(需重新加载规则生效)
sudo firewall-cmd --add-service=http --permanent# 重新加载规则,使永久配置生效
sudo firewall-cmd --reload

验证服务是否已开放:

sudo firewall-cmd --list-services
开放指定端口

对于非预定义服务,需直接开放端口(需指定协议,如 tcp 或 udp)。

例如,开放 TCP 8080 端口(临时 + 永久):

# 临时开放
sudo firewall-cmd --add-port=8080/tcp# 永久开放
sudo firewall-cmd --add-port=8080/tcp --permanent# 重新加载规则
sudo firewall-cmd --reload

验证端口是否已开放:

sudo firewall-cmd --list-ports
限制特定 IP 访问

为提升安全性,可限制只有指定 IP 或网段能访问服务。

例如,仅允许 192.168.1.0/24 网段访问 SSH 服务:

sudo firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" service name="ssh" accept' --permanent# 重新加载规则
sudo firewall-cmd --reload
删除规则

若需移除已配置的规则,将--add替换为--remove即可:

# 永久删除HTTP服务开放规则
sudo firewall-cmd --remove-service=http --permanent# 永久删除8080/tcp端口开放规则
sudo firewall-cmd --remove-port=8080/tcp --permanent# 重新加载规则
sudo firewall-cmd --reload

1.3 工作区域管理

firewalld 的 “区域” 本质是预设的规则集合,不同区域对应不同的安全级别(如 public、internal、dmz 等)。可根据服务器网络环境切换区域:

查看所有可用区域:

sudo firewall-cmd --get-zones

切换默认区域为 internal(适合内部网络,开放更多服务):

sudo firewall-cmd --set-default-zone=internal --permanent
sudo firewall-cmd --reload

为特定网卡指定区域(如为 ens33 网卡应用 dmz 区域):

sudo firewall-cmd --zone=dmz --add-interface=ens33 --permanent
sudo firewall-cmd --reload

二、控制 SELinux 端口标记

SELinux(安全增强型 Linux)通过强制访问控制(MAC)机制限制进程权限,其中 “端口标记” 是控制网络服务端口访问的核心手段 —— 只有为端口分配正确的 SELinux 类型(如 http_port_t、ssh_port_t),对应服务才能正常监听该端口。

2.1 SELinux 基础状态

首先查看 SELinux 当前模式(enforcing、permissive 或 disabled):

getenforce

或查看详细配置:

sestatus

注意:RH134 课程推荐使用 enforcing 模式(强制生效),如需临时切换为宽容模式(仅日志记录不阻止操作),执行sudo setenforce 0,切换回强制模式执行sudo setenforce 1

2.2 查看端口 SELinux 标记

每个网络服务都有默认的 SELinux 端口类型,例如:

  • SSH 服务默认使用 ssh_port_t(对应端口 22)
  • HTTP 服务默认使用 http_port_t(对应端口 80、443)

查看某服务的默认端口标记:

# 查看HTTP服务的SELinux端口类型及关联端口
semanage port -l | grep http_port_t

输出示例:

http_port_t                    tcp      80, 81, 443, 488, 8008, 8009, 8443, 9000

2.3 为非默认端口添加 SELinux 标记

当服务使用非默认端口时(如 HTTP 服务使用 8080 端口),需手动为该端口添加对应的 SELinux 标记,否则 SELinux 会阻止服务监听端口。

步骤如下:

1,查看服务所需的 SELinux 端口类型(如 HTTP 服务需要 http_port_t):

semanage port -l | grep http

2,为 8080 端口添加 http_port_t 标记(永久生效):

sudo semanage port -a -t http_port_t -p tcp 8080

3,验证端口标记是否添加成功:

semanage port -l | grep http_port_t

若输出包含 8080,则表示配置成功:

http_port_t                    tcp      8080, 80, 81, 443, 488, 8008, 8009, 8443, 9000

2.4 删除错误的端口标记

若需移除已添加的端口标记,将-a(添加)替换为-d(删除):

sudo semanage port -d -t http_port_t -p tcp 8080

2.5 解决 SELinux 相关的端口访问问题

当服务启动失败或无法访问端口时,若防火墙规则已正确配置,很可能是 SELinux 端口标记问题。可通过以下步骤排查:

1,查看 SELinux 审计日志(记录被阻止的操作):

sudo grep "SELinux is preventing" /var/log/audit/audit.log

2,若日志中提示 “bind to port” 相关的拒绝信息,确认端口是否已添加正确标记:

semanage port -l | grep <端口号>

3,若未添加,按 2.3 的步骤为端口添加正确标记即可。

三、总结

1,防火墙(firewalld)通过区域和规则控制网络流量进出,是第一道防线;

2,SELinux 通过端口标记限制服务可使用的端口,是第二道强制访问控制防线。


文章转载自:

http://fNTMDaGI.rdpps.cn
http://2XOerYvv.rdpps.cn
http://NZzUgarN.rdpps.cn
http://Nk8ysUoG.rdpps.cn
http://qMmxnOjb.rdpps.cn
http://3ogMjZg3.rdpps.cn
http://MaoGLeW8.rdpps.cn
http://Er7IzIVQ.rdpps.cn
http://kw6nuXKZ.rdpps.cn
http://q03q1SzD.rdpps.cn
http://cSGFiZRr.rdpps.cn
http://qxOfrY8S.rdpps.cn
http://5vj9t6qQ.rdpps.cn
http://YlvoNGsE.rdpps.cn
http://l9WLtAGu.rdpps.cn
http://vv8V5Smy.rdpps.cn
http://aUrcL5DY.rdpps.cn
http://8t3F6Z3S.rdpps.cn
http://hTE38WN0.rdpps.cn
http://qB6EHUrB.rdpps.cn
http://EctzI5pl.rdpps.cn
http://2QhSO27M.rdpps.cn
http://hgzSmzsu.rdpps.cn
http://0FuiSuFL.rdpps.cn
http://CcyDIQYC.rdpps.cn
http://l9sL0dlw.rdpps.cn
http://9nCfhYTk.rdpps.cn
http://T8ddXJEi.rdpps.cn
http://fq4q1rrN.rdpps.cn
http://vKwnJx10.rdpps.cn
http://www.dtcms.com/a/375857.html

相关文章:

  • 平衡车 -- PID
  • 【ComfyUI】Flux Krea 微调完美真实照片生成
  • dp类相关问题(1):区间dp
  • TensorFlow 2.x 核心 API 与模型构建:从入门到实践
  • 华清远见25072班网络编程学习day2
  • 【论文写作】--网络与信息安全顶刊顶会
  • 【人工智能99问】如何基于QWen3进行LoRA微调?(38/99)
  • JAVA Predicate
  • 自动驾驶中的传感器技术41——Radar(2)
  • Netty HandlerContext 和 Pipeline
  • Stuns in Singapore!中新赛克盛大亮相ISS World Asia 2025
  • 开始 ComfyUI 的 AI 绘图之旅-LoRA(五)
  • 字符函数和字符串函数 last part
  • win安装多个mysql,免安装mysql
  • 开源项目_强化学习股票预测
  • Shell 脚本基础:从语法到实战全解析
  • Nginx如何部署HTTP/3
  • 解一元三次方程
  • A股大盘数据-20250909分析
  • 05-Redis 命令行客户端(redis-cli)实操指南:从连接到返回值解析
  • shell函数+数组+运算+符号+交互
  • 群晖Lucky套件高级玩法-——更新证书同步更新群晖自带证书
  • 照明控制设备工程量计算 -图形识别超方便
  • Matlab通过FFT快速傅里叶变换提取频率
  • iis 高可用
  • 有趣的数学 贝塞尔曲线和毕加索
  • 基于STM32的智能宠物小屋设计
  • STM32之RS485与ModBus详解
  • DCDC输出
  • GitHub 项目提交完整流程(含常见问题与解决办法)