Linux中的防火墙
-
什么是防火墙
-
windows防火墙的设置
-
linux防火墙设置命令
什么是防火墙?
防火墙是一种网络安全设备,它能够:
-
监控和过滤进出网络的流量
-
阻止不安全的连接
-
保护计算机和网络免受未授权访问
-
创建一个安全边界
简单来说,防火墙就像是电脑的"安全门卫",决定谁能进、谁能出。
为什么需要防火墙?
防火墙的重要性:
没有防火墙的系统就像没有锁的房门,任何人都可以随意进出:
-
黑客可以轻易入侵系统
-
恶意程序可以自由访问网络
-
个人数据容易被窃取
-
系统资源可能被滥用
Windows中的防火墙
大多数学生可能更熟悉Windows防火墙:
Windows防火墙的基本操作:
什么是Nginx?
Nginx(发音为"engine-x")是一个高性能的开源Web服务器和反向代理服务器。相比传统的Apache服务器,Nginx具有以下特点:
-
轻量级:占用资源少,内存消耗低
-
高并发:能够同时处理数万个连接
-
高性能:处理静态文件的速度非常快
-
可扩展性:丰富的模块系统
-
反向代理:可以作为前端服务器分发请求
在Windows系统中,Nginx也可以安装使用,同样需要在防火墙中开放相应端口才能正常访问。
Linux中的防火墙
Linux防火墙的发展
Linux系统中的防火墙经历了几次演变:
-
CentOS 5/6 使用的是 iptables 防火墙
-
CentOS 7 开始使用 firewalld 防火墙
==httpd 最后字母d一般都是守护进程,后台进程==
# firewalld名称的由来
firewalld = fire(火) + wall(墙) + d(守护进程)# 守护进程就是在后台持续运行的程序
iptables和firewalld的主要区别:
-
iptables是静态的,修改规则需要重新加载整个规则集
-
firewalld是动态的,可以在运行时修改规则
-
firewalld引入了"区域"的概念,使管理更简单
-
firewalld提供了更友好的命令行工具
防火墙区域(Zone)
firewalld引入了"区域"的概念,类似于不同的安全级别:
常见区域简介:
区域名称 | 信任级别 | 适用场景 |
---|---|---|
trusted | 全信任 | 完全信任的网络,允许所有连接 |
home | 高度信任 | 家庭网络,信任大多数计算机 |
internal | 高度信任 | 内部网络,类似home区域 |
work | 中度信任 | 工作环境,信任部分计算机 |
public | 低信任 | 公共场所,仅信任选择的连接(默认区域) |
external | 低信任 | 外部网络,用于启用伪装模式 |
dmz | 低信任 | 隔离区,有限度地允许外部访问 |
block | 拒绝 | 拒绝所有连接,没有回应 |
drop | 拒绝 | 丢弃所有连接,无任何回应 |
基本命令
查看防火墙状态
# 查看firewalld是否运行 systemctl status firewalld # 查看firewalld服务状态 firewall-cmd --state
启动和停止防火墙
# 启动防火墙 systemctl start firewalld
# 停止防火墙(不推荐) systemctl stop firewalld
# 设置开机自启动 systemctl enable firewalld
# 禁止开机自启动(不推荐) systemctl disable firewalld
查看防火墙配置
# 查看默认区域(default)
firewall-cmd --get-default-zone# 查看活动区域
firewall-cmd --get-active-zones
防火墙规则管理
服务管理
在Linux防火墙中,"服务"是预定义的常用端口和协议组合。
# 查看所有可用服务
firewall-cmd --get-services# 查看当前区域启用的服务
firewall-cmd --zone=public --list-services# 临时添加服务
firewall-cmd --zone=public --add-service=http# 永久添加服务
firewall-cmd --zone=public --add-service=http --permanent# 移除服务
firewall-cmd --zone=public --remove-service=http --permanent
常用服务示例:
-
http (80端口):网站服务
-
https (443端口):安全网站服务
-
ssh (22端口):远程连接
-
ftp (21端口):文件传输
端口管理
除了服务,还可以直接管理具体端口:
# 查看开放的端口
firewall-cmd --zone=public --list-ports# 临时开放单个端口
firewall-cmd --zone=public --add-port=8080/tcp# 永久开放端口范围
firewall-cmd --zone=public --add-port=5000-6000/tcp --permanent# 关闭端口
firewall-cmd --zone=public --remove-port=8080/tcp --permanent
防火墙规则模式
防火墙规则有两种模式:
-
临时模式
-
立即生效
-
重启后失效
-
命令不包含
--permanent
参数
-
-
永久模式
-
写入配置文件
-
重启后仍有效
-
命令包含
--permanent
参数 -
需要执行
firewall-cmd --reload
使规则立即生效
-
# 添加永久规则后重新加载
firewall-cmd --zone=public --add-service=https --permanentfirewall-cmd --reload
简单应用案例
什么是Apache HTTP Server(httpd)?
Apache HTTP Server(通常简称为httpd)是世界上最流行的Web服务器软件之一。它具有以下特点:
-
稳定可靠:经过多年验证的稳定性和可靠性
-
模块化设计:丰富的模块可以扩展功能
-
跨平台:支持几乎所有主流操作系统
-
活跃的社区:大型开发者社区提供支持
-
多功能:支持CGI、PHP、Perl等多种技术
Apache在Linux系统中被广泛使用,特别适合:
-
网站托管
-
动态内容处理
-
虚拟主机
-
身份验证和授权
换源
步骤 1:备份原有的 YUM 源文件 在更换 YUM 源之前,建议先备份系统自带的 YUM 源配置文件,以防需要恢复原配置。
sudo cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
步骤 2:下载国内源的 YUM 配置文件 以下是一些常用的国内镜像源,你可以选择其中一个替换。
-
阿里云源 sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
-
清华大学源 sudo wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.tuna.tsinghua.edu.cn/repo/Centos-7.repo
-
网易源 sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo
-
中科大源 sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.ustc.edu.cn/centos/7/os/x86_64/
步骤 3:清理 YUM 缓存 更换源之后需要清理原有的缓存,以便使用新的源进行软件包更新。
sudo yum clean all
sudo yum makecache
配置Apache Web服务器防火墙
以下是一个简单的Web服务器防火墙配置案例:
# 1. 安装Apache Web服务器
yum install httpd -y# 2. 启动Apache服务
systemctl start httpd
systemctl enable httpd# 3. 配置防火墙允许HTTP访问
firewall-cmd --zone=public --add-service=http --permanent
firewall-cmd --reload# 4. 验证防火墙规则
firewall-cmd --list-all | grep http# 5. 测试访问Web服务器
curl http://localhost
# 也可以从浏览器访问服务器IP地址
默认情况下,Apache使用80端口提供HTTP服务。如果需要配置HTTPS服务,还需要开放443端口:
sudo yum clean all
sudo yum makecache
配置SSH远程连接
保护SSH服务的案例:
# 1. 确认SSH服务状态
systemctl status sshd# 2. 查看SSH是否已在防火墙中开放
firewall-cmd --list-services | grep ssh# 3. 如果没有开放,添加SSH服务
firewall-cmd --zone=public --add-service=ssh --permanent
firewall-cmd --reload
常见问题排查
服务无法访问
如果配置了防火墙规则但服务仍然无法访问:
# 1. 检查服务是否正在运行
systemctl status httpd # 以Apache为例# 2. 确认防火墙是否启用了相应服务或端口
firewall-cmd --list-all# 3. 暂时关闭防火墙测试
systemctl stop firewalld
# 尝试访问服务,如果现在可以访问,说明是防火墙规则问题# 4. 检查SELinux状态(可能也会阻止服务)
getenforce
# 如果显示Enforcing,可以尝试临时关闭SELinux
setenforce 0
规则不生效
如果添加的规则没有生效:
# 1. 确认是否添加了--permanent参数但忘记reload
firewall-cmd --reload# 2. 检查是否在正确的区域添加了规则
firewall-cmd --get-default-zone
firewall-cmd --get-active-zones# 3. 检查防火墙服务是否运行
systemctl status firewalld
安全建议
-
最小权限原则
-
只开放必要的服务和端口
-
定期检查已开放的端口列表
-
关闭不需要的服务
-
-
记录和审计
-
启用防火墙日志记录可疑活动
-
定期审查防火墙规则
-
-
防火墙不是唯一防线
-
结合其他安全措施(强密码、更新补丁等)
-
定期备份重要数据
-
相关文章:

Linux中的防火墙
什么是防火墙 windows防火墙的设置 linux防火墙设置命令 什么是防火墙? 防火墙是一种网络安全设备,它能够: 监控和过滤进出网络的流量 阻止不安全的连接 保护计算机和网络免受未授权访问 创建一个安全边界 简单来说,防火…...

补补表面粗糙度的相关知识(一)
表面粗糙度,或简称粗糙度,是指表面不光滑的特性。这个在机械加工行业内可以说是绝绝的必备知识之一,但往往也是最容易被忽略的,因为往往天天接触的反而不怎么关心,或者没有真正的去认真学习掌握。对于像我一样…...

力扣刷题Day 46:搜索二维矩阵 II(240)
1.题目描述 2.思路 方法1:分别找到搜索矩阵的右、下边界,然后从[0][0]位置开始遍历这部分矩阵搜索目标值。 方法2:学习Krahets佬的思路,从搜索矩阵的左下角开始遍历,matrix[i][j] > target时消去第i行,…...

Kubernetes 集群部署应用
部署 Nginx 应用 命令行的方式 1. 创建 deployment 控制器的 pod # --imagenginx:这个会从 docker.io 中拉取,这个网站拉不下来 # kubectl create deployment mynginx --imagenginx# 使用国内镜像源拉取 kubectl create deployment mynginx --imaged…...
Spark 处理过程转换:算子与行动算子详解
在大数据处理领域,Apache Spark 凭借其强大的分布式计算能力脱颖而出,成为处理海量数据的利器。而 Spark 的核心处理过程,主要通过转换算子和行动算子来实现。本文将深入探讨 Spark 中的转换算子和行动算子,帮助读者更好地理解和应…...

