Linux火墙管理及优化

news2025/5/24 16:13:37

网络环境配置

使用3个新的虚拟机【配置好软件仓库和网络的】

F1

192.168.150.133

NAT

F2

192.168.150.134

192.168.10.20

NAT

HOST-ONLY    网络适配仅主机

F3

192.168.10.30

HOST-ONLY    网络适配仅主机

1 ~]# hostnamectl hostname double1.timinglee.org     【更改虚拟机姓名】

[root@double2 ~]# hostnamectl hostname double2.timinglee.org

[root@double3 ~]# hostnamectl hostname double3.timinglee.org

2 ~]# vmset.sh ens192 192.168.10.20        【使用# ip a查看地址ens后面数字再更改】

3 ~]# vmset.sh ens160 192.168.10.30

# vim /etc/NetworkManager/system-connections/ens160.nmconnection     【修改网关】

# nmcli connection reload                【重启】

# nmcli connection up ens160             【启动ens160】

# route -n   查看结果:

什么是防火墙

从功能角度来讲

        防火墙是位于内部网和外部网之间的屏障,它按照系统管理员预先定义好的规则来控制数据包的进出

从功能实现角度来讲,

        火墙是系统内核上的一个模块netfilter(数据包过滤机制)

        通过netfiler来管理kernelspace中的策略

netfilter简介

        Netfilter是Linux2.4.x引入的一个子系统

        它作为一个通用的、抽象的框架,提供一整套的hook函数的管理机制,使得诸如数据包过滤、网络地址转换(NAT)和基于协议类型的连接跟踪等等

        netfilter分析OSI七层协议的2、3、4层

        onetfiler可以直接分析数据包头部数据,包括硬件地址,软件地址、TCP、UDP、ICMP等数据包的信息都可以进行过滤分析

        oInux的netfilter机制可以进行的工作有:

                。拒绝让Internet的数据包进入主机的某些端口

                。拒绝让某些来源ip的数据包进入

                。拒绝让带有某些特殊标志(flag)数据包进入,最常拒绝的是带SYN主动连接标志的包

                。分析硬件地址(MAC)来决定连接与否

                。地址转换

        防火墙并不能有效阻挡病毒或木马程序,并且防火墙对于内部LAN的攻击无能为力

netfiler策略管理工具

        onetfilter这个内核网络栈过滤框架的使用需要通过iptables或nftables来进行与netfilter进行交互工具常用种类

        oiptables服务使用iptables交互RHEL6之前系统默认使用此服务,管理手段丰富,配置比较复杂

        ofirewalld服务使用nftables交互RHEL6及之后的版本中默认使用此服务,配置类似windows火墙,功能模块度高,使用简单。

netfilter的五类hook函数及iptables的默认表和链

NF_IP_PRE_ROUTING【将要进入的】:位于路由之前,报文一致性检查之后(报文一致性检查包括:报文版本、报文长度和checksum

NF_IP_LOCAL_IN【进入主机的数据包】:位于报文经过路由之后,并且目的是本机的

NF_IP_FORWARD【经过的数据包】:位于在报文路由之后,目的地非本机的。

NF_IP_LOCAL_OUT【进入主机的数据包】:由本机发出去的报文,并且在路由之前。

NF_IP_POST_ROUTING【将要离开的】:所有即将离开本机的报文

内核空间的iptables

        oIptables是基于Netfilter框架实现的报文选择系统

        oiptables用于报文的过滤、网络地址转换和报文修改等功能

        oIptables本质上是包含了5个规则表,而规则表则包含了一些列的报文的匹配规则以及操作目标

1、raw表:

        第一优先级的表,设置raw表规则后,不会对数据包进行链接跟踪和NAT转换,使用于

PREROUTING和OUTPUT链,对应的动作为NOTRACK。

2、mangle表:

        第二优先级的表,根据规则,修改数据包的TOS(Typeofservice,服务类型)、TTL(TimeToLive,生存周期)以及设置Mark标记,以实现Qos以及策略路由等。

3、nat表:

        第三优先级的表,网络地址转换表,用于修改源和目的的地址,分SNAT(源目的地址转换)和DNAT(目的地址转换)。

4、filter表:

        第四优先级的表,用于控制到达链(forward链、input链、output链)上的数据包,是放行(accepte)、丢弃(drop)或者拒绝(reject)。

5、security表:

        最不常用的表(通常,我们说iptables只有4张表,security表是新加入的特性),用于在数据包上应用SELinuxo

iptables服务

        iptables服务是用户管理内核空间的iptables的管理工具,通过iptables书写内核空间的iptables策略。

        iptables的规则是至上而下的读取方式,遇到与数据包信息匹配的规则后直接采用。

        iptables的规则默认保存在内存中,如果需要永久保存需要把策略以字符的形式保存 到/etc/sysconfig/iptables中。

启动iptables 服务

2 ~]# dnf install iptables-nft-services.noarch -y           【下载】

