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的规则之前的某些规则阻止了连接。

上述情况解决办法如下:在INPUT链表首部插入规则

iptables -I INPUT -p tcp --dport 3306 -j ACCEPT

 或者可以逐一在每条规则之前插入规则来测试阻止连接的规则是哪一条

#在在 INPUT 链的第2个位置插入一条允许所有 IP 地址访问 3306 端口的规则
iptables -I INPUT 2 -p tcp --dport 3306 -j ACCEPT

找到阻止连接的规则后可以删除阻止连接的规则

#删除链表指定位置的规则
sudo iptables -D INPUT 2

 


总结

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

debugger(四):源代码

〇、前言 终于来到令人激动的源代码 level 了,这里将会有一些很有意思的算法,来实现源代码级别的调试,这将会非常有趣。 一、使用 libelfin 库 我们不可能直接去读取整个 .debug info 段来进行设置,这是没有必要的,…

python爬虫之JS逆向——requests模块

目录 一、编码与解码 1 python的编码和解码 2 文件操作 二、requests模块 1 requests支持的方法 2 get请求 3 反爬 UA反爬 Referer反爬 Cookie反爬 代理IP反爬 雪球网数据抓取 4 session对象 5 图片和视频爬取 图片爬取 视频爬取 一、编码与解码 主要用于对视频的爬取&…

cve_2022_0543-redis沙盒漏洞复现 vulfocus

1. 原理 该漏洞的存在是因为Debian/Ubuntu中的Lua库是作为动态库提供的。自动填充了一个package变量,该变量又允许访问任意 Lua 功能。 2.复现 我们可以尝试payload: eval local io_l package.loadlib("/usr/lib/x86_64-linux-gnu/liblua5.1.so…

DeepSpeed MoE

MoE概念 模型参数增加很多;计算量没有增加(gating小FNN,比以前的大FNN计算量要小);收敛速度变快; 效果:PR-MoE > 普通MoE > DenseTransformer MoE模型,可视为Sparse Model&…

Qt之QAbstractSocketEngine

简介 QAbstractSocketEngine是网络中的基础,QTcpSocket和QTcpServer底层都依赖socket引擎 结构 #mermaid-svg-LrJAouZrtX0AxaPo {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-LrJAouZrtX0AxaPo .erro…

表的设计与查询

目录 一、表的设计 1.第一范式(一对一) 定义: 示例: 2.第二范式(一对多) 定义: 要求: 示例: 3.第三范式(多对多) 定义: 要求…

python类元编程示例-使用类型注解来检查转换属性值的类框架

用三种方式实现使用类型注解来检查转换属性值的类框架 1 __init_subclass__方式 1.1 代码实现 from collections.abc import Callable # <1> from typing import Any, NoReturn, get_type_hints from typing import Dict, Typeclass Field:def __init__(self, name: …

**《Linux/Unix系统编程手册》读书笔记24章**

D 24章 进程的创建 425 24.1 fork()、exit()、wait()以及execve()的简介 425 . 系统调用fork()允许父进程创建子进程 . 库函数exit(status)终止进程&#xff0c;将进程占用的所有资源归还内核&#xff0c;交其进行再次分配。库函数exit()位于系统调用_exit()之上。在调用fo…

ffmpeg常见命令

一、ffmpeg的安装 ffmpeg的安装 一、ffmpeg常用命令 二、ffprobe

排课系统1

参考:https://gitee.com/lequal/CourseArrange 软件技术栈 当然,我会逐一解释这些技术栈的含义:### 前端技术栈1. **Vue2.x**:- Vue.js 是一个流行的前端 JavaScript 框架,用于构建用户界面和单页应用程序(SPA)。- 2.x 表示 Vue.js 的第二个主要版本,它提供了一套响应…

浅解Reids持久化

Reids持久化 RDB redis的存储方式&#xff1a; rdb文件都是二进制&#xff0c;很小&#xff0c;里面存的是数据 实现方式 redis-cli链接到redis服务端 使用save命令 注&#xff1a;不推荐 因为save命令是直接写到磁盘里面&#xff0c;速度特别慢&#xff0c;一般都是redis…

遗传算法笔记:基本工作流程

1 介绍 遗传算法有5个主要任务&#xff0c;直到找到最终的解决方案 2 举例 2.1 问题描述 比如我们有 5 个变量和约束&#xff0c;其中 X1、X2、X3、X4 和 X5 是非负整数且小于 10&#xff08;0、1、2、4、5、6、7、8、9&#xff09;我们希望找到 X1、X2、X3、X4 和 X5 的最…

go语言后端开发学习(三)——基于validator包实现接口校验

前言 在我们开发模块的时候,有一个问题是我们必须要去考虑的&#xff0c;它就是如何进行入参校验&#xff0c;在gin框架的博客中我就介绍过一些常见的参数校验&#xff0c;大家可以参考gin框架学习笔记(四) ——参数绑定与参数验证&#xff0c;而这个其实也不是能够完全应对我…

Android JobService启动系统源码分析

以下就JobService的执行流程,系统层实现进行详解 入口点在JobScheduler.scheduler 系统层JobScheduler是个抽象类,它的实现类是JobScheduler mBinder,一看就知道这里面肯定是跨进程了。它的服务端在JobSchedulerService里面,具体 为什么请看系统服务器启动流程相关文章,…

Python算法于强化学习库之rlax使用详解

概要 在强化学习领域,开发和测试各种算法需要使用高效的工具和库。rlax 是 Google 开发的一个专注于强化学习的库,旨在提供一组用于构建和测试强化学习算法的基础构件。rlax 基于 JAX,利用 JAX 的自动微分和加速计算功能,使得强化学习算法的实现更加高效和简洁。本文将详细…

如何判断 是否 需要 CSS 中的媒体查询

以下是一些常见的使用媒体查询的场景&#xff1a; 响应式布局&#xff1a;当设备的屏幕尺寸变化时&#xff0c;我们可以使用媒体查询来调整布局&#xff0c;以适应不同的屏幕尺寸。 设备特性适配&#xff1a;我们可以使用媒体查询来检测设备的特性&#xff0c;如设备方向、分辨…

带你学习Mybatis之DataSource数据源

DataSource数据源 所有的数据源组件都实现了javax.sql.DataSource接口&#xff0c;Mybatis实现了两个接口实现&#xff0c;分别为PooledDataSource和UnpooledDataSource&#xff0c;使用不同的DataSourceFactory接口实现创建不同类型的DataSource UnpooledDataSource 每次通过U…

代码随想录——数组

给定一个n个元素有序&#xff08;升序&#xff09;的整型数组nums和一个目标值target&#xff0c;写一个函数搜索nums中的target&#xff0c;如果目标值存在返回下标&#xff0c;否则返回-1. //这个题说实话从逻辑上来看实在是太简单了&#xff0c;但是为什么每一次我写起来都感…

堡垒机的自动化运维,快速安全提升运维效率

随着信息技术的突飞猛进&#xff0c;企业对于IT系统的依赖程度日益加深&#xff0c;不仅希望可以提高运维效率&#xff0c;也希望能保障IT系统的安全。因此堡垒机与自动化运维技术的结合应运而生&#xff0c;堡垒机的自动化运维&#xff0c;快速安全提升运维效率。今天我们就来…

CTE-6作文

第一段 现象 引出原因 第二段 感受 举例 意义 危害 第三段 建议 展望