Linux---防火墙

news2024/11/26 2:25:38

文章目录

  • 目录

    文章目录

    前言

    一.静态防火墙: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修改规则之后必须全部刷新才可以生效

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

二.动态防火墙:firewalld

        动态防火墙firewalld和静态防火墙iptables都是定义防火墙规则的工具,定义好的规则交给netfilter即网络过滤器来读取,从而实现防火墙功能。

与iptables不同点:

  • firewalld不仅可以过滤外网数据包,也可以过滤内网数据包。
  • firewalld可以动态修改规则,允许更新规则的同时不中断会话连接。
  • firewalld默认拒绝所有访问,需要配置允许访问规则。
  • firewalld取消规则链的概念,新增区域的概念。

firewalld 区域概念

firewalld 为了方便管理网络流量,增添了区域的概念,firewall防火墙将不同的流量导入不同的区域再对各区域制定相应的规则从而方便了流量管理。下面是一些区域的默认规则

firewall 命令管理工具

firewall-cmd是的命令管理工具:

firewll-cmd命令生效模式

  • runtime模式:运行时模式,立即生效,重启失效
  • permanent模式:永久模式,重启生效

基本语法:

firewaa-cmd --zone=指定区域 +参数

参数:

 我们可以额使用firewall-cmd --list-all列出所有区域的规则,各区域规则各行解释如下:

[root@localhost1 ~]# firewall-cmd --list-all
public (active)                                #当前激活的区域是 public
  target: default                              #默认的防火墙策略。ACCEPT、REJECT  DROP
  icmp-block-inversion: no                     #是否启用 ICMP 反转阻止
  interfaces: ens160                           #当前区域绑定的接口
  sources:                                     #指定的源地址
  services: cockpit dhcpv6-client ssh          #允许的服务
  ports:                                       #开放的端口
  protocols:                                   #允许的协议
  forward: yes                                 #
  masquerade: no                               #是否启用了 IP 伪装(NAT)
  forward-ports:                               #端口转发规则
  source-ports:                                #源端口规则
  icmp-blocks:                                 #阻止的 ICMP 类型
  rich rules:                                  #自定义规则

案例1:

禁止主机192.168.23.133主机使用ssh远程连接本地服务器

首先测试一下未添加规则前能否正常远程连接:

 防火墙未添加规则前远程主机能够正常远程连接,下面让配置一下防火墙规则:

[root@localhost1 ~]# sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.23.133" service name="ssh" reject'
success
[root@localhost1 ~]# firewall-cmd --reload
success
[root@localhost1 ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens160
  sources:
  services: cockpit dhcpv6-client ssh
  ports:
  protocols:
  forward: yes
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:
        rule family="ipv4" source address="192.168.23.133" service name="ssh" reject

再次远程连接本地主机发现提示拒绝连接, 这是因为防火墙的规则限制了远程连接

 当我们再次删除防火墙规则后,被限制的主机就可以正常远程连接本地主机

案例2:

防火墙未放行3306端口之前,本地服务器上的Mysql数据库无法通过navciat远程连接 。

此时,只需要防火墙放行3306端口,navciat便可以正常连接,命令如下:

防火墙日志 

防火墙默认关闭日志记录功能,需要手动开启,开启方法如下:

vim /etc/firewalld/firewalld.conf

将其中的”LogDenied=off”调整为”LogDenied=all“

off表示关闭不记录被拒绝日志,all表示记录所有被拒的日志

查看被拒绝的日志信息:

 dmesg --| grep -i reject 

总结

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

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

相关文章

Ubuntu20.04配置ORBSLAM2并在kitti数据集序列进行实验

一、ORB-SLAM2 安装和编译 1.ORB-SLAM2下载 用以下命令在终端上下载 git clone https://github.com/raulmur/ORB_SLAM2 2.安装Pangolin 在下载了ZIP压缩包后解压缩放在ubantu的/home下(此处只要是英文路径都可以),但别急着安装Pangolin我…

STM32项目分享:智慧农业(机智云)系统

目录 一、前言 二、项目简介 1.功能详解 2.主要器件 三、原理图设计 四、PCB硬件设计 1.PCB图 2.PCB板打样焊接图 五、程序设计 六、实验效果 七、资料内容 项目分享 一、前言 项目成品图片: 哔哩哔哩视频链接: https://www.bilibili.c…

PCIe总线-RK3588 PCIe子系统简介(八)

1.PCIe子系统 RK3588 PCIe子系统如下图所示。总共拥有5个PCIe控制器。PCIe30X4(4L)支持RC和EP模式,其他4个仅支持RC模式。ITS port 1连接PCIe30X4(4L)和PCIe30X2(2L)控制器,PCIe30X4(4L)和PCIe30X2(2L)控制器使用PCIe3.0 PIPE PHY。ITS port 0连接PCIe3…

mysql:简单理解mysql mvcc的可重复读

# 原理 假设有这样的sql begin select(或update、insert、delete) ... commit当执行【begin】的时候,标记有一个新事务要开始,但是事务还没有真正开始,事务id还没有产生当执行事务里面的第一个sql语句时(…

VCG显示——汉字,数字,图像

详细的介绍资料: 【从零开始走进FPGA】 玩转VGA http://www.cnblogs.com/spartan/archive/2011/08/16/2140546.html 【FPGA实验】基于DE2-115平台的VGA显示_vga接口实验 de2-115-CSDN博客 【FPGA】VGA显示文字、彩条、图片——基于DE2-115-CSDN博客 一.VCG原理 1.1…

区块链中的gas与转账收款相关概念

区块链是一个经济系统 计算与存储系统都是稀缺的,区块链的工作需要消耗资源共识、trustless需要矿工的工作,而矿工需要激励Transaction的执行有成本(gas),gas费成为矿工的奖励ether是这个经济生态系统的通行货币 关心的问题 合…

Stable Diffusion vs DALL·E3

大模型技术论文不断,每个月总会新增上千篇。本专栏精选论文重点解读,主题还是围绕着行业实践和工程量产。若在某个环节出现卡点,可以回到大模型必备腔调或者LLM背后的基础模型新阅读。而最新科技(Mamba,xLSTM,KAN)则提…

父亲节:我要做爸爸的健康监督员

父亲节将至,总想着能为爸爸做些什么,来表达我们的感激与关爱。在这个特殊的日子里,成为爸爸的健康监督员,用华为 Watch 4 的智慧健康功能,任何时刻都可以关注爸爸的健康状况,放心又安心了。 用一键微体检…

C++ 50 之 继承中的对象模型

继承中的对象模型 在C编译器的内部可以理解为结构体&#xff0c;子类是由父类成员叠加子类新成员而成&#xff1a; #include <iostream> #include <string> using namespace std;class Base03{ public:int m_a; protected:int m_b; private:int m_c; // 哪怕是…

DNS域名解析----分离解析、多域名解析、父域与子域

1 理论部分 1.1 分离解析 DNS的分离解析&#xff0c;是指根据不同的客户端提供不同的域名解析记录。来自不同地址的客户机请求解析同一域名时&#xff0c;为其提供不同的解析结果。也就是内外网客户请求访问相同的域名时&#xff0c;能解析出不同的IP地址&#xff0c;实现负载…

汇编:Linux汇编基本框架与系统调用

在Linux操作系统下进行汇编编程时&#xff0c;基本的汇编程序框架通常包括以下几个部分&#xff1a; ①全局段声明&#xff08;section declarations&#xff09;&#xff1a;定义数据段、代码段等。 ②入口点&#xff08;entry point&#xff09;&#xff1a;程序的执行起点…

Python 显示笔记本电脑的电池状态和百分比

方法一&#xff1a; import psutil import psutil battery psutil.sensors_battery() if battery is None:print("No battery is found.")exit() print (battery) percentagebattery.percent print(f"Battery Percentage: {percentage}%")Battery的信息…

一个在C#中集成Python的例子

一个在C#中集成Python的例子。在C#中可以执行Python脚本&#xff0c;在Python中也可以调用C#宿主中的功能&#xff08;clr.AddReference(Business)&#xff09;。 文件说明 Debug为执行目录 Mgr.exe为执行文件 Py\init.py为python初始化脚本 Py\Lib.zip为python需要的模块&…

数据库 | 期末复习专题(HBUT 韩洪木)

总结&#xff1a; 考研数据库系统概论题目整理_若视图的属性来自聚集函数、表达式,则该视图是可以更新的。-CSDN博客 数据库系统概论 ---知识点大全&#xff08;期末复习版&#xff09;_数据库系统概论期末复习-CSDN博客 1.数据库系统&#xff08;DBS&#xff09;的组成&#…

第一篇:容器化的未来:从Docker的革命到云原生架构

容器化的未来&#xff1a;从Docker的革命到云原生架构 1. 引言 在当今快速演进的技术领域&#xff0c;容器化技术已经成为云计算和微服务架构的重要组成部分。该技术以其高效的资源利用率、快速的部署能力和卓越的隔离性能&#xff0c;彻底改变了软件开发和部署的方式。容器化…

【Pytorch】一文向您详细介绍 model.eval() 的作用和用法

【Pytorch】一文向您详细介绍 model.eval() 的作用和用法 下滑查看解决方法 &#x1f308; 欢迎莅临我的个人主页 &#x1f448;这里是我静心耕耘深度学习领域、真诚分享知识与智慧的小天地&#xff01;&#x1f387; &#x1f393; 博主简介&#xff1a;985高校的普通本硕…

深入浅出談 隐马尔可夫的概念(1/ 2)

文章目录 一、说明二、Markov Chain三、Introduction四、State Sequence五、Comment六、介绍隐藏式马可夫法则。七、隐藏马尔可夫Introduction八、结论 一、说明 在许多机器学习的章节中&#xff0c;常常遇见 HMM &#xff0c;往往看到它的数学式子后&#xff0c;就当没看到似…

[Algorithm][贪心][K次取反后最大化的数组和][身高排序][优势洗牌][最长回文串]详细讲解

目录 1.K 次取反后最大化的数组和1.题目链接2.算法原理详解3.代码实现 2.身高排序1.题目链接2.算法原理详解3.代码实现 3.优势洗牌1.题目链接2.算法思路详解3.代码实现 4.最长回文串1.题目链接2.代码实现 1.K 次取反后最大化的数组和 1.题目链接 K 次取反后最大化的数组和 2.…

Qt状态机框架

概述 状态机框架提供了用于创建和执行状态图的类。这些概念和符号基于Harel的Statecharts:复杂系统的可视化形式(http://www.wisdom.weizmann.ac.il/~dharel/SCANNED.PAPERS/Statecharts.pdf)&#xff0c;也是UML状态图的基础。状态机执行的语义基于状态图XML (SCXML)(http://…

Ms08067安全实验室成功实施多家业务系统渗透测试项目

点击星标&#xff0c;即时接收最新推文 近日&#xff0c;Ms08067安全实验室针对多家公司重要系统实施渗透测试项目。公司网络信息系统的业务应用和存储的重要信息资产均较多&#xff0c;存在网络系统结构的复杂性和庞杂等特点&#xff0c;使得公司网络信息系统面临一定风险。项…