Unity3D仿星露谷物语开发42之粒子系统
1、目标 使用例子系统,实现割草后草掉落的特效。 通过PoolManager获取特效预制体,通过VFXManager来触发特效。 2、配置例子特效 在Hierarchy -> PersistentScene下创建新物体命名为Reaping。 给该物体添加Particle System组件。 配置例子系统参数…...

python 上海新闻爬虫, 东方网 + 澎湃新闻
1. 起因, 目的: 继续做新闻爬虫。我之前写过。此文先记录2个新闻来源。后面打算进行过滤,比如只选出某一个类型新闻。 2. 先看效果 过滤出某种类型的新闻,然后生成 html 页面,而且,自动打开这个页面。 比如科技犯罪…...

[Java实战]Spring Boot 整合 Freemarker (十一)
[Java实战]Spring Boot 整合 Freemarker (十一) 引言 Apache FreeMarker 作为一款高性能的模板引擎,凭借其简洁语法、卓越性能和灵活扩展性,在 Java Web 开发中占据重要地位。结合 Spring Boot 的自动化配置能力,开发者能快速构建动态页面、…...

LeetCode 高频题实战:如何优雅地序列化和反序列化字符串数组?
文章目录 摘要描述题解答案题解代码分析编码方法解码方法 示例测试及结果时间复杂度空间复杂度总结 摘要 在分布式系统中,数据的序列化与反序列化是常见的需求,尤其是在网络传输、数据存储等场景中。LeetCode 第 271 题“字符串的编码与解码”要求我们设…...
为什么拆分高低字节而不直接存入数组
您的代码片段是在将一个16位值()拆分为高字节和低字节:IR_RF_Signal.length temp_low IR_RF_Signal.length & 0xFF; temp_high IR_RF_Signal.length >> 8; 虽然我在 PX4-Autopilot 仓库中没有找到这段确切的代码,…...
python打卡day22@浙大疏锦行
复习日 仔细回顾一下之前21天的内容,没跟上进度的同学补一下进度。 作业: 自行学习参考如何使用kaggle平台,写下使用注意点,并对下述比赛提交代码 一、数据预处理 import pandas as pd import numpy as np import matplo…...

