| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> 网络笔记--服务端局域网 -> 正文阅读 |
|
[网络协议]网络笔记--服务端局域网 |
? 这一节主要学习服务端的一些基础; Web 服务器的部署地点? ? ? ? 服务器直接部署在公司网络上,并且可以从互联网直接访问。这种情况下,网络包通过最近的POP中的路由器、接入网以及服务器端路由器之后,就直接到达了服务器。其中,路由器的包转发操作,以及接入网和局域网中包的传输过程都和我们之前聊过的内容没有区别 ,服务器所在地: 如图 ? 防火墙的结构和原理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 控制位这些条件,我们可以判断出通信的起点和终点、应用程序种类,以及访问的方向。 ?从公司内网访问公开区域的规则? ? ? ? ?从外部无法访问公司内网:包过滤方式的防火墙不仅可以允许或者阻止网络包的通过,还具备地址转换功能,因此还需要进行相关的设置。也就是说,互联网和公司内网之间的包需要进行地址转换才能传输,因此必须要进行相关的设置。具体来说,就是和包过滤一样,以起点和终点作为条件,根据需要设置是否需要进行地址转换。 私有地址和公有地址之间的对应关系,以及端口号的对应关系都是自动管理的,因此只需要设置是否允许地址转换就可以了。 ? ? ? ?互联网路由器的路由表中没有私有地址的路由信息, 因此凡是接收方为私有地址的包, 在经过互联网中的路由器时都会被丢弃, 这就是为什么必须使用地址转换的原因。 相对地, 防火墙内置的路由功能可以由用户自行设置, 因此可以在路由表中配置私有地址相关的路由, 使得公司内网到公开区域的访问可以以私有地址的形式来进行, 这意味着公司内网和公开区域之间传输的包不需要地址转换。 通过防火墙 ? ? ? ? 在防火墙中设置各种规则,当包到达防火墙时,会根据这些规则判断是允许通过还是阻止通过。如果判断结果为阻止,那么这个包会被丢弃并被记录下来 。 这是因为这些被丢弃的包中通常含有非法入侵的痕迹,通过分析这些包能够搞清楚入侵者使用的手法,从而帮助我们更好地防范非法入侵。 防火墙无法抵御的攻击 ? ? ? ?防火墙可以根据包的起点和终点来判断是否允许其通过,但仅凭起点和终点并不能筛选出所有有风险的包。比如,假设 Web 服务器在收到含有特定数据的包时会引起宕机。但是防火墙只关心包的起点和终点,因此即便包中含有特定数据,防火墙也无法发现,于是包就被放行了。然后,当包到达Web服务器时,就会引发服务器宕机。 ? ? ? ?要应对这种情况有两种方法。 这个问题的根源在于 Web 服务器程序的Bug, 因此修复 Bug 防止宕机就是其中一种方法。这类Bug中,危险性较高的会作为安全漏洞公布出来,开发者会很快发布修复了Bug的新版本,因此持续关注安全漏洞信息并更新软件的版本是非常重要的。另一种方法就是在防火墙之外部署用来检查包的内容并阻止有害包的设备或软件 。? |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 5:55:17- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |