防火墙基础

安全技术

  • 入侵检测系统:以提供报警和事后监督为主,不采取措施

  • 入侵防御系统 :透明模式工作,分析数据包的内容如:溢出攻击、拒绝服务攻击、木马、蠕虫、系统漏洞等进行准确的分析判断,在判定为攻击行为后立即予以 阻断,主动而有效的保护网络的安全,一般采用在线部署方式。(必经之路)

  • 防火墙:隔离功能,工作在网络或主机边缘,对进出网络或主机的数据包基于一定的规则检查,并在匹配某规则时由规则定义的行为进行处理的一组功能的组件,基本上的实现都是默 认情况下关闭所有的通过型访问,只开放允许访问的策略,会将希望外网访问的主机放在DMZ (demilitarized zone)网络中.

防火墙的分类

传输层                   端口              防火墙
网络层                   ip                  路由器 三层 
数据链路层            mac              交换机

按保护范围划分:

  • 主机防火墙:服务范围为当前一台主机

  • 网络防火墙:服务范围为防火墙一侧的局域网

按实现方式划分:

  • 硬件防火墙:在专用硬件级别实现部分功能的防火墙;另一个部分功能基于软件实现,如:华为, 山石hillstone,天融信,启明星辰,绿盟,深信服, PaloAlto , fortinet, Cisco, Checkpoint, NetScreen(Juniper2004年40亿美元收购)等

  • 软件防火墙:运行于通用硬件平台之上的防火墙的应用软件,Windows 防火墙 ISA --> Forefront

按网络协议划分:

  • 网络层防火墙:OSI模型下四层,又称为包过滤防火墙

  • 应用层防火墙/代理服务器:proxy 代理网关,OSI模型七层

包过滤防火墙

网络层对数据包进行选择,选择的依据是系统内设置的过滤逻辑,被称为访问控制列表(ACL),通过检查数据流中每个数据的源地址,目的地址,所用端口号和协议状态等因素,或他们的组合来确定是否 允许该数据包通过

优点:对用户来说透明,处理速度快且易于维护

缺点:无法检查应用层数据,如病毒等

应用层防火墙

应用层防火墙/代理服务型防火墙,也称为代理服务器(Proxy Server)

将所有跨越防火墙的网络通信链路分为两段

内外网用户的访问都是通过代理服务器上的“链接”来实现优点:在应用层对数据进行检查,比较安全

缺点:增加防火墙的负载

正反向代理

正向代理:(翻墙),代理的是客户端,绕开防火墙限制,加快访问速度

反向代理:代理的是服务端

轮询:代理的客户端,按照1:1:1的规则分配

加权:按照自定的规则分配(1:2:4)

Linux 防火墙的基本认识

Linux防火墙是由Netfilter组件提供的,Netfilter工作在内核空间,集成在linux内核中

Netfilter 是Linux 2.4.x之后新一代的Linux防火墙机制,是linux内核的一个子系统。Netfilter采用模块化设计,具有良好的可扩充性,提供扩展各种网络服务的结构化底层框架。Netfilter与IP协议栈是无缝契合,并允许对数据报进行过滤、地址转换、处理等操作

Netfilter官网文档:https://netfilter.org/documentation/ 

netfiler中的四个表五个链

数据流向表

内核中数据包传输的过程:

首先:当一个数据进入网卡的时候,数据包会先进入prerouting链,内核根据数据包的目的ip来判断是否需要转发至下一个链表——forward或者input;

如果是到本机的:到达数据包会到INPUT链,到达之前先查规则,看是否放行,允许的话继续往下就进入了本机,任何进程都会受到该数据。本机上处理数据包的程序会发送数据包到output链,也是根据output的链表规则查看是否放行;最后如果ouput允许的话,再根据数据包的目的ip来进行转发,有一个路由判断,数据包会到到达postrouting,再次查询策略表,放行的话就继续,不行就丢弃; 

另一方面,如果是需要进行转发的数据包,此时本机是一台路由功能的服务器,一次匹配forward、postrouting规则链表,允许则转发,不允许则丢弃;

netfilter中的五个勾子函数和报文流向

netfilter在内核中选取五个位置放了五个勾子,function(INPUT  OUTPUT FORWARD PREROUTING POSTROUTING),而这五个hook function向用户开放,用户可以通过一个命令工具向其写入规则。(iptables就是一种命令工具)

