Linux 防火墙配置(iptables和firewalld)

news2025/7/13 2:43:49

目录

防火墙基本概念

Iptables讲解

Iptables表

Iptables规则链

Iptables控制类型

Iptables命令配置

firewalld讲解

Firewalld区域概念

Firewalld两种配置方法

firewall-cmd命令行基础配置

firewall-config图形化配置


防火墙基本概念

防火墙就是根据系统管理员设定的规则来控制数据包的进出,主要是保护内网的安全

目前Linux系统的防火墙类型主要有两种:分别是iptables和firewalld

Iptables-静态防火墙

早期的Linux系统中默认使用的是iptables防火墙,配置文件在/etc/sysconfig/iptables

主要工作在网络层

使用链式规则,只可以过滤互联网的数据包,无法过滤从内网到内网的数据包

Iptables只可以通过命令行进行配置

Iptables默认是允许所有,需要通过拒绝去做限制

Iptables在修改了规则之后必须得全部刷新才可以生效,还会丢失连接(无法守护进程)

Firewalld-动态防火墙

取代了之前的iptables防火墙,配置文件在/usr/lib/firewalld和/etc/fiewalld中

主要工作在网络层

新增区域概念,不仅可以过滤互联网的数据包,也可以过滤内网的数据包

Firewalld不仅可以通过命令行进行配置,也可以通过图形化界面配置

Firewalld默认是拒绝所有,需要通过允许去放行

Firewalld可以动态修改单条规则,动态管理规则集(允许更新规则而不破环现有会话和连接,可以守护进程)

注意事项

iptables和firewaldl都只是linux防火墙的管理程序,真正的防火墙执行者是位于内核的netfilter,只不过firwalld和iptables的结果以及使用方法不一样

在配置防火墙时,不建议两种配置方法结合使用(建议只使用其中的一种)


Iptables讲解

Iptables配置防火墙依靠四个部分实现:表、规则链、规则(匹配条件)、控制类型组成

Iptables表

处理优先级由高到低,表与表之间都是独立的

raw

是否对某个数据包进行状态追踪(包含OUTPUT、PREAUTING两个规则链)

mangle

修改数据包内容;可以做流量整形、对数据包设置标记(包含所有规则链)

nat

负责地址转换功能;修改数据包中的源目IP地址或端口(包含IN、OU、PR、PO三个规则链)

filter

负责过滤数据包;对数据包时允许放行还是不允许放行(包含IN、OU、FO三个规则链)

Iptables规则链

什么是规则链

 很多个规则组成一个规则链

 数据包从上往下做匹配,匹配成功就结束匹配,并执行相应的控制类型(建议需要将精准的策略放在上面)

规则链类型

INPUT              处理入站的数据包(处理目标是本机的数据包)

OUTPUT            处理出站的数据包(处理源是本机的数据包,一般不在此链上做规则)

PREROUTING        在进行路由选择前处理数据包(一般用来做NAT Server)

POSTROUTING      在进行路由选择后处理数据包(一般用来做源NAT)

FORWARD          处理转发的数据包(处理经过本机的数据包)

Iptables控制类型

ACCEPT                允许数据包通过

DROP                   丢弃数据包(不给对方回应,一般工作时用这个)

REJCET                 拒绝数据包通过(会给对方回应,对方知道自己被拒绝)

SNAT                    修改数据包的源地址

DNAT                   修改数据包的目的地址

MASQUERADE      伪装程一个非固定的公网IP地址

LOG               在/var/log/messages文件中记录日志信息,然后将数据包传递给下一条规则

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

iptables进行数据处理关心的是四表五链以及流量的进出

Iptables命令配置

配置iptables防火墙时需要将防火墙服务开启

systemctl start firewalld   开启防火墙

systemctl status firewalld  查看防火墙状态

Iptables命令查看防火墙

iptables -nL -t nat  查看nat表的规则链

  -n 使用数字形式显示输出结果(如:通过IP地址)

-L 查看当前防火墙有哪些策略

-t 指定查看iptables的哪个表(默认是filter表)

Iptables命令配置防火墙

iptables -P INPUT DROP    将INPUT规则链的默认流量更改为拒绝

-P 设置/修改默认策略

iptables -t filter -I INPUT -s 192.168.10.0/24 -j ACCEPT  在filter表下的INPUT规则链中配置规则

  -I num 插入规则(大写i,默认在链的开头加入规则,可以指定序号)

  -i  从这块网卡流入的数据    