# systemctl disable --now firewalld                  【开火墙】

# systemctl mask firewalld

# systemctl enable --now iptables.service

# iptables -L                  【列出iptables表】

# iptables -F               【刷新iptables表】

再次 # iptables -L 刷新结果:

# cat /etc/sysconfig/iptables         【查看iptables文件内容】

# service iptables save        【保存当前火墙状态】

# cat /etc/sysconfig/iptables   运行结果:

iptables命令参数

2 ~]# systemctl enable --now nginx

1/3 ~]# curl 192.168.(150/10).(134/20)可以访问到F2了

        -t  对指定的表进行操作,table必须是raw,nat,filter,mangle中的一个。默认是filter表。

        -p  指定要匹配的数据包协议类型

        -s  --source address/mask:把指定的一个或者一组地址作为源地址,按此规则进行过滤。当后面没有mask时,address是一个地址,比如:192.168.1.1;当mask指定时,可以表示一组范围内的地址,比如:192.168.1.0/255.255.255.0

        -d  --destination address/mask:地址格式同上,但指定地址为目的地址,按此进行过滤

        -i  --in-interface name:指定数据包的来自来自网络接口,比如最常见的etho。注意:它只对INPUT,FORWARD,PREROUTING这三个链起作用。如果没有指定此选项,说明可以来自任何一个网络接口。同前面类似,"!"表示取反

2 ~]# iptables -A INPUT -i lo -j ACCEPT    【允许本机环回接口访问】

        -O  --out-interface name:指定数据包出去的网络接口。只对OUTPUT,FORWARD,POSTROUTNG三个链起作用

        -L  --list[chain]列出链chain上的所有规则,如果没有指定链,列出表上所有链的所有规则

        -A  --append chain rule-specification:在指定链chain的末尾插入指定的规则,也就是说,这条规则会被放到最后,最后才会被执行。规则是由后面的匹配来指定INPUT【限制对方进来】   FORWARD   OUTPUT【限制对方出去】

2 ~]# iptables -t filter -A INPUT -p tcp --dport 80 -s 192.168.150.133 -j REJECT

【不允许80接口被133访问】

# iptables -t filter -A INPUT -p tcp --dport 80 ! -s 192.168.10.128 -j REJECT

【仅允许128访问80接口】

# iptables -nL   查看结果:

        -I  --insert chain [rulenum] rule-specification:在链chain中的指定位置插入条或多条规则。如果指定的规则号是1,则在链的头部插入。这也是默认的情况,如果没有指定规则号

注意:火墙读取策略是从第一条开始读取的

# iptables -I INPUT 1 -i lo -j ACCEPT    【添加到第一条,允许本机环回接口访问】

        -D  --delete chain rule-specification-D,--delete chain rulenum:在指定的链chain中删除一个或多个指定规则

# iptables -D INPUT 1       【删除第一条规则】

        -R  Replays替换/修改第几条规则

# iptables -R INPUT 1 -p tcp --dport 22 -s 192.168.150.133 -j ACCEPT     【替换端口为22】

        -P  --policy chain target:为指定的链chain设置策略target。注意,只有内置的链才允许有策略,用户自定义的是不允许的

        -F  --flush [chain]清空指定链chain上面的所有规则。如果没有指定链,清空该表上所有链的所有规则

        -N  --new-chain chain用指定的名字创建一个新的链

# iptables -N lee       【新建链表lee】

        -E  --rename-chain old-chain new-chain:用指定的新名字去重命名指定的链。这并不会对链内部照成任何影响

# iptables -E lee LEE         【更改lee链表名字】

        -X  --delete-chain [chain]:删除指定的链,这个链必须没有被其它任何规则引用,而且这条上必须没有任何规则。如果没有指定链名,则会删除该表中所有非内置的链

# iptables -X LEE             【删除链表LEE】

        -Z  --zero [chain]:把指定链,或者表中的所有链上的所有计数器清零

        -j  --jump target<指定目标>:即满足某条件时该执行什么样的动作。target可以是内置的目标,比如ACCEPT,也可以是用户自定义的链

        -h  显示帮助信息

