linux-网络管理-防火墙配置
Linux 网络管理:防火墙配置
1. 防火墙概述
防火墙是保护计算机系统和网络免受未经授权访问和网络攻击的安全机制。Linux 系统中,防火墙通过控制进入和离开网络的数据包,实现网络流量的过滤和管理。
Linux 上的防火墙配置工具有多种,其中最为常用的是 iptables 和现代 firewalld,以及一些其他如 ufw 这样的简化管理工具。
2. Linux 防火墙的基本原理
防火墙的基本工作原理是根据设定的规则对网络数据包进行过滤和处理,规则通常包括以下几部分:
- 源地址:数据包的来源地址,可以是 IP 或网络段。
- 目标地址:数据包的目的地址。
- 协议类型:如 TCP、UDP、ICMP 等。
- 源端口和目标端口:与传输协议相关联的端口号,如 HTTP 服务的 80 端口。
防火墙通过链(Chains)和规则(Rules)来定义如何处理数据包:
- 链(Chains):防火墙规则的处理路径,通常分为三类:
- INPUT:进入系统的数据包(例如从外部网络到本地主机)。
- FORWARD:转发通过本地系统的数据包(例如路由设备的功能)。
- OUTPUT:从本地系统发送出去的数据包。 - 规则(Rules):每个链上可以设置多条规则,定义了如何处理特定的数据包。常见的动作包括:
- ACCEPT:允许数据包通过。
- DROP:丢弃数据包,不给出响应。
- REJECT:拒绝数据包并返回错误信息。
3. iptables:经典的防火墙工具
iptables 是 Linux 内核中的网络数据包过滤框架,提供了强大的防火墙功能,主要管理 IPv4 的防火墙规则。
3.1 iptables 基本语法
iptables 命令的基本格式如下:
iptables [选项] 链名 [条件匹配] -j 动作
- 链名:指定在哪个链上操作(如 INPUT、FORWARD、OUTPUT)。
- 条件匹配:指定数据包匹配条件,如源地址、目标地址、协议等。
- 动作:定义匹配规则后的处理动作,如 ACCEPT、DROP、REJECT。
3.2 常用 iptables 命令
- 查看当前规则
iptables -L
- 允许某个端口的流量
允许 80 端口的 HTTP 流量:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
- 拒绝特定 IP 地址
阻止来自 192.168.1.100 的所有流量:
iptables -A INPUT -s 192.168.1.100 -j DROP
- 删除特定规则
假设想删除特定的规则,可以使用 -D 参数:
iptables -D INPUT -p tcp --dport 80 -j ACCEPT
- 保存规则
iptables 的规则默认在系统重启后会丢失,因此需要手动保存。根据不同的发行版,保存命令可能不同:
在基于 Debian 系列的系统中,可以通过 iptables-save 命令保存规则:
iptables-save > /etc/iptables/rules.v4
然后,通过 iptables-restore 恢复:
iptables-restore < /etc/iptables/rules.v4
在基于 CentOS 或 RHEL 的系统中,保存规则可以使用以下命令:
service iptables save
3.3 iptables 的表和链
iptables 使用不同的表来管理不同类型的防火墙规则,每个表包含多个链:
-
filter 表:默认表,管理最常见的输入、输出和转发规则。常用链包括:
- INPUT:处理进入本机的数据包。
- FORWARD:处理通过本机转发的数据包。
- OUTPUT:处理本机发送的数据包。 -
nat 表:处理与网络地址转换相关的规则。常用链包括:
- PREROUTING:在数据包进入路由前处理。
- POSTROUTING:在数据包路由后处理。
- OUTPUT:处理本地生成的需要 NAT 的数据包。 -
mangle 表:用于修改数据包的服务类型、TTL 等特性。
例如,配置 NAT 地址转换时:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
4. firewalld:现代防火墙管理工具
firewalld 是 iptables 的一个更高级的替代品,提供了动态防火墙管理。它简化了防火墙规则的管理,并支持区域概念,允许根据网络接口或源地址设置不同的防火墙策略。
4.1 firewalld 的基本概念
- 区域(Zones):每个网络接口或源地址可以分配到一个区域,区域定义了不同的信任级别。例如,
public区域默认会拒绝大部分的入站流量,而trusted区域则允许所有流量。 - 服务(Services):
firewalld通过预定义的服务(如 HTTP、SSH)来简化规则管理。服务包含了默认端口、协议的定义,用户可以通过启用或禁用服务来管理网络访问。 - 即时与永久规则:
firewalld允许即时应用规则(不重启生效),并区分永久规则和即时规则。永久规则在重启系统后依然有效。
4.2 firewalld 基本操作
- 查看防火墙状态
sudo firewall-cmd --state
- 查看当前区域和规则
sudo firewall-cmd --get-active-zones
sudo firewall-cmd --list-all
- 启用或禁用服务
例如,启用 HTTP 服务:
sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --reload
这里 --permanent 使规则永久生效,--reload 用于重新加载配置。
- 添加端口规则
除了预定义的服务,用户也可以通过端口号直接添加规则。例如,允许 8080 端口的流量:
sudo firewall-cmd --add-port=8080/tcp --permanent
sudo firewall-cmd --reload
- 删除规则
删除某个服务或端口规则:
sudo firewall-cmd --remove-service=http --permanent
sudo firewall-cmd --reload
4.3 区域配置
每个网络接口可以分配到不同的区域,默认情况下,所有接口分配到 public 区域。可以使用以下命令查看接口所属区域:
sudo firewall-cmd --get-active-zones
更改接口所属区域:
sudo firewall-cmd --zone=trusted --change-interface=eth0 --permanent
sudo firewall-cmd --reload
5. ufw:简化的防火墙管理工具
ufw(Uncomplicated Firewall)是 Ubuntu 系统上简化防火墙管理的工具,它是 iptables 的前端工具,旨在提供更加用户友好的命令来管理防火墙。
5.1 ufw 基本命令
- 启用防火墙
sudo ufw enable
- 查看防火墙状态
sudo ufw status
- 允许某个服务或端口
允许 HTTP 服务:
sudo ufw allow http
允许 22 端口的 SSH 流量:
sudo ufw allow 22/tcp
- 拒绝特定 IP 地址的连接
sudo ufw deny from 192.168.1.100
- 禁用防火墙
sudo ufw disable
5.2 配置文件管理
ufw 的配置文件位于 /etc/ufw/ufw.conf,可以在这里启用或禁用防火墙启动时自动加载。
6. 防火墙策略配置示例
假设我们要为一台 Web 服务器配置防火墙,目标是允许 HTTP(80)和 HTTPS(443)流量,同时阻止其他所有入站流量。我们可以使用 iptables 和 firewalld 配置如下:
使用 iptables 配置:
iptables -P INPUT DROP # 默认丢弃所有入站流量
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT # 允许所有出站流量
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT # 允许现有连接
iptables -A INPUT -p tcp --dport 80 -j ACCEPT # 允许 HTTP 流量
iptables -A INPUT -p tcp --dport 443 -j ACCEPT # 允许 HTTPS 流量
使用 firewalld 配置:
sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --add-service=https --permanent
sudo firewall-cmd --reload
7. 总结
Linux 的防火墙工具如 iptables、firewalld 和 ufw 提供了灵活强大的网络安全管理手段。通过配置和管理防火墙规则,可以有效控制网络流量,防止不必要的外部访问,同时保护系统免受潜在的网络攻击。不同工具适合不同场景,iptables 提供了细粒度的控制,firewalld 提供了动态防火墙管理,而 ufw 则简化了配置过程。
相关文章:
linux-网络管理-防火墙配置
Linux 网络管理:防火墙配置 1. 防火墙概述 防火墙是保护计算机系统和网络免受未经授权访问和网络攻击的安全机制。Linux 系统中,防火墙通过控制进入和离开网络的数据包,实现网络流量的过滤和管理。 Linux 上的防火墙配置工具有多种&#x…...
【springboot】实现文件上传和下载
目录 1. 新建一个springboot项目2. 配置文件application.propertiesapplication.yml 3. 控制类实现文件上传和下载4. 测试 1. 新建一个springboot项目 新建一个springboot项目,选择web,默认即可. 主要pom配置文件如下: <parent><gr…...
【RabbitMQ】RabbitMQ如何保证数据的可靠性,RabbitMQ如何保证数据不丢失,数据存储
【RabbitMQ】RabbitMQ如何保证数据的可靠性,RabbitMQ如何保证数据不丢失,数据存储 RabbitMQ通过一系列机制来确保数据(即消息)在传输和处理过程中不丢失。这些机制主要包括以下几个方面: 1. 消息持久化 持久化消息&a…...
Redis 篇-初步了解 Redis 持久化、Redis 主从集群、Redis 哨兵集群、Redis 分片集群
🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 分布式缓存概述 2.0 Redis 持久化 2.1 RDB 持久化 2.1.1 RDB 的 fork 原理 2.2 AOF 持久化 2.3 RDB 与 AOF 之间的区别 3.0 Redis 主从集群 3.1 搭建主从集群 3.2…...
算法基础-二分查找
左闭右闭 [ left,right ] [1,1]可以 while( left < right ) if( a[mid] > target ) right mid - 1 else if( a[mid] < target ) left mid 1 左闭右开 [ left,right ) …...
LeetCode:1184. 公交站间的距离 一次遍历数组,复杂度O(n)
1184. 公交站间的距离 today 1184 公交站间的距离 题目描述 环形公交路线上有 n 个站,按次序从 0 到 n - 1 进行编号。我们已知每一对相邻公交站之间的距离,distance[i] 表示编号为 i 的车站和编号为 (i 1) % n 的车站之间的距离。 环线上的公交车都…...
牛客周赛 Round 60(A,B,C,D,E,F)
比赛链接 官方题解 这场基本都是数学题,官方题解讲的还不错,F能听懂的话其实不难。E是一个球盒模型的组合问题,F是化简递推式,成环时的解决方法很不错。 A 困难数学题 思路: 一个数异或两次结果为 0 0 0ÿ…...
vueCropper裁剪图片(不模糊)以及记录使用方法
需求:上传限定比例的图片。前端框架是vue3 element plus。 问题:使用vueCropper后比例固定。但是上传后的图片很模糊 vueCropper官网 解决办法 vueCropper中有一个full和high两个参数,记得开启 const options: any reactive({img: , // 原…...
【HTML】HTML页面和常见标签
文章目录 什么是前端HTML 页面编写如何快速生成代码框架常见标签注释标签标题标签段落标签换行标签格式化标签 什么是前端 Web 前端,用来直接给以用户呈现的一个一个的网页。一个软件通常是由 后端前端 完成的 后端:通过 Java/C等语言,完成相…...
鸿蒙 ArkUI组件二
ArkUI组件(续) 文本组件 在HarmonyOS中,Text/Span组件是文本控件中的一个关键部分。Text控件可以用来显示文本内容,而Span只能作为Text组件的子组件显示文本内容。 Text/Span组件的用法非常简单和直观。我们可以通过Text组件来显…...
PHP 实现 redis 分布式锁
分布式锁 如果是强一致性保证,在获取锁或者失败后引入数据库存储扫表、mq 等方式进行补偿 如果可以容忍少量异常就不需要考虑了 像这里的代码,没吃建立一个链接铺货,性能损耗时间延迟也是很大的,也可在一块代码中进行服务&…...
vue3 自定义el-tree树形结构样式
这里样式设置主要用到了 windcss 实现效果 模拟数据 这里也可以用模拟的数据,下面用的是后端请求的真实数据 [{"id": 5,"rule_id": 0,"status": 1,"create_time": "2019-08-11 13:36:09","update_time": "…...
【网络安全】分享4个高危业务逻辑漏洞
未经许可,不得转载。 文章目录 正文逻辑漏洞1逻辑漏洞2逻辑漏洞3逻辑漏洞4其它正文 该目标程序是一家提供浏览器服务的公司,其核心功能是网页抓取和多账户登录操作,类似于浏览器中的隐身模式,但更加强大和高效。通过该平台,用户可以轻松管理并同时运行数百个隐身浏览器实…...
【装机教程】Visual Studio Community 2019离线安装
Visual Studio 2019离线安装 由于现在 官网只支持在线安装最新版的Visual Studio 2022,因此 Visual Studio Community 2019需要离线安装。 下载离线安装镜像,并解压。点击vs_setup.exe运行。 选择安装位置,四处位置需要确定。 选择语言包&…...
NumPy 线性代数
NumPy 线性代数 NumPy 是 Python 中用于科学计算的核心库之一,它提供了一个强大的数学函数库,特别是在处理大型多维数组和矩阵时表现出色。线性代数是 NumPy 的一个重要组成部分,它包含了大量的函数和运算符,用于执行矩阵和向量的…...
家装材料之水泥,最容易被忽视的基础材料!
由于水泥在装修中扮演辅料的角色,很多业主往往会忽视它们的质量。事实上,装修无小事,不能抱有抓大放小的态度。 更何况水泥是装修工程的基础材料,在家居装修中,地面、墙面的找平以及瓷砖、大理石的铺贴&#…...
openstack之keystone介绍
功能 keystone在OpenStack中负责: 管理:用户、租户和权限; 认证:组件相互访问的身份认证; 鉴权:提供 RBAC(Role Based Access Control) 权限体系; 服务注册与发现&#…...
【图像拼接】基于SIFT/SURF特征算法的图像拼接,matlab实现
博主简介:matlab图像代码项目合作(扣扣:3249726188) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 本次案例是基于SIFT/SURF特征算法的图像拼接,用matlab实现。 一、案例背景和算法介…...
《微信小程序实战(2) · 组件封装》
📢 大家好,我是 【战神刘玉栋】,有10多年的研发经验,致力于前后端技术栈的知识沉淀和传播。 💗 🌻 CSDN入驻不久,希望大家多多支持,后续会继续提升文章质量,绝不滥竽充数…...
LaTex2024 下载安装运行HelloWorld—全流程笔记
LaTex安装教程🚀 这是读博之后写的第一篇文章,来到新课题组之后,新课题组主要是用Latex,在之前的课题组,还是比较常用world,所以就研究了一下Latex的下载和安装,虽然网上已经有了不少教程&#…...
浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)
✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...
变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析
一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...
智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql
智慧工地管理云平台系统,智慧工地全套源码,java版智慧工地源码,支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求,提供“平台网络终端”的整体解决方案,提供劳务管理、视频管理、智能监测、绿色施工、安全管…...
连锁超市冷库节能解决方案:如何实现超市降本增效
在连锁超市冷库运营中,高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术,实现年省电费15%-60%,且不改动原有装备、安装快捷、…...
页面渲染流程与性能优化
页面渲染流程与性能优化详解(完整版) 一、现代浏览器渲染流程(详细说明) 1. 构建DOM树 浏览器接收到HTML文档后,会逐步解析并构建DOM(Document Object Model)树。具体过程如下: (…...
第25节 Node.js 断言测试
Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试,通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...
视频字幕质量评估的大规模细粒度基准
大家读完觉得有帮助记得关注和点赞!!! 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用,因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型(VLMs)在字幕生成方面…...
OPENCV形态学基础之二腐蚀
一.腐蚀的原理 (图1) 数学表达式:dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一,腐蚀跟膨胀属于反向操作,膨胀是把图像图像变大,而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列,以便知晓哪些列包含有价值的数据,…...
AI病理诊断七剑下天山,医疗未来触手可及
一、病理诊断困局:刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断",医生需通过显微镜观察组织切片,在细胞迷宫中捕捉癌变信号。某省病理质控报告显示,基层医院误诊率达12%-15%,专家会诊…...
