网络笔记--服务端局域网

  这一节主要学习服务端的一些基础;

Web 服务器的部署地点

        服务器直接部署在公司网络上,并且可以从互联网直接访问。这种情况下,网络包通过最近的POP中的路由器、接入网以及服务器端路由器之后,就直接到达了服务器。其中,路由器的包转发操作,以及接入网和局域网中包的传输过程都和我们之前聊过的内容没有区别 ,服务器所在地: 如图

 
   Web 服务器不仅可以部署在公司里, 也可以把服务器放在网络运营商等管理的数据中心里, 或者直接租用运营商提供的服务器。
        数据中心是与运营商核心部分 NOC 直接连接的, 或者是与运营商之间的枢纽IX直接连接的。换句话说,数据中心通过高速线路直接连接到互联网的核心部分,因此将服务器部署在这里可以获得很高的访问速度,当服务器访问量很大时这是非常有效的。

防火墙的结构和原理

1 主流的包过滤方式: 无论服务器部署在哪里,现在一般都会在前面部署一个防火墙,如果包无法通过防火墙, 就无法到达服务器。 即只允许发往特定服务器中的特定应用程序的包通过,然后屏蔽其他的包。不过特定服务器上的特定应用程序这个规则看起来不复杂, 但网络中流动着很多各种各样的包,如何才能从这些包中分辨出哪些可以通过, 哪些不能通过呢? 为此, 人们设计了多种方式,其中任何一种方式都可以实现防火墙的目的,但出于性能、价格、易用性等因素,现在最为普及的是包过滤方式。

防火墙可分为包过滤、 应用层网关、 电路层网关等几种方式。

包过滤的规则:网络包的头部包含了用于控制通信操作的控制信息, 只要检查这些信息, 就可以获得很多有用的内容。这些头部信息中, 经常用于设置包过滤规则的字段,看一个具体的例子,理解包过滤的设置需要深入理解包是如何在网络中传输的。

        设置包过滤规则时,首先要观察包是如何流动的。通过接收方 IP 地址和发送方IP地址,我们可以判断出包的起点和终点。包从互联网流向Web服务器,从互联网发送过来的包其起点是不确定的,但终点是确定的,即 Web 服务器。因此,我们可以按此来设定规则, 允许符合规则的包通过。 也就是说, 允许起点(发送方 IP地址)为任意,终点(接收方IP地址)为 Web服务器IP地址的包通过。如果可以确定发送方IP地址,也可以将其加入规则。如下:

         这样一来,从互联网发往Web服务器的包就可以通过防火墙了,但光这样还无法完成访问。 因为收到包之后,Web服务器需要通过确认应答机制通知发送方数据已经正常收到,这需要Web服务器向互联网发送包。在 Web服务器发往互联网的包中,我们可以将起点(发送方IP地址)为 Web服务器地址的包设置为允许通过。

通过端口号限定应用程序 

         按照前面的设置,相当于允许了互联网和 Web 服务器之间所有的包通过,这个状态很危险。假如服务器上还有一个文件服务器程序在工作,那么这些文件就可能会被非法访问从而造成信息泄露。有风险的还不仅是文件服务器, 现在每天都会发布若干安全漏洞, 可以说随处都隐藏着风险。因此,我们最好是阻止除了必需服务(也就是本例中的Web 服务)以外的所有应用程序的包。当我们要限定某个应用程序时,可以在判断条件中加上 TCP 头部或者UDP 头部中的端口号。Web 服务器的端口号为80,因此我们在刚才的接收方IP地址和发送方IP地址的基础上再加上80端口作为条件就可以了。也就是说,当包的接收方IP地址为Web服务器地址,且接收方端口号为 80 时,允许这些包通过; 或者当包的发送方IP地址为 Web 服务器地址,且发送方端口号为80时,允许这些包通过。如果要允许访问除Web之外的其他应用程序,则只要将该应用程序的端口号设置到防火墙中并允许通过就可以了。