三种报文流向

流入本机:PREROUTING --> INPUT-->用户空间进程

流出本机:用户空间进程 -->OUTPUT--> POSTROUTING

转发:PREROUTING --> FORWARD --> POSTROUTING

 五个链:

input:            进入本机
output:          出本机
prerouting:    路由选择前
postrouting:   路由选择后
forward:         转发

四个规则表(容纳各种规则链)

raw:       确定是否对该数据包进行状态跟踪(跟踪)
mangle: 为数据包设置标记(标记)
nat:        地址转换
filter:       确定是否放行该数据包(过滤)
注:表的作用是存放链,链决定了在什么位置控制流量,表中有链,链中有规则

注意:表中有链,链中有规则

表的优先级:

security -->raw-->mangle-->nat-->filter

链:表示在什么时机处理流量

表的用处:存放链和规则,控制流量

iptables的组成

Linux 的防火墙体系主要工作在网络层,针对 TCP/IP 数据包实施过滤和限制,属于典型的包过滤防火墙(或称为网络层防火墙)。

netfilter/iptables:IP 信息包过滤系统,由netfilter 和 iptables组成。

  • netfilter:属于“内核态”又称内核空间的防火墙功能体系。
  • iptables:属于“用户态”( 又称为用户空间)的防火墙管理体系。是一种用来管理Linux防火墙的命令程序,它使插入、修改和删除数据包过滤表中的规则变得容易,通常位于/sbin/iptables目录下。

  • raw表: 主要用来决定是否对数据包进行状态跟踪 包含两个规则链,OUTPUT,                                    PREROUTING
  • mangle表 : 修改数据包内容,用来做流量整形的,给数据包设置标记。包含五个规则链,                           INPUT、 OUTPUT、 FORWARD、 PREROUTING、 POSTROUTING
  • nat表: 负责网络地址转换,用来修改数据包中的源、目标IP地址或端口。包含三个规则链,               OUTPUT、PREROUTING、POSTROUTING
  • filter表: 负责过滤数据包,确定是否放行该数据包(过滤)。包含三个链,即PREROUTING、                POSTROUTING、OUTPUT
iptables的命令格式
iptables -t   指定表   子命令   指定链    规则
 管理选项

-A:在指定链末尾追加
-I:在指定链中插入一条新的,未指定序号默认作为第一条
-P:指定默认规则,一般默认的规则是ACCEPT()黑名单, ACCEPT为黑名单(默认允许所有访              问),DROP为白名单(默认拒绝所有访问)
-D:删除指定链
-R:替换指定链
-Z:清空链的计数器

 规则选项

-s:         源地址
-d:         目标IP地址
-p:         协议(tcp,udp,icmp DHCP..)
--sport:  源端口
--dport:  目标端口
-i:           流量进口网卡
-o:          流量出口网卡

j:           后面跟着跳转策略(需要大写,可补全)

跳转

DROP:丢弃
REJECT:拒绝
ACCEPT:允许
LOG:添加备注(日志)

SNAT:修改数据包的源ip地址
DNAT:修改数据包的目标ip地址
MASQUERADE:伪装成一个非固定公网IP地址

查询命令

iptables -vnL:                     看表(v:详细 ,n:数字化 ,L:列表)

查询并显示规则编号

iptables -vnL --line -num:    看表时给规则加上序号
iptables -F :                        清空所有规则

iptables

centos7是默认使用firewalld防火墙,需要永久关闭。

[root@localhost ~]#rpm -q iptables

iptables-1.4.21-35.el7.x86_64

iptables的操作

##拒绝来自192.168.11.10主机访问本机的22端口
[root@localhost ~]#iptables -A INPUT -s 192.168.20.6 -p tcp --dport 22 -j DROP 
##查看filter规则表

[root@localhost ~]#iptables -vnL
##查看filter规则表,并显示规则编号

[root@localhost ~]#iptables -vnL --line-num
##删除规则编号2

[root@localhost ~]#iptables -D INPUT 2

[root@localhost ~]#iptables -vnL --line-num

[root@localhost ~]#iptables -vnL --line-num

[root@localhost ~]#iptables -F       ##清空

 设置默认策略

iptables 的各条链中,默认策略是规则匹配的最后一个环节——当找不到任何一条能够匹配数据包的规则时,则执行默认策略。默认策略的控制类型为 ACCEPT(允许)、DROP(丢弃)两种。