snat地址转换

2 ~]# iptables -F       【删除所有策略】

# iptables -t nat -A POSTROUTING -o ens160 -j SNAT --to-source 192.168.150.134

【将所有从ens160出去的网址都把地址改为2 ~]150.134,用# ip a 查看自身ens的号码】

# iptables -t nat -nL  查看结果:

3 ~]# ip route add default via 192.168.10.20         【添加网关】

# route -n 查看结果:

在做nat实验时需要开启双网卡主机的内核路由功能,否则双网卡主机的两个网卡如果不在同一个洪范范围是无法通信的。

2 ~]# vim /etc/sysctl.conf          【配置内核路由功能】

# sysctl -p  查看结果:

现在3 ~]10.128可以访问到1 ~]150.133了

dnat地址转换

2 ~]# iptables -t nat -A PREROUTING -i ens160 -j DNAT --to-dest 192.168.10.128

【将所有从ens160进入(访问)的网址都把地址改为3 ~]10.128

# iptables -t nat -nL 查看结果:

1 ~]# ssh -l root 192.168.150.134  访问结果:

firewalld管理

frewallid服务管理万式与iptables的管理方式区別

        • iptables是基于Linux内核的Netfiten子系统构建的,直接操作Netfilter;

libnftables库与Netfilter交互,提供了一个更高的抽象层

        • iptables使用基于表的规则集,包括filter、nat、mangle、raw及securty五个表;firewalld采用基于区域的规则集,包括default、public、internal、external和dmz五个区域

        • iptables的配置较为复杂,需要用户掌握特定的命令行语法;firewalld提供了更直观和灵活的配置方式,支持命令行和图形界面

        • 由于firewalld通过libnftables库与Netfilter交互,其性能相对于直接操作Netfilter的iptables来说较低

firewalld域

2 ~]# iptables -t nat -F          【清空指定nat表策略】

# systemctl disable --now iptables.service         【火墙】

# systemctl mask iptables.service

# systemctl unmask firewalld.service

# systemctl enable --now firewalld

# firewall-cmd --list-all  查看结果:

环境配置

2 ~]# vim /etc/firewalld/firewalld.conf         【修改firewalld默认管理底层】

# systemctl restart firewalld                【重启】

firewalld中默认使用的域是pubic

firewalld默认提供的九个zones的调用文件都保存在"/usr/lib/firewalld/zones/"目录下

firewall-cmd命令

2 ~]# firewall-cmd --get-default-zone     【查询默认区域】

# firewall-cmd --set-default-zone=trusted     【更改默认区域为trusted

# firewall-cmd --state           【查看当前状态】

# firewall-cmd --reload          【刷新】

# firewall-cmd --list-all            【查看默认区域】

# firewall-cmd --set-default-zone=public

# firewall-cmd --get-services           【查看可执行服务】

# firewall-cmd --add-service=dns          【临时添加允许dns访问】

# firewall-cmd --list-all 查看结果:

# firewall-cmd --permanent --add-service=dns          【永久更改】

# cat /etc/firewalld/zones/public.xml 查看结果:

# firewall-cmd --remove-service=dns

# firewall-cmd --reload                   【重启才会有效】

# firewall-cmd --permanent --remove-service=dns     【删除dns访问】

# firewall-cmd --reload

# firewall-cmd --list-all 查看结果:

# firewall-cmd --add-source=192.168.10.128/24 --zone=trusted     【默认允许10.128访问】

# firewall-cmd --remove-source=192.168.10.128/24 --zone=trusted     【删除访问策略】

# firewall-cmd --get-active-zones         【查看活跃域】

# firewall-cmd --list-all-zones             【显示所有网卡配置】

# vim /etc/nginx/nginx.conf              【配置网站端口】

# nginx -s reload                       【重启】

# netstat -antlupe | grep nginx  查看修改:

# firewall-cmd --add-service=http         【开启http也无法生效】

# firewall-cmd --add-port=8080/tcp        【允许8080端口访问】

# firewall-cmd --remove-port=8080/tcp      【删除端口】

firewalllld高级规则

Direct Rules

通过 firewall-cmd 工具,可以使用--direct选项在运行时间里增加或者移除链。如果不熟悉 iptables,使用直接接口非常危险,因为您可能无意间导致防火墙被入侵。

I直接端口模式适用于服务或者程序,以便在运行时间内增加特定的防火墙规则。直接端口模式添加的规则优先应用。

