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的下载和安装,虽然网上已经有了不少教程&#…...
在软件开发中正确使用MySQL日期时间类型的深度解析
在日常软件开发场景中,时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志,到供应链系统的物流节点时间戳,时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库,其日期时间类型的…...
基于大模型的 UI 自动化系统
基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...
使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...
MongoDB学习和应用(高效的非关系型数据库)
一丶 MongoDB简介 对于社交类软件的功能,我们需要对它的功能特点进行分析: 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具: mysql:关系型数据库&am…...
基于Uniapp开发HarmonyOS 5.0旅游应用技术实践
一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架,支持"一次开发,多端部署",可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务,为旅游应用带来…...
Nginx server_name 配置说明
Nginx 是一个高性能的反向代理和负载均衡服务器,其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机(Virtual Host)。 1. 简介 Nginx 使用 server_name 指令来确定…...
【决胜公务员考试】求职OMG——见面课测验1
2025最新版!!!6.8截至答题,大家注意呀! 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:( B ) A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...
Python如何给视频添加音频和字幕
在Python中,给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加,包括必要的代码示例和详细解释。 环境准备 在开始之前,需要安装以下Python库:…...
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...
06 Deep learning神经网络编程基础 激活函数 --吴恩达
深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...