-o 从这块网卡流出的数据

  -s  源地址(加!表示取反)

-d 目的地址  

-j  限制动作

iptables -A INPUT -p tcp --dport 1000:1024 -j REJECT 拒绝 tcp端口号为1000~1024的数据包

  -A 在链的末尾加入规则

-p 指定协议类型

--sport 源端口   

--dport 目的端口

iptables -D INPUT 1  删除INPUT规则链的第一条规则

  -D num 删除规则链

  -R 修改规则

iptables -F 清空已有的策略

iptables-save 来保存防火墙策略

注意事项

当创建的规则内容与已有规则一致时,不会覆盖原先的规则,会直接加入到现有规则链中(即此时此规则链下有两条一摸一样的规则,只是顺序不同)

以上关于防火墙的配置是runtime模式,即配置成功后立即生效,但是重启后会失效(需要将配置保存,重启后才不会失效)


firewalld讲解

frewalld是服务名称,firewall-cmd和firewall-config是配置工具名称

firewall-cmd  基于命令行配置

firewall-config基于图形化界面配置(这两个配置方式实时同步)

Firewalld区域概念

默认所有网卡都是public区域,可以根据需要将网卡设置为不同的区域

Trust      信任区域

 允许所有流量(所有的网络连接都可以接受)

Public     公共区域

 仅接受ssh、dhcpv6-client服务连接(默认区域)

External  外部区域

 仅接收ssh服务连接(默认通过此区域转发的IPv4流量将会进行地址伪装)

Home     家庭区域

 仅接受ssh、msdns、ipp-client、samba-client、dhcpv6-client服务网络连接

Internal  内部区域

 同home区域

Work      工作区域

 仅接受ssh、ipp-client、dhcpv6-client服务连接

Dmz       隔离区域(非军事区域)

 仅接收ssh服务连接

Block      限制区域

 拒绝所有传入流量(有回应)

Drop       丢弃区域

 丢弃所有传入流量(无回应)

数据包到达防火墙匹配规则

firewall进行数据处理只关心区域

  1. 根据数据包的源IP地址匹配,根据源地址绑定区域的区域规则进行匹配(如果没有绑定区域则匹配默认区域的规则)
  2. 根据传入的网络接口匹配,进入此接口绑定区域的区域规则进行匹配(如果没有绑定区域则匹配默认区域的规则)

绑定源地址的区域规则>网卡绑定的区域规则>默认区域的规则

Firewalld两种配置方法

临时配置(runtime 当前生效表)

立即生效,重启后失效

不中断现有连接

无法修改服务配置

永久配置(permanent 永久生效表)

不立即生效,重启后生效,或者立即同步后生效

会终端现有连接

可以修改服务配置

firewall-cmd命令行基础配置

如何实现永久配置

--permanent  表示此配置加入到永久生效(默认临时生效)

或者在配置结束后执行此命令 firewall-cmd --runtime-to-permanent将临时更改为永久

永久配置完成后需要立即同步 firewall-cmd --reload 立即同步永久配置

查看默认区域并进行更改

firewall-cmd --get-zones                  查询可用的区域

firewall-cmd --get-default-zone            查询默认区域的名称

firewall-cmd --get-active-zone             显示当前正在使用的区域与网卡名称

firewall-cmd --set-default-zone=trusted     设置默认区域为trusted区域

将网卡/子网与区域绑定(允许/拒绝此子网通过)

firewall-cmd --zone=drop --add-source=192.168.20.0/24 将此子网与drop区域绑定(拒绝从此子网发来的流量)

firewall-cmd --zone=trusted--add-interface=ens160   将此网卡与trusted区域绑定(允许从此网卡发来的流量)

   --remove-source  删除子网与区域的绑定

   --change-source  更改子网与区域的绑定

配置区域允许/拒绝的协议/端口号

firewall-cmd --list-all           显示当前区域的端口号、网卡、服务等信息

        --list-all-zones        显示所有区域的

firewall-cmd --get-services                      列举出来当前所有被允许的协议

firewall-cmd --zone=public --add-service http      配置public区域允许通过http协议

--remove-service ssh    拒绝通过ssh协议

  --add-port=123/tcp     允许通过tcp的123端口

  --remove-port=123/tcp  拒绝通过tcp的123端口

cat /etc/services                                保存的协议类型和端口号

配置协议端口转换(端口映射)

firewall-cmd --permanent --zone=public --add-forward-port=port=888:proto=tcp:toport=22:toaddr=192.168.10.1

