00:00
大家好。欢迎大家继续收看上硅谷的Linux云计算视频。我是白老师。上节课呢,我们讲了一些我们的防火墙的基础语法以及使用方式,对吧。那这节课呢,我们继续往后看,我们。会看稍微难一点的这么一些防火墙的书写规则。对于整个的防火墙水毁规则来说,可以分为三大类。第一个叫通用匹配。第二个隐含匹配,以及我们的显示匹配。它们三者之间的区别无外乎就是使用的条件不一致而已。对于通用匹配来说,可以直接使用,不依赖其他条件或扩展条件。只包括网络协议、IP地址、网络接口的。隐含匹配呢?加了一些特殊的协议为前提。比如。我们的端口TCP标记SMP类型的。显示匹配呢,加了一些别的模块。这样说的话,其实大家听起来可能不是那么好理解,对吧。
01:00
那我们就接下来继续往后看。你可以理解为它们三者之间的复杂度是依次增加的就够了。你说真来了一个防火墙,别人会问你,他到底是通用匹配还是隐含匹配,还是显示匹配吗?基本上不可能对吧,只要你把你的功能实现了。那肯定是没问题的。那我们接下来继续往后看,我们先看第一个通用匹配。通风匹配呢,有一些比较常见的匹配条件,杠P指定我们的协议名,杠S指定我们的语言地址,杠D指定目标地址。杠二入战网卡,杠O出战网卡。这里需要大家注意一下。只要是他们使用的是这些类型,不包括不包括其他类型的,都可以理解为是通匹配,绝对是通用匹配。能理解我的意思吗?并且还需要注意一下,他们的这几者之间的条件是可以混叠的,比如杠P、杠S、杠D一起写没问题。
02:01
能理解为什么可以相互重叠使用。加的条件越多,它匹配的是不是就越精确呢?这个很好理解对吧?那接下来有这么几条规则,我们一个一去看一下,首先第一个,首先第一个IP tables杠大a forward。杠S192.168.1.1-reject,我们一点点翻译一下,首先这里有一个缺省值,或者这里面都有一个缺省值,对吧?杠t filter没有写。也就代表现在依然是做了一个过滤处理。刚大家添加一条规则到forward链的最末尾杠S,原地址是192.168.1.11的时杠reject,我们去翻一下第一个。F表做的是过滤fo的链,错的是转发,也就是当语言地址是192.168.1.11的时候,在我这台机器做转发请求的时候,干嘛拒绝,这是拒绝,不是丢弃,对吧,拒绝。
03:03
好,那第二个IP tables杠大I input-S10.20.30.0杠二四杠job。这有什么含义呢?在我们的field表这里是确认值对吧的input链的最开头添加一条规则。当言地址是10.20.30.0杠二四位的时候,拒绝。入站的原地址是102030430.0杠二四位的时候拒绝。没问题对吧,下一个。Ipws杠大r input-PSMP-G。Job。做了一个SMB协议的丢弃,对吧,当。我们的入站入站请求他是SMP协议的时候拒绝。原因是什么?Field表做过滤?好,下一个。IP杠大a forward-P感叹号,SMP杠键。
04:02
IPT。感叹号代表什么含义啊?感叹号代表的是非?非非SMP。非SMP。也就是只有SMP是不。拒绝其他的是不是都应该是放心的,这个应该比较好理解对吧,非的含义在我们很多一些条件中,我们都能见得到,对吧?好,那下一个。IPS杠大a input-IETH1-S172.16.0.0-12-j job,这也就是把我们之前所用到的一些组合起来了,对吧?当你的入战网卡是一一,并且原地址172.16.0.0-12位的时候,那这是一个入站数据包,我把它给拒绝啊,这个这个是丢弃对吧,我把它给丢弃。那既然讲到拒绝和丢弃了,就给大家演示一下拒绝和丢弃到底有什么区别对吧?好,我们看一下。首先我这里打开两台机器。
05:05
他呢,当我们的外部服务器,它当我们的。呃,客户端我们去演示一下丢弃和拒绝到底有什么区别,这还是非常重要的一个概念,对吧?首先我们先把防火墙给还原了,杠大PPT我们先把默认规则给放行,对吧。然后我们再把方向给清空。都正常了,对吧,默认规则放行,其他规则全部清空,那我现在写条规则,IPS杠杠a input-PTCP杠杠de port。八零杠七。IPS杠带来我们看一下。原地是去任何地方,只要是八零端口的话,全部丢弃,对吧,第一个是丢弃外部服务器,我们在之前的课程中已经开启了,对吧?好,我们过来演示一下。
06:04
c10.10.10.1回车。注意注意,这不是卡住了。而是什么?数据包。发过来。他认为接入成功了,但这边呢,把数据报给丢了,但这边呢,我们需要在这里等待,等到什么时候,等到这里的客户端超时。太out。需要大家注意一下,这是我们的丢弃的状态,我们把它给CTRLC终止,我们再来改一下,我把当年的规则给清空。现在我肯定是能访问的,对吧,我们再添加一套规则。我们把job改成reject。好,我们再来看一下。原地址,任何地方去任何地方,只要是八零对吧,那这里呢,Reject。丢弃对吧,我们看。看到了吗?直接告诉你,我不能连接这台主机,原因是什么,我过去之后,哎,我要访问你这边说,哎,你不能访问,我是不是直接给出报存信息了。
07:06
对吧?这就是拒绝和丢弃的最好的掩饰了。大家需要注意一下,你说什么时候情况用拒绝,什么时候情况下就丢弃了。举个例子,比如我们公司有一个外部服务器。但是今天需要维护。维护方式,我可以把我们的防火墙八零给拒绝掉,对吧,那这样的话,别人过来访问的时候,我告诉他不能访问。这时候我们可以用。那但是如果他访问的是33306端口的时候,我就可以直接用丢弃了,这里需要注意一下,叫我就可以直接用丢弃了,为什么呢。正常情况下,谁会连接3306去处理数据报啊?这是一个非法入侵对吧,都非法入侵了,我还告诉你,哎,你不能放万。我图啥对吧,这时候直接丢弃,因为reject是要消耗一定的资源的,因为我需要给他返回数据报文,但这边呢,Drop呢,不需要我直接丢弃即可。
08:02
能理解我的意思吗?这个是非常重要的一个概念,对吧,又打了一个星号对吧,需要大家着重处理好,那接下来我们继续往后看。这是我们的第一个叫通用匹配,那接下来我们看第二个隐含匹配。隐含匹配的条件呢,加了这么几个,第一个杠杠port,杠杠port sport sourceport和destinationport,对吧,原端口和目标端口,这个其实我们在刚才是不是已经用过了啊,对吧,这两个还是比较常见的这么一种动作类型的啊,动作条件的。下一个SMP类型匹配。指定的方式是smp trap smp的类型对吧,或者叫等级。这里需要注意一下SMMP协议呢,其实它做P的话,它是其中的几个。等级做支撑的。那ping这款协议呢,它是既要入也要出。也就是你给我发送数据报文,我得允许让你这个协议进来,并且我还会发送一个相关的数据报文给你,也就这是一个双向协议。
09:09
这是一个前提对吧,那我为什么要讲这些东西呢?我想表达的就是。如果我们按照原来的思想,我们有没有听过一个死亡之聘啊?这个可能在一些现在的手段里,你们已经听不到了。原来我们的带宽都比较低,对吧,我们把数据报文调到最大以后发起P。那这样的话,我们的对应的服务器也会返回给你对应的数据报文。如果把它带宽给占满的话,这就叫死亡之ping,通过P就能把它的带宽占满,你可以想象它当当时的年代,它的带宽有多低,对吧,好。No。那当时我们就会这么去做,就是我允许聘别人,别人不允许聘我。你说这不简单吗?我们在入战的时候把SP给拒绝了不就行了吗?那我们过来看一下能不能行。
10:00
在这里我们先把对应的防火墙都给清空对吧?好,我们添加一个协议。我们这里的杠P是icmp协议杠。键我们直接把它丢弃掉可以吧,好,那这样的话我是不是把入站的SMP给拒绝了,初赛是默认是except放行的对吧?那我现在P别人P10.10.10.1。通了吗?没桶原因是什么?我数据报完。我数据报完。发起,从他发起发起过来出去肯定是没问题的,因为这里的默认策略是放行。并且幺二也会给你回,原因是什么?幺二又没有拒绝,凭什么不给你回啊?但回的时候回的这个数据不好,问他是不是要进行入战,入战的时候发现,诶,SP拒绝了,丢弃了。所以在这里我们是访问不通的,需要就需要大家注意一下,也就意味着我们通过在入战的时候进SMP,其实把所有的SMP协议相关的。
11:00
把P相关的都给禁止了。那怎么办呢?我们刚才是不是提到一个叫做icmp的协议等级啊?那我过来看一下。好,首先。IPS更大啊,我们可以看到我做了一个最底层的,对吧,SMP的所有类型全部拒绝,那我再添加。杠杠SP。Trap。然后呢,是三级别杠gpt。我们用杠大爱把它添加到开头,原因是什么?如果你添加到他的下一行是不是没意义了,都是拒绝对吧,都是匹配第一条拒绝,好,那告大家我们看一下。这就叫destination unreachable。叫主机不可达对吧,目标不可达。目标未知。好,这是什么含义呢?也就是我P10.10.10.13。我们在本机也聘。
12:02
P10点。幺零点。10.13。我看一下什么效果。告诉啦,无法访问目标主机对吧?我们先把这条规则给删了,我们再看下效果。好,那现在是不是只有拒绝啊,对吧,我P10.10.10.13。我们稍微等一下,给他一定的时间对吧。这个时间其实已经足够长了,对吧,我们发现什么信息都没有,原因是什么。回信的这些目标主机不给答,他也被拒绝了。那做这个实验之前,我们把现在规则都给清空,对吧?我现在想达到的一个要求就是我能聘别人,别人不能聘网。那我怎么办呢?首先我先做一个最底层的条件,也就是杠大a input,杠PMP。
13:07
Check job,那这样的话,我不管是聘别人也好。还是?别人在这里拼我。都是拼不通的对吧,那接下来我再放心零三这两个级别。杠大啊,一定要插到他们之前对吧,不然的话是不是已经匹配没意义了,好杠PI icmp杠杠imp-Cha。然后呢,杠确。IPT放行。啊,等级没写对吧,零级别。和三级别。好,IPS更大,我们看一下。零级别代表是IQ re play,也就是我们的回血,这个是我们主机布可达,那我们看下效果,P10.1 0.10.1。
14:02
通了吗?通了,那我们在P13。幺三,那台主机我没有开对吧,所以告诉我主机不可打。这里需要注意一下,主机不可达这个,这个返回的信息是由我们的三级别放行的,也就这条级别。那如果我现在把这个三级别给删除。看到吗?没有了对吧,我在P13是没有信息的,需要大家注意一下,这一条并不是无效的。回显是回显,目标主机不可达是目标主机不可达,一般是不是只有这两种情况,我要不P通了,要不就是主机不可达,仅此而已,对吧?所以如果我们想去做到我刚才说的这一条需求的话。我们最好把它插到二维对吧,因为P通还是比较常见的。三级别的问题。好,看到了吗?那这样的话,我是不是就达到一种要求,就是我骗别人。
15:03
当P11肯定是不行的,对吧,我P12。通了对吧,那幺拼我没通,那我是不是就是我能拼别人,别人不能骗我,是不是已经达到了。这个呢,就是我们所谓的。怎么去让我们的机器能够被P通?我能聘别人能聘通,别人聘我P不通的,这么一种方式使用的呢,就是我们的防火墙里面的隐含匹配里面的SMP协议类型的这么一个控制,需要大家注意一下。只要会配就行了,对吧,我们再看一下其他两个规则,第一个IP杠大a forward-S192.16 8.4.0杠二,四杠PUUDP-d pod 53-g set。这如果翻译过来的话,是不是就在我们的field表达for列?For链是不是做转发的呀,也就转发过滤对吧,当原地是192.168.4.0的时候,并且使用的协议是53号接口的udp协议,那是不是就是一个DNS啊,对吧,把它给放行。
16:04
放行这个网站的DNS的转发处理请求,对吧?IPS杠大a input-PTCP杠杠低炮2021-g except,这代表了含义,是不是就是放行我们的FTP服务器的主动模式对吧?使用的是2021号端口。那这个呢,就是我们的隐含匹配,也就意味着使用这种匹配条件的话,就是我们的隐含匹配,那么再看最后一个显示匹配。好,对于显示匹配来说呢,它有一个隐含条件,就是杠m mut。杠杠port也就可以通过我们的端口列表的方式去引入对吧,以及低炮的目标端口方式。杠m IP range几,杠杠src几,也就指定一定的IP范围。杠,M杠。Mark sa。那这代表的是使用我的Mac地址做我们对应的过滤请求。这是一个新引入模块,你会发现只要是显示匹配,是不是都引入了一些新的模块,对吧?好杠m start杠杠指定我们的连接状态。
17:03
那我们一个一个去看。首先第一个IP tables杠大a input-PTCP-m MU portt杠杠de portt258010143-G。之前给大家表明了什么含义呢?就是正常情况下,如果不加这个milk pot的话,我们书写的单位是不能这样写的。逗号隔开没有意义,会报错。那你加了mud以后,它就可以把你这种逗号隔开的方式会批量化处理,你说那加MU pod和我们单开分开写有什么区别呢?你可别忘了,如果,如果这四个端口访问量都比较大。都比较大。你是把谁放在前面,你是把二五放在第一个,还是把八零放在第一个,还是把幺零或者143放在第一个呢?都不太合理对吧?那如果我们采用UD炮了以后,我是不是可以把这四个端口放在第一条匹配顺序里?那是不是就是优化呢。
18:00
很好理解了吧,好。下一个。IPS杠大a forward-PTCP-MP杠杠杠src。也就意味着我们的现在的端口范围呢,可以加了一个IP摄像机的模块,以后它就可以通过杠的方式二一到二八。顺序的方式去书写他的IP。IP范围。那下一个。Ipwx-A。杠大a input-m mark杠杠mark source这里写了一个mark地址,对吧?杠j job可以通过我们的mark地址的方式做做对应的处理。那。其实体加的这些呢,都是一些重复的,比如我们加一个杠,没有立炮的,不仅可以用逗号去隔开,也可以用杠代表连续的端口,对吧,是在之前都是不。不太容易去实现的,或者是不能实现的这么一种方案。好,那我们再看下一个。IP杠大I input-PTCP-m start杠杠start new。
19:02
拉杠g accept。这个才是我们现在要讲的重点。这代表了什么含义呢?杠m start代表的是一个状态模块杠杠start指定当前的状态是new心念连接。也就是。我们的所谓的有数据传输,也就是有我们的相关联,相关联杠g except,只要是三种连接状态,我们都放心。这代表的是什么含义呢?举个例子。或者他什么时候用呢?举个例子。那。有一天,我们的FTB服务器。我公司有一台FTP服务器,放在公网中去做我们视频下载。听明白我的意思吗?做视频下载的。那在头一天,也就是前一天,我已经有公告了,说当天的下午两点。我会做所谓的服务器优化。
20:01
那这时候大家就不要下电影了。等到今天的两点钟的时候,我上服务器一看,有一个用户下了99%了。还没下完,还有1%对吧,那。没有其他用户连接。那你说这时候我应该怎么办?我是立马把这个用户给掐死。直接重启服务,还是等这个用户下完。首先我们先讲第一种方案,就是把这个给掐死。这个用户体验太不友好了,对吧,你告诉我两点没问题,但是我是不是就差1%了。1%是不是还能容忍呢?也就几秒钟或者几分钟就能解决的,对吧?但有没有想过一个问题,那你说我就选择二倍,等他下完了以后,我再关闭服务器。那你有没有想过一个问题,在你选择二的时候,就有可能在这两分钟之内又有新的用户连接进来了。既然你都让他连接了,两点以后都让他连接了,你凭什么不让人家下完了,那你这样循环等下去,是不是有可能到明天还没还没装完呢,还没优化完成呢,对吧?所以你应该怎么办?你应该正常的方案应该是让这个用户下完,但是拒绝其他用户的连接。
21:08
很好理解吧?那如果我们要使用我们的FTP的这种方式去去做这种操作的话,还是比较费事的,但防火墙可以很好的帮我们去做这件事情,那怎么做呢?我们只需要写一条规则。IP是杠大爱添加到最开头对吧?Input链杠PTCP-m start杠杠start new-j job。当你这里最好再加一个什么杠杠DEPOT21。杠杠start new-G。这是什么含义?当源地址目标端口是21号端口的时候,并且这个连接是新建new新建连接的时候,我把它给拒绝。那这样的话是不是就是老连接不会断,只有新连接会断。这才是我们在这种环境中最应该使用的一种方案。
22:02
相信我已经给大家比较详细的描述了,对吧?以此类推,只要是符合这种情况的,我们都可以这样去做。那这节课里呢,我们给大家讲了我们三种不同的匹配方式,对吧,通用,隐含以及显示,还是那句话,你不需要拿到一个规则以后去能够判断这到底是哪种显示,还是影视,还是我们的通用。你只要知道把这些匹配条件给记住,这些匹配条件你应该什么时候去用就够了,尤其是这个杠杠的统计模块。这个模块非常重要,在很多环境中我们都可以使用到。那当然还可以在哪里用,我们再稍微举个例子对吧,比如我现在有个八零端口。一个43端口,一个二二端口。那如果想做优化的话,最好把他们三个端口放在一条规则里去写,你说简单,这不有个music port吗?写一行。其实这不是最好的,最好的是什么?我们拿这个状态统计模块放这里,什么意思啊,杠I input,杠PTCP,杠,Start,杠杠,只要是。
23:05
和related的。我们把它放进。也就意味着,只要是曾经跟8044322连接过的,是都放心了。这样的话是不是更优化呢?这也是一种优化方案,对吧?好,那话不多说,这节课我们就先讲到这里,下节课我们再见。
我来说两句