网络环境配置

使用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.pswp.cn/web/81027.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/81027.shtml
英文地址,请注明出处:http://en.pswp.cn/web/81027.shtml

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

相关文章

java配置webSocket、前端使用uniapp连接

一、这个管理系统是基于若依框架&#xff0c;配置webSocKet的maven依赖 <!--websocket--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId></dependency> 二、配…

基于Yolov8+PyQT的老人摔倒识别系统源码

概述 ​​基于Yolov8PyQT的老人摔倒识别系统​​&#xff0c;该系统通过深度学习算法实时检测人体姿态&#xff0c;精准识别站立、摔倒中等3种状态&#xff0c;为家庭或养老机构提供及时预警功能。 主要内容 ​​完整可运行代码​​ 项目采用Yolov8目标检测框架结合PyQT5开发…

Oracle 创建外部表

找别人要一下数据&#xff0c;但是他发来一个 xxx.csv 文件&#xff0c;怎么办&#xff1f; 1、使用视图化工具导入 使用导入工具导入&#xff0c;如 DBeaver&#xff0c;右击要导入的表&#xff0c;选择导入数据。 选择对应的 csv 文件&#xff0c;下一步就行了&#xff08;如…

【华为OD- B卷 01 - 传递悄悄话 100分(python、java、c、c++、js)】

【华为OD- B卷 01 - 传递悄悄话 100分(python、java、c、c++、js)】 题目 给定一个二叉树,每个节点上站一个人,节点数字表示父节点到该节点传递悄悄话需要花费的时间。 初始时,根节点所在位置的人有一个悄悄话想要传递给其他人,求二叉树所有节点上的人都接收到悄悄话花…

房贷利率计算前端小程序

利率计算前端小程序 视图效果展示如下&#xff1a; 在这里插入代码片 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0&qu…

自制操作系统day8 (鼠标数据取得、通往32位模式之路、A20GATE、切换到保护模式、控制寄存器cr0-cr4以及cr8、ALIGNB)

day8 鼠标数据取得方法 fifo8_init(&mousefifo, 128, mousebuf); for (;;) { io_cli(); if (fifo8_status(&keyfifo) fifo8_status(&mousefifo) 0) { io_stihlt(); } else { if (fifo8_status(&keyfifo) ! 0) { i fifo8_get(&keyfifo); io_sti(); spr…

IP大科普:住宅IP、机房IP、原生IP、双ISP

不同类型的IP在跨境电商、广告营销、网络技术、数据收集等领域都有广泛应用&#xff0c;比如常见的住宅IP、机房IP、原生IP、双ISP等&#xff0c;这些IP分别都有什么特点&#xff0c;发挥什么作用&#xff0c;适合哪些业务场景&#xff1f; 一、IP类型及其作用 1.住宅IP 住宅…

Elasticsearch面试题带答案

Elasticsearch面试题带答案 Elasticsearch面试题及答案【最新版】Elasticsearch高级面试题大全(2025版),发现网上很多Elasticsearch面试题及答案整理都没有答案,所以花了很长时间搜集,本套Elasticsearch面试题大全,Elasticsearch面试题大汇总,有大量经典的Elasticsearch面…

Eigen与OpenCV矩阵操作全面对比:最大值、最小值、平均值

功能对比总表 功能Eigen 方法OpenCV 方法主要区别最大值mat.maxCoeff(&row, &col)cv::minMaxLoc(mat, NULL, &maxVal, NULL, &maxLoc)Eigen需要分开调用&#xff0c;OpenCV一次获取最小值mat.minCoeff(&row, &col)cv::minMaxLoc(mat, &minVal, NU…

echarts之双折线渐变图

vue3echarts实现双折线渐变图 echarts中文官网&#xff1a;https://echarts.apache.org/examples/zh/index.html 效果图展示&#xff1a; 整体代码如下&#xff1a; <template><div id"lineChart" style"width:100%;height:400px;"></di…

MD编辑器推荐【Obsidian】含下载安装和实用教程

为什么推荐 Obsidian &#xff1f; 免费 &#xff08;Typora 开始收费了&#xff09;Typora 实现的功能&#xff0c;它都有&#xff01;代码块可一键复制 文件目录支持文件夹 大纲支持折叠、搜索 特色功能 – 白板 特色功能 – 关系图谱 下载 https://pan.baidu.com/s/1I1fSly…

vue 鼠标经过时显示/隐藏其他元素

方式一&#xff1a; 使用纯css方式 , :hover是可以控制其他元素 1、 当两个元素是父子关系 <div class"all_" ><div> <i class"iconfont icon-sun sun"></i></div> </div> .all_{} .sun {display: none; /* 默认…

静态网站部署:如何通过GitHub免费部署一个静态网站

GitHub提供的免费静态网站托管服务可以无需担心昂贵的服务器费用和复杂的设置步骤&#xff0c;本篇文章中将一步步解如何通过GitHub免费部署一个静态网站&#xff0c;帮助大家将创意和作品快速展现给世界。 目录 了解基础情况 创建基础站点 在线调试站点 前端项目部署 部署…

Pytorch里面多任务Loss是加起来还是分别backward? | Pytorch | 深度学习

当你在深度学习中进入“多任务学习(Multi-task Learning)”的领域,第一道关卡可能不是设计网络结构,也不是准备数据集,而是:多个Loss到底是加起来一起backward,还是分别backward? 这个问题看似简单,却涉及PyTorch计算图的构建逻辑、自动求导机制、内存管理、任务耦合…

基于DPABI提取nii文件模板的中心点坐标

基于DPABI提取nii文件模板的中心点坐标 在使用DPABI&#xff08;Data Processing Assistant for Resting-State fMRI&#xff09;处理NIfTI&#xff08;.nii&#xff09;文件时&#xff0c;可以通过以下步骤提取模板中每个坐标点的中心点坐标&#xff1a;https://wenku.csdn.n…

redis 基本命令-17 (KEYS、EXISTS、TYPE、TTL)

Redis 基本命令&#xff1a;KEYS、EXISTS、TYPE、TTL Redis 提供了一套基本命令&#xff0c;这些命令对于管理密钥和了解数据库中存储的数据至关重要。这些命令虽然简单&#xff0c;但提供了对 Redis 实例的结构和状态的重要见解。具体来说&#xff0c;KEYS、EXISTS、TYPE 和 …

加速leveldb查询性能之Cache技术

加速leveldb查询性能之Cache技术 目录 1.两种Cache2.Table Cache3.Block Cache 注&#xff1a;本节所有内容更新至星球。 学习本节之前最好提前需要学习前面两篇文章&#xff0c;这样便好理解本节内容。 多图文讲解leveldb之SST/LDB文件格式 【深入浅出leveldb】LRU与哈希表 1.…

5.2.3 使用配置文件方式整合MyBatis

本实战通过使用Spring Boot和MyBatis技术栈&#xff0c;实现了文章列表显示功能。首先&#xff0c;通过创建ArticleMapper接口和对应的ArticleMapper.xml配置文件&#xff0c;实现了对文章数据的增删改查操作&#xff0c;并通过单元测试验证了功能的正确性。接着&#xff0c;通…

Node.js 源码架构详解

Node.js 的源码是一个庞大且复杂的项目&#xff0c;它主要由 C 和 JavaScript 构成。要完全理解每一部分需要大量的时间和精力。我会给你一个高层次的概述&#xff0c;并指出一些关键的目录和组件&#xff0c;帮助你开始探索。 Node.js 的核心架构 Node.js 的核心可以概括为以…

【NLP 76、Faiss 向量数据库】

压抑与痛苦&#xff0c;那些辗转反侧的夜&#xff0c;终会让我们更加强大 —— 25.5.20 Faiss&#xff08;Facebook AI Similarity Search&#xff09;是由 Facebook AI 团队开发的一个开源库&#xff0c;用于高效相似性搜索的库&#xff0c;特别适用于大规模向…