语法:iptables [-t表名] -P <链名> <控制类型>

[root@localhost ~]#iptables -t filter -P INPUT DROP

##修改默认input为drop

 添加允许连接本机回环网卡

[root@localhost ~]#iptables -A INPUT -i lo -j ACCEPT 

##添加允许流量进入本机回环网卡

[root@localhost ~]#iptables -A INPUT -s 192.168.20.1 -j ACCEPT

##192.168.20.1代表的是电脑真机

 

##先在accept基础上设置黑名单,等同于iptables -P INPUT DROP
[root@localhost ~]#iptables -A INPUT -j DROP
[root@localhost ~]#iptables -vnL
 

##在第一行插入,添加允许xshell连接本机
[root@localhost ~]#iptables -I INPUT -s 192.168.20.1 -j ACCEPT 
[root@localhost ~]#iptables -vnL

通用匹配

直接使用,不依赖于其他条件或扩展,包括网络协议、IP地址、网络接口等条件。

协议匹配: -p协议名
地址匹配: -s 源地址、-d目的地址

#可以是IP、网段、域名、空(任何地址)
接口匹配: -i入站网卡、-o出站网卡  

iptables -A FORWARD ! -p icmp -j ACCEPT
iptables -A INPUT -s 192.168.91.101 -j DROP
iptables -I INPUT -i ens33 -s 192.168.91.0/24 -j DROP

iptables -I INPUT -p icmp -j DROP
iptables -A FORWARD ! -p icmp -j ACCEPT           //感叹号”!”表示取反

 

隐含扩展

man iptables-extensions

查看扩展帮助

iptables 在使用-p选项指明了特定的协议时,无需再用-m选项指明扩展模块的扩展机制,不需要手动加载扩展模块

要求以特定的协议匹配作为前提,包括端口、TCP标记、ICMP类型等条件。 端口匹配: --sport 源端口、--dport 目的端口 #可以是个别端口、端口范围

[!] --source-port, --sport port[:port]:匹配报文源端口,可为端口连续范围
[!] --destination-port,--dport port[:port]:匹配报文目标端口,可为连续范围
[!] --tcp-flags mask comp
     mask 需检查的标志位列表,用,分隔 , 例如 SYN,ACK,FIN,RST
     comp 在mask列表中必须为1的标志位列表,无指定则必须为0,用,分隔tcp协议的扩展选项

--tcp-flags SYN,ACK,FIN,RST SYN 表示要检查的标志位为SYN,ACK,FIN,RST四个,其中SYN必须为1,余下的必须为0,第一次握手
--tcp-flags SYN,ACK,FIN,RST SYN,ACK 第二次握手
#错误包

--tcp-flags ALL ALL  
--tcp_flags ALL NONE
--sport 1000          匹配源端口是1000的数据包
--sport 1000:3000     匹配源端口是1000-3000的数据包
--sport :3000         匹配源端口是3000及以下的数据包
--sport 1000:         匹配源端口是1000及以上的数据包

注意: --sport和--dport 必须配合-p <协议类型>使用

端口可以使用的范围 0-65535

[root@localhost ~]#iptables -A INPUT -p tcp  --sport 20:80 -j REJECT 
#20到80端口 全部被拒

 
TCP标记匹配: --tcp-flags TCP标记:SYN,RST,ACK,SYN
[root@localhost ~]#iptables -I INPUT -i ens33 -p tcp --tcp-flags FIN,RST,ACK SYN -j ACCEPT
#丢弃SYN请求包,放行其他包


[root@localhost html]#iptables -A INPUT -p tcp --dport 20:80 -j DROP 

 
[root@localhost ~]#iptables -I INPUT -s 192.168.20.1 -j ACCEPT 

 

拓展,允许本机去访问192.168.11.9,不允许192.168.11.10 访问本机;

思路,如果是禁止源ip地址的话,数据是有去有回,本机也无法ping另一台主机;那么往底层思考,根据icmp的请求和回复包的type来进行限制,请求是type和code分别是80,回复包type和code分别是00,那就是允许192.168.20.8回复00包,不允许发80请求包,也就是说限制icmp 的type为8即可

#此时其它主机需要配置关于icmp协议的控制类型为REJECT
[root@localhost ~]#iptables -A INPUT -p icmp -j REJECT


#icmp 协议的扩展选项
[!] --icmp-type {type[/code]|typename}
 type/code
 0/0   echo-reply icmp应答
 8/0   echo-request icmp请求

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

六、Nacos源码系列:Nacos健康检查

目录 一、简介 二、健康检查流程 2.1、健康检查 2.2、客户端释放连接事件 2.3、客户端断开连接事件 2.4、小结 2.5、总结图 三、服务剔除 一、简介 Nacos作为注册中心不止提供了服务注册和服务发现的功能&#xff0c;还提供了服务可用性检测的功能&#xff0c;在Nacos…

【Vue3+Vite】路由机制router 快速学习 第四期

文章目录 路由简介路由是什么路由的作用 一、路由入门案例1. 创建项目 导入路由依赖2. 准备页面和组件3. 准备路由配置4. main.js引入router配置 二、路由重定向三、编程式路由(useRouter)四、路由传参(useRoute)五、路由守卫总结 路由简介 路由是什么 路由就是根据不同的 URL…

第八篇:node模版引擎Handlebars及他的高级用法(动态参数)

&#x1f3ac; 江城开朗的豌豆&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 &#x1f4dd; 个人网站 :《 江城开朗的豌豆&#x1fadb; 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! ​ 目录 &#x1f4d8; 引言&#xff1a; &#x1f…

Armv8-M的TrustZone技术之在安全状态和非安全状态之间切换

Armv8-M安全扩展允许在安全和非安全软件之间直接调用。 Armv8-M处理器提供了几条指令来处理状态转换: 下图显示了安全状态转换。 如果入口点的第一条指令是SG且位于非安全可调用内存位置中,则允许从非安全到安全软件的直接API函数调用。 当非安全程序调用安全API时,API通过…

