Linux---防火墙

文章目录

  • 目录

    文章目录

    前言

    一.静态防火墙:iptables

    iptables五链

    iptables 四表

     iptables控制类型

    iptables命令配置


前言

这儿主要介绍Linux系统本身提供的软件防火墙的功能,即数据包过滤机制。 数据包过滤,也就是分析进入主机的网络数据包,将数据包的头部数据提取出来进行分析,以决定该连接为放行或抵挡的机制。由于这种方式可以直接分析数据包头部数据,包括硬件地址,软件地址,TCP、UDP、ICMP等数据包的信息都可以进行过滤分析,因此用途非常广泛。


一.静态防火墙:iptables

        iptables 不是防火墙,而是客户端代理,用户通过iptables这个代理,将用户的安全设定执行到对应的安全框架netfilter中。

iptables 特点:

  • netfilter位于内核空间中,而iptables是控制netfilter的工具,位于用户空间。
  • 通过iptables可以编写某些规则并保存到netfilter中,从而起到防护效果。
  • netfilter/iptables组成Linux平台下的包过滤防火墙,可以完成包过滤,NAT等功能。
  • iptables默认默认允许访问,需要拒绝的采取限制。

iptables五链

        五链实际是五规则链的简称,而每个规则链由多个规则组成;每个数据包被iptables过滤时都要经过如下五个规则链的筛选:

规则链位置作用场景
PREROUTING链数据包进入网络接口后,路由决策前可以用于修改数据包的目的地址(DNAT),改变数据包的路由路径用户目标NAT
INPUT链数据包在被路由到本地系统之后过滤进入本地服务器的数据包防火墙规则,允许或拒绝进入本地系统的流量
FORWARD链数据包在路由决策之后控制通过本地系统转发的数据包路由器或网关上,用于控制数据包的转发
OUTPUT链数据包由本地系统产生,经过路由决策之前控制本地系统发出的数据包允许或拒绝本地系统发送的流量
POSTROUTING链据包离开网络接口之前可以用于修改数据包的源地址,改变数据包离开系统时的地址信息用户源NAT

iptables 四表

        在Linux中的iptables中,表(tables)是用于组织规则链的结构。iptables包含四个主要的表,每个表专门用于不同类型的数据包处理。以下是主要的四个表:

功能默认链应用场景作用
filter表主要用于数据包过滤INPUT、FORWARD、OUTPUT根据定义的规则决定是否接受、拒绝或丢弃数据包防火墙规则
nat表用于网络地址转换(NAT)PREROUTING、POSTROUTING、OUTPUT改数据包的源地址或目的地址,以实现地址映射和端口转发NAT
mangle表用于对数据包进行修改PREROUTING、POSTROUTING、INPUT、OUTPUT、FORWARD可以修改数据包的TTL值等需要对数据包的服务质量(QoS)进行控制或流量整形时
raw表对数据包的状态跟踪机制PREROUTING、OUTPUT可以决定数据包是否被状态跟踪机制处理,通常用于实现高性能的处理需要对状态跟踪机制进行细粒度控制时

 数据包到达防火墙根据下图进行匹配:

 iptables控制类型

        iptables的每张表包含不同的控制类型,不同的控制类型允许管理员对数据包执行不同的操作。以下是iptables的主要控制类型:

  •  Accept:允许数据包通过
  • Drop:丢弃数据包
  • Reject:拒绝数据包通过
  • Snat:修改数据包源IP
  • Dnat:修改目标IP
  • Masquerade:伪装成一个非固定的公网IP
  • Log:在/var/log/messages文件中记录日志信息,然后将数据包传递给下一条规则

iptables命令配置

基本语法:

iptables [选项] 命令 [链] [匹配条件] [目标]

iptables -t 表名 【参数】 规则链名  -p 协议名 -s 源IP --sport 源端口 -d 目标IP --dport 目标端口 -j 动作

参数:
-A:在指定链的末尾插入指定的规则
-D:在指定的链中删除 一个或多个指定规则
-I: 在指定链中的指定位置插入一条或多条 规则
-R: 替换/修改第几条规则

常见选项:

 演示案例:

#允许所有IP访问3306端口
iptables -A INPUT -p tcp --dport 3306 -j ACCEPT

#允许指定IP访问3306端口
sudo iptables -A INPUT -p tcp -s 192.168.1.100 --dport 3306 -j ACCEPT

#显示规则
iptables -L

#保存规则

#删除INPUT链表中的规则
iptables -D INPUT -p tcp --dport 3306 -j ACCEPT

注意:iptables的匹配规则是自上而下匹配,当遇见如下情况:如Mysql数据库的3306端口已经开放,但是仍然无法通过3306端口远程连接,此时可能是在开放3306的规则之前的某些规则阻止了连接。

上述情况解决办法如下:清空所有规则,唯独留下开放3306端口的规=规则,若成功连接则逐一排除阻止连接的规则

sudo iptables -F
sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT

总结

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/696827.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

k8s 1.28 搭建rabbitmq集群

1.环境 1.1 k8s 1.28 1.2 rabbit 3.8 1.3 工作空间default 1.4 注意,内存最好充足一点,因为我就两个节点一个master、一个node,起初我的node是8g,还剩3~4G,集群竟然一直起不来,后来将虚拟机内存扩大&#x…

刷机维修进阶教程-----红米k30 nv损坏故障 修复实例教程步骤解析

小米红米系列机型在米8起始就有了串码校验。不得随意更改参数限制。不同于其他机型,可以任意刷入同芯片的基带qcn来修复基带和串码丢失。米系列刷入同芯片基带qcn会提示nv损坏故障。是因为有串码校验。一般在于格机或者全檫除分区后写新参数出现的故障。 这种解决方法通常有两…