2 ~]# firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -p tcp --dport 80 ! -s 192.168.10.128/24 -j ACCEPT        【禁止10.128访问】

# firewall-cmd --direct --get-all-rules         【查看规则】

地址伪装与端口转发

3 ~]# ip route add default via 192.168.10.20

# route -n 查看结果:

2 ~]# firewall-cmd --permanent --add-masquerade    【开启双网卡主机路由器】

# firewall-cmd --reload                        【reload完后F3就可以访问F1了】

2 ~]# firewall-cmd --permanent --add-forward-port=port=22:proto=tcp:toport=22:toaddr=

192.168.10.128              【访问22端口都转到10.128】

# firewall-cmd --reload

1 ~]# ssh -l root 192.168.150.134  访问结果:

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

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

相关文章

Visual Studio 制作msi文件环境搭建

一、插件安装 a. 插件寻找 在 Visual Studio 2017 中&#xff0c;如果你希望安装用于创建 MSI 安装包的插件&#xff0c;第一步是&#xff1a;打开 Visual Studio 后&#xff0c;点击顶部菜单栏中的 “工具”&#xff08;Tools&#xff09;&#xff0c;然后选择下拉菜单中的 “…

鸿蒙进阶——Framework之Want 隐式匹配机制概述

文章大纲 引言一、Want概述二、Want的类型1、显式Want2、隐式Want3、隐式Want的匹配 三、隐式启动Want 源码概述1、有且仅有一个Ability匹配2、有多个Ability 匹配需要弹出选择对话框3、ImplicitStartProcessor::ImplicitStartAbility3.1、GenerateAbilityRequestByAction3.1.1…

antv/g6 图谱封装配置(二)

继上次实现图谱后&#xff0c;后续发现如果要继续加入不同样式的图谱实现起来太过麻烦&#xff0c;因此考虑将配置项全部提取封装到js文件中&#xff0c;图谱组件只专注于实现各种不同的组件&#xff0c;其中主要封装的点就是各个节点的横坐标&#xff08;x&#xff09;,纵坐标…

OpenCV CUDA模块图像过滤------用于创建一个最小值盒式滤波器(Minimum Box Filter)函数createBoxMinFilter()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 该函数创建的是一个 最小值滤波器&#xff08;Minimum Filter&#xff09;&#xff0c;它对图像中每个像素邻域内的像素值取最小值。常用于&…

网络抓包命令tcpdump及分析工具wireshark使用

文章目录 环境文档用途详细信息 环境 系统平台&#xff1a;Linux x86-64 Red Hat Enterprise Linux 8,Linux x86-64 Red Hat Enterprise Linux 7,Linux x86-64 SLES 12,银河麒麟 &#xff08;鲲鹏&#xff09;,银河麒麟 &#xff08;X86_64&#xff09;,银河麒麟&#xff08;龙…

车载诊断架构 --- 车载诊断有那些内容(上)

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 钝感力的“钝”,不是木讷、迟钝,而是直面困境的韧劲和耐力,是面对外界噪音的通透淡然。 生活中有两种人,一种人格外在意别人的眼光;另一种人无论…

【Hadoop】大数据技术之 HDFS

目录 一、HDFS 概述 1.1 HDFS 产出背景及定义 1.2 HDFS 优缺点 1.3 HDFS 组成架构 1.4 HDFS 文件块大小 二、HDFS 的Shell 操作 三、HDFS 的读写流程&#xff08;面试重点&#xff09; 3.1 HDFS 写数据流程 3.2 HDFS 读数据流程 四、DataNode 4.1 DataNode 的工作机制…

聊一下CSS中的标准流,浮动流,文本流,文档流

在网络上关于CSS的文章中&#xff0c;有时候能听到“标准流”&#xff0c;“浮动流”&#xff0c;“定位流”等等词语&#xff0c;还有像“文档流”&#xff0c;“文本流”等词&#xff0c;这些流是什么意思&#xff1f;它们是CSS中的一些布局方案和特性。今天我们就来聊一下CS…

ATGM332D-F8N22单北斗多频定位导航模块

ATGM332D-F8N 系列模块是 12.216mm 尺寸的高性能单北斗多频定位导航模块。该系列模块产品基于中科微新一代 SOC 单北斗多频芯片 AT9880B&#xff0c;支持北斗二号和北斗三号的 B1I、B1C、B2I、B3I、B2a 和 B2b 频点信号。 主要特征 多频点单北斗接收机 支持北斗二号、北斗三号…