C#游戏开发中的注意事项
目录 一、性能优化:提升游戏运行效率 1. 避免不必要的循环和迭代 2. 减少字符串拼接 3. 利用Unity的生命周期函数 4. 使用对象池(Object Pooling) 二、内存管理:避免内存泄漏和资源浪费 1. 及时释放非托管资源 2. 避免空引用异常 3. 合理使用引用类型和值类型 4. …...

Spring Boot项目(Vue3+ElementPlus+Axios+MyBatisPlus+Spring Boot前后端分离)
下载地址: 前端:https://download.csdn.net/download/2401_83418369/90811402 后端:https://download.csdn.net/download/2401_83418369/90811405 一、前端vue部分的搭建 这里直接看另一期刊的搭建Vue前端工程部分 前端vue后端ssm项目_v…...

Spyglass:在batch/shell模式下运行目标的顶层是什么?
相关阅读 Spyglasshttps://blog.csdn.net/weixin_45791458/category_12828934.html?spm1001.2014.3001.5482 除了可以在图形用户界面(GUI)中运行目标外,使用Batch模式或Shell模式也可以运行目标,如下面的命令所示。 % spyglass -project test.prj -ba…...
没有Mac,我是怎么上传IPA到App Store的?
没有Mac,我是怎么上传IPA到App Store的? 最近赶一个小项目上线,写的是一个Flutter做的App。安卓版本一晚上搞定,iOS上架却差点把人整崩。 不是我技术菜,是实在太麻烦了。最关键的,是我这台Windows笔电根本…...

微服务架构中如何保证服务间通讯的安全
在微服务架构中,保证服务间通信的安全至关重要。服务间的通信通常是通过HTTP、gRPC、消息队列等方式实现的,而这些通信链路可能面临多种安全风险。为了应对这些风险,可以采取多种措施来保证通信安全。 常见的服务间通信风险 1.数据泄露:在服务间通信过程中,敏感数据可能会…...
2025-05-11 项目绩效域记忆逻辑管理
好的,我们可以用一个故事来帮助记忆这些规划绩效域的要素,同时通过逻辑关系来串联它们。以下是一个故事化的版本: 《项目管理的奇幻之旅》 在一个遥远的王国里,有一个勇敢的项目经理名叫小K。小K被国王赋予了一个艰巨的任务&…...