武忠祥17堂课没必要全听,这几个才是精华!

作者:Captain 链接:https://www.zhihu.com/question/381665751/answer/3197724055 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 17堂课类似于习题课,是专题训练 17堂课省略了…

fs.1.10 ON rockylinux8 docker镜像制作

概述 freeswitch是一款简单好用的VOIP开源软交换平台。 rockylinux docker上编译安装fs1.10版本的流程记录。 环境 docker engine:Version 24.0.6 rockylinux docker:8 freeswitch:v1.10.7 手动模式 rockylinux准备 docker hub拉取r…

IPv4 子网掩码计算器—python代码实现

今天聊一下,我用python和vscode工具实现一个IPv4计算器的一些思路,以及使用Python编写IPv4计算器一些好处? 首先,一、Python语法简洁易读,便于理解和维护,即使对编程不熟悉的用户也能快速了解代码逻辑。其…

基于51单片机的车辆动态称重系统设计

一 动态称重 所谓动态称重是指通过分析和测量车胎运动中的力,来计算该运动车辆的总重量、轴重、轮重和部分重量数据的过程。动态称重系统按经过车辆行驶的速度划分,可分为低速动态称重系统与高速动态称重系统。因为我国高速公路的限速最高是120,所以高速动态称重系统在理论…

AI大模型探索之路-实战篇16:优化决策流程:Agent智能数据分析平台中Planning功能实践

系列篇章💥 AI大模型探索之路-实战篇4:深入DB-GPT数据应用开发框架调研 AI大模型探索之路-实战篇5:探索Open Interpreter开放代码解释器调研 AI大模型探索之路-实战篇6:掌握Function Calling的详细流程 AI大模型探索之路-实战篇7…

【机器学习系列】深入理解集成学习:从Bagging到Boosting

目录 一、集成方法的一般思想 二、集成方法的基本原理 三、构建集成分类器的方法 常见的有装袋(Bagging)和提升(Boosting)两种方法 方法1 :装袋(Bagging) Bagging原理如下图: …

使用SourceTree切换不同的托管平台

背景:sourcetree一开始绑定了gitee,想拉取github的项目时拉取不了 原因:git绑定的账号(邮箱)、密码不一致 解决办法: 重新设置账号密码 在windows种可找到下面的文件夹,进行删除 C:\Users\US…

第1章Hello world 3/5:Cargo.lock:确保构建稳定可靠:运行第一个程序

讲动人的故事,写懂人的代码 1.6 Cargo.lock:确保构建稳定可靠 “看!”席双嘉一边指着屏幕一边说,“终端窗口提示符的颜色,从绿变黄了。这就意味着代码在上次提交后有点变化。” 赵可菲:“但是我们只是运行了程序,代码应该没动呀。” 席双嘉敲了下git status -uall,这…

设计随笔 ---- ADR4525 篇

ADR4525一颗超低噪声、高精度2.5V基准电压源; Fluke 17B准确度指标: ADR4525指标: Fluke 17B测试结果: 2.5V的基准,输出只有2.477V,其实这么高精度的电压基准用3位半的万用表来测试本身就是一个错误&#…

vscode侧边栏错乱重制

vscode 重制命令面板 View: Reset View Locations

这公司是怎么存活的?真的有存在的必要吗?

原址:OfferNow 大家好,我是白露啊。 昨天看到一个招聘经历的分享,简直让我怀疑人生。 还能有这样的公司? 对方HR说:“*** ,学习期间是单休,每天需要加班4-5小时,并且学习期间每天要…

Java(十七)---ArrayList的使用

文章目录 前言1.ArrayList的简介2. ArrayList使用2.1.ArrayList的构造2.2.ArrayList的扩容机制(JDK17) 3.ArrayList的常见操作4. ArrayList的具体使用4.1.[杨辉三角](https://leetcode.cn/problems/pascals-triangle/description/)4.2.简单的洗牌游戏 5.ArrayList的问题及思考 …

操作系统入门系列-MIT6.828(操作系统工程)学习笔记(六)---- 初窥操作系统启动流程(xv6启动)

系列文章目录 操作系统入门系列-MIT6.S081(操作系统)学习笔记(一)---- 操作系统介绍与接口示例 操作系统入门系列-MIT6.828(操作系统工程)学习笔记(二)----课程实验环境搭建&#x…

SpringSecurity入门(三)

12、密码加密 12.1、不指定具体加密方式,通过DelegatingPasswordEncoder,根据前缀自动选择 PasswordEncoder passwordEncoder PasswordEncoderFactories.createDelegatingPasswordEncoder();12.2、指定具体加密方式 // Create an encoder with streng…

13. ESP32-HTTPClient(Arduino)

使用ESP32 Arduino框架的HTTPClient库进行HTTP请求 在ESP32开发里,网络通信是挺重要的一部分,你可能需要从服务器拿数据啊,或者把传感器数据发到云端什么的。不过别担心,ESP32 Arduino框架给我们提供了HTTPClient库,让…

阻塞队列和线程池

一、什么是阻塞队列 1.1 什么是队列 队列是先进先出。 队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队…

前端自测 - 那些经典的bug

前言 我一直坚持的一个观点,就是不以bug数论成败,但是这个需要加一个前提,就是不能出现那些低级的bug,更不能反复的出现。 由此整理了一系列我认为比较经典常见的前端bug,都是在项目中多次遇到过的,用于前…

Golang Context详解

文章目录 基本介绍context源码剖析Context接口emptyCtxcancelCtxtimerCtxvalueCtx context使用案例协程取消超时控制数据共享 基本介绍 基本介绍 在Go 1.7版本中引入了上下文(context)包,用于在并发编程中管理请求范围的数据、控制生命周期、…