将192.168.10.1主机的tcp 22端口号转为888端口号(public区域接收ssh)

  --remove-forward-port 删除此端口映射

其它配置

--panic-on  紧急模式,切断一切的网络连接(特殊情况去使用)

--panic-off  恢复一切的网络连接

配置富规则rich(更复杂、更详细的防火墙策略配置)

优先级最高(高于默认规则,两个并不冲突)

能够根据源目地址、端口号来限制用户

firewall-cmd  --zone=public --list-rich-rule    显示public区域已经配置的富规则

firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.100.1/24" service name="ssh" accept"   允许来自192.168.100.1的主机访问22端口

 --add-rich-rule         添加一个富规则

 --remove-ruch-rule     删除一个富规则

 reject                  拒绝访问

firewall-config图形化配置

安装firewall-config

 配置Yum源(软件仓库)
Linux 软件包安装_静下心来敲木鱼的博客-CSDN博客icon-default.png?t=N176https://blog.csdn.net/m0_49864110/article/details/129150924?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22129150924%22%2C%22source%22%3A%22m0_49864110%22%7D

 安装软件 dnf install firewall-config

系统界面讲解

1:选择运行时(Runtime)或永久(Permanent)模式的配置

2:选择区域

3:当前正在使用的区域(黑色加粗)

4:管理当前被选中区域中的服务

5:管理当前被选中区域中的端口

6:设置允许被访问的协议

7:设置允许被访问的端口

8:开启或关闭SNAT(源网络地址转换)技术

9:设置端口转发策略

10:控制请求icmp服务的流量

11:被选中区域的服务,若勾选了相应服务前面的复选框,则表示允许与之相关的流量

12:管理防火墙的富规则

13:网卡信息(网卡与区域绑定信息)

14:子网信息(子网与区域绑定信息)

15:查看常用的服务协议列表

16:主机地址的黑白名单

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

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

相关文章

用 tensorflow.js 做了一个动漫分类的功能(二)

前言:前面已经通过采集拿到了图片,并且也手动对图片做了标注。接下来就要通过 Tensorflow.js 基于 mobileNet 训练模型,最后就可以实现在采集中对图片进行自动分类了。这种功能在应用场景里就比较多了,比如图标素材站点&#xff0…

java集成redis简单存储

这里主要将数据存redis并设置过期时间、通过key删除redis、通过key更新redis(续期) 将数据存redis并设置过期时间 引入redis依赖 import org.springframework.data.redis.core.StringRedisTemplate;AutowiredStringRedisTemplate stringRedisTemplate…

【基础教程】Appium自动化测试,太详细了!

Appium简介Appium是一款开源的Appium自动化工具, 基于Webdriver协议, 主要有以下3个特点:全能: 支持iOS/Andorid/H5/混合App/WinApp通用: 支持Win/Linux/Mac, 支持Java/Python/Ruby/Js/PHP等各种语言开源: 免费App自动化测试工具对比iOS官方:Uiautomation/XCUITest: 白盒, UI测…

(二十)、完成个人中心页面的数据统计+设置详情页点赞用户的头像组【uniapp+uinicloud多用户社区博客实战项目(完整开发文档-从零到完整项目)】

1,个人中心页面的数据统计 数据统计包括两项内容:1.当前登录用户的点赞总数量。2.当前登录用户发布文章的总数量 1.1,在self页面data中定义对象 data() {return {totalObj:{artNum:0,likeNum:0}};},1.2,获取总数量的方法&#x…

多线程(初识线程)

线程的诞生 了解进程存在的意义 实现了并发编程的效果(并发编程:有可能是并发执行,也有可能是并行执行) 并发编程的目的:充分利用上多核CPU资源,提升运行效率 了解进程创建和销毁的过程带来的问题 进程是…

系列二、函数

一、定义 函数 是指一段可以直接被另一段程序调用的程序或代码。 也就意味着,这一段程序或代码MySQL中 已经给我们提供了,我们要做的就是在合适的业务场景调用对应的函数完成对应的业务需求即可。二、字符串函数 2.1、案例 2.1.1、concat 字符串拼接 s…

js中?.、??的具体用法

1、?. (可选链运算符) 在javascript中如果一个值为null、undefined,直接访问下面的属性,会报 Uncaught TypeError: Cannot read properties of undefined 异常错误。而在真实的项目中是会出现这种情况,有这个值就读这…

泛型擦除(Generic erase)(内含教学视频+源代码)