2024年热门AI趋势及回顾

人工智能的崛起 2024 年可能会被铭记为人工智能不再是一种技术新奇事物&#xff0c;而是成为现实的一年。微软、Salesforce 和 Intuit 等巨头将人工智能融入主流企业解决方案&#xff1b;从文案写作到数据分析&#xff0c;专门的人工智能应用程序和服务如雨后春笋般涌现&#…

3. OpenManus-RL中使用AgentGym建立强化学习环境

AgentGym概述 AgentGym是为评估和开发大模型agent而设计的支持多环境和多任务的框架。该框架统一采用ReAct格式&#xff0c;提供多样化的交互环境和任务&#xff0c;支持实时反馈和并发操作。 What is Ai Agent&#xff08;基于大模型的智能体&#xff09;? 首先是人造实体&…

C++性能测试工具——sysprof的使用

一、sysprof sysprof相对于前面的一些性能测试工具来说&#xff0c;要简单不少。特别是其图形界面的操作&#xff0c;非常容易上手&#xff0c;它还支持分析文件的保存和导入功能&#xff0c;这是一个非常不错的功能。做为一款系统性能测试工具&#xff0c;它支持多种硬件平台…

树莓派内核源码的下载,配置,编译和替换

共享文件夹的创建 ubuntu创建共享文件夹可以实现和本地windows跨系统文件共享 下面是创建步骤 先在windows准备一个文件夹来当做共享文件夹 树莓派内核源码下载 1.在树莓派终端输入以下指令查看内核版本 uname -r我这里是已经编译替换过后的版本 2.选择树莓派对应的版本号下…

CentOS停止维护了,解决yum不能安装软件的问题

最近在使用CentOS的yum命令安装软件时&#xff0c;出现了如下错误&#xff1a; 原因&#xff1a; 这是因为CentOS在2024 年 6 月 30 日停止维护了&#xff0c;同时也移除了相关的软件镜像仓库&#xff0c;导致网站地址访问不了&#xff0c;从而下载不了软件。 解决方法&#xf…

过压保护电路设计和计算

设备供电电压因各种原因变得过高会烧坏设备,因此可以在前级加过压保护电路。 稳压二极管+PMOS 电路分析 1、当输入电压 Vin < 5.1V 时:(下图以输入电压 Vin = 5V 举例) D1是5.1V稳压管,此时输入电压Vin才5V,小于5.1V,所以稳压管D1未进入稳压状态,不导通。 5.1V稳…

20250523-BUG:无法加载“GameLib/Framework.h“头文件(已解决)

BUG&#xff1a;无法加载"GameLib/Framework.h"头文件&#xff08;已解决&#xff09; 最近在打开新的C项目时报了这个错&#xff0c;我是按照以下步骤来排除的BUG&#xff0c;希望对您有所帮助~ 检查【C/C】-【附加包含目录】中的路径有无问题&#xff0c;一般需要加…

OpenCv高阶(8.0)——答题卡识别自动判分

文章目录 前言一、代码分析及流程讲解&#xff08;一&#xff09;初始化模块正确答案映射字典&#xff08;题目序号: 正确选项索引&#xff09;图像显示工具函数 &#xff08;二&#xff09;轮廓处理工具模块&#xff08;三&#xff09;几何变换核心模块 二、主处理流程图像读取…

Python语法特点与编码规范

注释 单行注释 把#号当做注释符号 多行注释 python中并没有规定多行注释标记&#xff0c;通常使用单引号作为多行注释 中文注释 规定文件所用编码&#xff0c;当时是为解决python2不支持中文的问题 #codingutf-8代码缩进 python采用代码缩进和冒号区分代码层次&#xff0c…

反本能---如何对抗你的习以为常

目录 一、概述 二、自我提升 &#xff08;一&#xff09;我们为什么总想拖延 &#xff08;二&#xff09;如何有效应对拖延 &#xff08;三&#xff09;如何更好的自我控制 &#xff08;四&#xff09;为啥付出了没有回报 &#xff08;五&#xff09;如何提高学习效率 三…

(15)关于窗体的右键菜单的学习与使用,这关系到了信号与事件 event

&#xff08;1&#xff09;起因来源于 4.11 的老师讲的例题&#xff0c;标准的&#xff0c;规范的使用右键菜单的代码及参考资料如下&#xff1a; &#xff08;2&#xff09; 接着脱离上面的那个复杂的环境&#xff0c;用简单的例子测试一下 &#xff1a; 说明老师讲的都是对…