前妻(C#)-基础03-枚举-预处理指令

前妻C#-基础语法03 枚举关于控制台IO及注释C#预处理指令 枚举 枚举是用户定义的整数类型。在声明一个枚举时&#xff0c;要指定改枚举的实例可以包含的一组可接受的值。不仅如此&#xff0c;还可以给值指定易于记忆的名称&#xff0c;如果在代码的某个地方&#xff0c;要试图把…

Java学习day24:线程的同步和锁(例题+知识点详解)

声明&#xff1a;该专栏本人重新过一遍java知识点时候的笔记汇总&#xff0c;主要是每天的知识点题解&#xff0c;算是让自己巩固复习&#xff0c;也希望能给初学的朋友们一点帮助&#xff0c;大佬们不喜勿喷(抱拳了老铁&#xff01;) 往期回顾 Java学习day23&#xff1a;线程构…

ElasticSearch 8.x 使用 snapshot(快照)进行数据迁移

ElasticSearch 1、ElasticSearch学习随笔之基础介绍 2、ElasticSearch学习随笔之简单操作 3、ElasticSearch学习随笔之java api 操作 4、ElasticSearch学习随笔之SpringBoot Starter 操作 5、ElasticSearch学习随笔之嵌套操作 6、ElasticSearch学习随笔之分词算法 7、ElasticS…

儿童护眼台灯怎么选择?一文教你如何选择儿童护眼台灯

护眼台灯是家长最常为孩子购买的用品之一&#xff0c;但是大部分人对它的了解并不多&#xff0c;很多人购买之后反而会觉得眼睛更容易疲劳&#xff0c;有不适的情况&#xff01;最主要的原因是因为挑选的台灯不够专业&#xff0c;次要原因则是使用方法不正确。所以今天跟大家讲…

BI是什么?

企业SaaS服务2B或者其他2C&#xff0c;数据都会越集越多&#xff0c;丰富的数据可视化展示成为销售及老板们的需求&#xff1b;当然通过如下BI了解 你需要思考是不是只是能做、想做、值得做一个&#xff0c;如果写简单的数据统计&#xff0c;至于用不用的上BI都另说&#xff0…

本地部署GeoServe服务并结合内网穿透实现任意浏览器远程访问

文章目录 前言1.安装GeoServer2. windows 安装 cpolar3. 创建公网访问地址4. 公网访问Geo Servcer服务5. 固定公网HTTP地址 前言 GeoServer是OGC Web服务器规范的J2EE实现&#xff0c;利用GeoServer可以方便地发布地图数据&#xff0c;允许用户对要素数据进行更新、删除、插入…

C#学习笔记_类(Class)

类的定义 类的定义是以关键字 class 开始&#xff0c;后跟类的名称。类的主体&#xff0c;包含在一对花括号内。 语法格式如下&#xff1a; 访问标识符 class 类名 {//变量定义访问标识符 数据类型 变量名;访问标识符 数据类型 变量名;访问标识符 数据类型 变量名;......//方…

【Linux】-多线程的知识都收尾(线程池,封装的线程,单例模式,自旋锁)

&#x1f496;作者&#xff1a;小树苗渴望变成参天大树&#x1f388; &#x1f389;作者宣言&#xff1a;认真写好每一篇博客&#x1f4a4; &#x1f38a;作者gitee:gitee✨ &#x1f49e;作者专栏&#xff1a;C语言,数据结构初阶,Linux,C 动态规划算法&#x1f384; 如 果 你 …

深度剖析Sentinel热点规则

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 深度剖析Sentinel热点规则 前言核心概念解析&#xff1a;数字守护者的起源核心概念解析&#xff1a;简单示例演示&#xff1a; 参数索引&#xff1a;规则的基石参数索引的作用&#xff1a;不同场景下选…

2024美国大学生数学建模美赛选题建议+初步分析

总的来说&#xff0c;去年算是美赛环境题元年&#xff0c;去年的开放度是较高的&#xff0c;今年每种赛题类型相对而言平均了起来 提示&#xff1a;DS C君认为的难度&#xff1a;E<BCF<AD&#xff0c;开放度&#xff1a;DBCE<A<F。 以下为A-F题选题建议及初步分析…

小型内衣裤洗衣机哪个牌子好?家用小型洗衣机推荐

相信对于很多用户而言&#xff0c;宁愿强撑着疲惫的身子手洗内衣裤&#xff0c;也不愿把内衣裤与外穿衣物一起放进洗衣机洗。内衣裤与外穿衣物的脏污情况不同&#xff0c;内衣裤是贴身衣物&#xff0c;上面留有人体的汗液和分泌物&#xff0c;有可能带有大量真菌。而外衣上则是…

动环系统断电告警的防误报

机房一般接入的市电为三相380伏特&#xff0c;也有用单向220伏特的。UPS本身提供断电告警的功能&#xff0c;这个告警在各种种类的UPS中都是提供的&#xff0c;不同电压的市电输入都支持&#xff1b;三相电另外有缺相告警事件。但这些告警事件存在抖动或者误判。 瞬间的低压或…

LiveGBS流媒体平台GB/T28181功能-支持配置开启 HTTPS 服务什么时候需要开启HTTPS服务

LiveGBS功能支持配置开启 HTTPS 服务什么时候需要开启HTTPS服务 1、配置开启HTTPS1.1、准备https证书1.1.1、选择Nginx类型证书下载 1.2、配置 LiveCMS 开启 HTTPS1.2.1 web页面配置1.2.2 配置文件配置 2、验证HTTPS服务3、为什么要开启HTTPS3.1、安全性要求3.2、功能需求 4、搭…

Linux基础知识合集

整理了一下学习的一些关于Linux的一些基础知识&#xff0c;同学们也可以通过公众号菜单栏查看&#xff01; 一、基础知识 Linux基础知识 Linux命令行基础学习 Linux用户与组概念初识 Linux文件与目录权限基础 Linux中文件内容的查看 Linux系统之计划任务管理 二、服务器管理 Vm…

Vue中使用 Element-ui form和 el-dialog 进行自定义表单校验清除表单状态

文章目录 问题分析 问题 在使用 Element-ui el-form 和 el-dialog 进行自定义表单校验时&#xff0c;出现点击编辑按钮之后再带年纪新增按钮&#xff0c;出现如下情况&#xff0c;新增弹出表单进行了一次表单验证&#xff0c;而这时不应该要表单验证的 分析 在寻找多种解决…

深信服技术认证“SCCA-C”划重点:深信服云计算关键技术

为帮助大家更加系统化地学习云计算知识&#xff0c;高效通过云计算工程师认证&#xff0c;深信服特推出“SCCA-C认证备考秘笈”&#xff0c;共十期内容。“考试重点”内容框架&#xff0c;帮助大家快速get重点知识。 划重点来啦 *点击图片放大展示 深信服云计算认证&#xff08…