泛型擦除(Generic erase)(内含教学视频源代码) 教学视频源代码下载链接地址:https://download.csdn.net/download/weixin_46411355/87473560 源代码中使用的泛型,在经过编辑后,代码中就看不到泛…

PX4之飞行控制框架

PX4的飞行控制程序通过模块来实现,与飞控相关的模块主要有commander,navigator,pos_control,att_control这几个,分别可以在src/modules目录中找到。 commander - 指令/事件处理模块,处理指令、遥控器输入和…

新C++(9):谈谈,翻转那些事儿

"相信羁绊,相信微光,相信一切无常。"一、AVL树翻转那些事儿(1)什么是AVL树?在计算机科学中,AVL树是最先发明的自平衡二叉查找树。在AVL树中任何节点的两个子树的高度最大差别为1,所以它也被称为高度平衡树。…

网上插画教学哪家质量好,汇总5大插画培训班

网上插画教学哪家质量好?给大家梳理了国内5家专业的插画师培训班,最新五大插画班排行榜,各有优势和特色! 一:国内知名插画培训机构排名 1、轻微课(五颗星) 主打课程有日系插画、游戏原画、古风插…

Tencent OS下逻辑卷(LVM)创建和扩容

测试环境是一个虚拟机,原配置1个虚拟盘。 创建4个虚拟盘,每盘2G并挂载在虚拟主机上,启动虚拟主机开始测试。 LVM英文是Logical Volume Manager,直接翻译为逻辑卷管理。 这种磁盘管理模式比较灵活,在磁盘空间不足的时…

深入浅出C++ ——容器适配器

文章目录一、容器适配器二、deque类简介1. deque的原理2. deque迭代器3. deque的优点和缺陷4. 为什么选择deque作为stack和queue的底层默认容器一、容器适配器 适配器的概念 适配器是STL六大核心组件之一,它是一种设计模式,该种模式是将一个类的接口转换…

大规模 IoT 边缘容器集群管理的几种架构-2-HashiCorp 解决方案 Nomad

前文回顾 大规模 IoT 边缘容器集群管理的几种架构-0-边缘容器及架构简介大规模 IoT 边缘容器集群管理的几种架构-1-RancherK3s 📚️Reference: IoT 边缘计算系列文章 HashiCorp 解决方案 - Nomad Docker 简介 Nomad: 一个简单而灵活的调度器和编排器,…

网络工程课(二)

ensp配置vlan 一、配置计算机ip地址和子网掩码 二、配置交换机LSW1 system-view [Huawei]sysname SW1 [SW1]vlan batch 10 20 [SW1]interface Ethernet0/0/1 [SW1-Ethernet0/0/1]port link-type access 将接口设为access接口 [SW1-Ethernet0/0/1]port default vlan 10 [SW1-E…

【MyBatis】源码学习 04 - 从 MapperMethod 简单分析一条 SQL 的映射操作流程

文章目录前言参考目录学习笔记1、测试代码说明2、binding 包的主要功能3、获取 Mapper 接口实例过程4、SQL 语句执行流程4.1、方法调用器4.2、MapperMethod 绑定方法4.2.1、SqlCommand4.2.2、MethodSignature4.3、MapperMethod#execute前言 本文内容对应的是书本第 13 章的内容…

【亲测2022年】网络工程师被问最多的面试笔试题

嗨罗~大家好久不见,主要是薄荷呢主业还是比较繁忙的啦,之前发了一个面试题大家都很喜欢,非常感谢各位大佬对薄荷的喜爱,嘻嘻然后呢~薄荷调研了身边的朋友和同事,发现我们之前去面试,写的面试题有很多共同的…

C++ Effictive 第6章 继承与面向对象设计 笔记

继承意味着"is-a"。如果B继承自A,那么B is-a A。 子类声明与父类函数同名的函数时,父类函数会被遮掩。 使用using Base::func(args...);父类所有func的重载函数都在子类中被声明。此举下,如果子类函数与父类函数参数也一…

不要对chatgpt过度反思 第一部分

最近一段时间,chatgpt很热,随意翻一些文章或视频,一些非常整齐一致的怪论,时不时都会冒出来。 为什么这种革命性创新又出现美国? 为什么我国互联网只会电商,没有创新? 为什么我们做不出来&…

列表推导式_Python教程

内容摘要 Python中存在一种特殊的表达式,名为推导式,它的作用是将一种数据结构作为输入,再经过过滤计算等处理,最后输出另一种数据结构。根据数据结构的不同会被分为列表推导式、 文章正文 Python中存在一种特殊的表达式&#x…