工具篇-Cherry Studio之MCP使用
一、添加MCP 打开Cherry Studio,如果没有可以到官网下载:Cherry Studio 官方网站 - 全能的AI助手 按上面步骤打开同步服务器 1、先去注册ModelScope,申请令牌 2、再打开MCP广场,找到高德MCP 选择工具测试,这里有个高德的api key需要申请 打开如下地址高德开放平…...
DeepSeek“智”造:解锁旅游行业新玩法
目录 一、DeepSeek 简介1.1 DeepSeek 技术原理1.2 DeepSeek 在 AI 领域地位 二、DeepSeek 在旅游攻略生成的应用2.1 生成流程展示2.2 优势分析2.3 实际案例剖析 三、DeepSeek 助力旅游宣传文案创作3.1 文案创作模式3.2 效果评估3.3 创意亮点挖掘 四、DeepSeek 优化游客咨询服务…...
LOJ 6346 线段树:关于时间 Solution
Description 给定序列 a ( a 1 , a 2 , ⋯ , a n ) a(a_1,a_2,\cdots,a_n) a(a1,a2,⋯,an),另有一个存储三元组的列表 L L L. 有 m m m 个操作分两种: add ( l , r , k ) \operatorname{add}(l,r,k) add(l,r,k):将 ( l , r , …...
java 多核,多线程,分布式 并发编程的现状 :从本身的jdk ,到 spring ,到其它第三方。
Java 在多核、多线程和高性能编程领域提供了丰富的现成框架和工具,既有标准库中的并发组件,也有第三方框架。以下是一些关键框架及其应用场景的总结:便于后面我们站在巨人的肩膀上,继续前行 一、Java 标准库中的多线程框架 Execut…...
httpclient请求出现403
问题 httpclient请求对方服务器报403,用postman是可以的 解决方案: request.setHeader( “User-Agent” ,“Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:50.0) Gecko/20100101 Firefox/50.0” ); // 设置请求头 原因: 因为没有设置为浏览器形式&#…...

Python 运维脚本
1、备份文件 import os import shutil# 定义配置文件目录和备份目录的路径 config_dir "/root/python/to/config/files/" backup_dir "/root/python/to/backup/"# 遍历配置文件目录中的所有文件 for filename in os.listdir(config_dir):# 如果文件名以…...
MySQL数据库常见面试题之三大范式
写在前面 此文章大部分不会引用最原始的概念,采用说人话的方式。 面试题:三大范式是什么?目的是什么?必须遵循吗? 假设有一张表(学号,姓名,课程,老师) 是…...

大模型项目:普通蓝牙音响接入DeepSeek,解锁语音交互新玩法
本文附带视频讲解 【代码宇宙019】技术方案:蓝牙音响接入DeepSeek,解锁语音交互新玩法_哔哩哔哩_bilibili 目录 效果演示 核心逻辑 技术实现 大模型对话(技术: LangChain4j 接入 DeepSeek) 语音识别(…...
C/C++复习--C语言隐式类型转换
目录 什么是隐式类型转换?整型提升 规则与示例符号位扩展的底层逻辑 算术转换 类型层次与转换规则混合类型运算的陷阱 隐式转换的实际应用与问题 代码示例分析常见错误与避免方法 总结与最佳实践 1. 什么是隐式类型转换? 隐式类型转换是C语言在编译阶段…...
Pandas 时间处理利器:to_datetime() 与 Timestamp() 深度解析
Pandas 时间处理利器:to_datetime() 与 Timestamp() 深度解析 在数据分析和处理中,时间序列数据扮演着至关重要的角色。Pandas 库凭借其强大的时间序列处理能力,成为 Python 数据分析领域的佼佼者。其中,to_datetime() 函数和 Ti…...

单链表设计与实现
01. 单链表简介 在数据结构中,单链表的实现可以分为 带头结点 和 不带头结点 两种方式,这里我们讨论第二种方式。 头结点:链表第一个节点不存实际数据,仅作为辅助节点指向首元节点(第一个数据节点)。头指…...
JDS-算法开发工程师-第9批
单选题 print(fn.__default__) 哪一个不是自适应学习率的优化算法 (选项:Adagrad,RMSprop,Adam,Momentum,动量法在梯度下降的基础上,加入了“惯性”概念,通过累积历史的梯度更新来加速收敛&…...
Git标签删除脚本解析与实践:轻松管理本地与远程标签
Git 标签删除脚本解析与实践:轻松管理本地与远程标签 在 Git 版本控制系统中,标签常用于标记重要的版本节点,方便追溯和管理项目的不同阶段。随着项目的推进,一些旧标签可能不再需要,此时就需要对它们进行清理。本文将通过一个完整的脚本,详细介绍如何删除本地和远程的 …...