通过控制位判断连接方向

       现在我们已经可以指定某个具体的应用程序但是条件还没达到,因为还没有办法阻止Web服务器访问互联网。Web使用的TCP协议是双向收发网络包的, 因此如果单纯地阻止从 Web 服务器发往互联网的包,则从互联网访问Web服务器的操作也会受到影响而无法进行。光判断包的流向还不够,我们必须要根据访问的方向来进行判断。这里就需要用到 TCP 头部中的控制位。TCP 在执行连接操作时需要收发3个包,其中第一个包的 TCP 控制位中 SYN 为 1,而 ACK为0。其他的包中这些值都不同, 因此只要按照这个规则就能够过滤到TCP连接的第一个包。

        如果这第一个包是从 Web 服务器发往互联网的, 那么我们就阻止它。这样设置之后,当然也不会收到对方返回的第二个响应包,TCP连接操作就失败了。也就是说,只要以 Web 服务器为起点访问互联网,其连接操作必然会失败,这样一来,我们就阻止了Web服务器对互联网的访问。通过接收方IP地址、发送方IP地址、接收方端口号、发送方端口号、TCP 控制位这些条件,我们可以判断出通信的起点和终点、应用程序种类,以及访问的方向。

 从公司内网访问公开区域的规则 

       从外部无法访问公司内网:包过滤方式的防火墙不仅可以允许或者阻止网络包的通过,还具备地址转换功能,因此还需要进行相关的设置。也就是说,互联网和公司内网之间的包需要进行地址转换才能传输,因此必须要进行相关的设置。具体来说,就是和包过滤一样,以起点和终点作为条件,根据需要设置是否需要进行地址转换。 私有地址和公有地址之间的对应关系,以及端口号的对应关系都是自动管理的,因此只需要设置是否允许地址转换就可以了。

       互联网路由器的路由表中没有私有地址的路由信息, 因此凡是接收方为私有地址的包, 在经过互联网中的路由器时都会被丢弃, 这就是为什么必须使用地址转换的原因。 相对地, 防火墙内置的路由功能可以由用户自行设置, 因此可以在路由表中配置私有地址相关的路由, 使得公司内网到公开区域的访问可以以私有地址的形式来进行, 这意味着公司内网和公开区域之间传输的包不需要地址转换。

通过防火墙

        在防火墙中设置各种规则,当包到达防火墙时,会根据这些规则判断是允许通过还是阻止通过。如果判断结果为阻止,那么这个包会被丢弃并被记录下来 。 这是因为这些被丢弃的包中通常含有非法入侵的痕迹,通过分析这些包能够搞清楚入侵者使用的手法,从而帮助我们更好地防范非法入侵。
          如果包被判断为允许通过,则该包会被转发出去,这个转发的过程和路由器是相同的。如果我们只关注判断是否允许包通过这一点,可能会觉得防火墙是一种特殊机制,而且市面上销售的防火墙大多是专用的硬件设备或者软件,包过滤方式的防火墙可根据接收方IP地址、发送方IP地址、接收方端口号、发送方端口号、控制位等信息来判断是否允许某个包通过。

防火墙无法抵御的攻击

       防火墙可以根据包的起点和终点来判断是否允许其通过,但仅凭起点和终点并不能筛选出所有有风险的包。比如,假设 Web 服务器在收到含有特定数据的包时会引起宕机。但是防火墙只关心包的起点和终点,因此即便包中含有特定数据,防火墙也无法发现,于是包就被放行了。然后,当包到达Web服务器时,就会引发服务器宕机。

       要应对这种情况有两种方法。 这个问题的根源在于 Web 服务器程序的Bug, 因此修复 Bug 防止宕机就是其中一种方法。这类Bug中,危险性较高的会作为安全漏洞公布出来,开发者会很快发布修复了Bug的新版本,因此持续关注安全漏洞信息并更新软件的版本是非常重要的。另一种方法就是在防火墙之外部署用来检查包的内容并阻止有害包的设备或软件 。 

猜你喜欢

转载自blog.csdn.net/ljt2724960661/article/details/121185083