You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

121 lines
14 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 14 | 网络安全和别人共用Wi-Fi时你的信息会被窃取吗
你好,我是何为舟。
你平时使用手机连接无线网络的时候一定看到过这样的安全提示不要连接陌生的Wi-Fi。也一定看过很多这样的报道某先生/女士因为使用了陌生的Wi-Fi信息遭到泄露不仅账号被盗用还造成了经济损失。
看到这些提示和报道之后你就要产生警惕了当你连入一个陌生的Wi-Fi时这个Wi-Fi下连接的其他人很有可能会看到你的信息并且对你发起攻击。
你可能要说了只要我避免连入陌生的Wi-Fi前面说的攻击就基本不会发生了。但是在工作中员工和服务器通常接入的也是同一个网络那员工是不是就可以任意地捕获服务器中的流量呢其他人是不是也能轻易地窃取员工信息呢内网又是怎么保证安全性的呢
## 内网中的“最小权限原则”
我们先来看内网是怎么保证安全性的。前面我们说过在Linux系统中我们可以使用“最小权限原则”来限制黑客的行动能力。而“最小权限原则”在内网中同样适用。为了保证安全性我们要限制黑客进入内网后的权限范围也就是说就算黑客能够进入内网我们也只允许它在一个有限的子网内进行访问而不能任意地访问所有服务。那内网中的“最小权限原则”究竟是怎么实现的呢
在内网中,实现“最小权限原则”的核心在于分区和隔离。接下来,我们就一起来看,在公司内网中,分区和隔离具体是怎么实现的。
### 1.对内网进行水平划分
我们知道连入内网的人和设备具备不同的“身份”和“权限”。比如公司正式员工、外包员工和访客等这些人所使用的内网服务区别很大。因此我们需要依据不同的“身份”来对网络区域进行隔离而这就需要用到VLAN提供的功能了。
那什么是VLAN呢在一般情况下连入同一个交换机的所有设备都在同一个网络中两两之间能够相互访问。为了阻止这些设备相互访问我们可以在交换机上设定在不改变物理连接的情况下通过交换机的控制将这个网络划分为多个不同的子网也就是VLAN Virtual Local Area Network虚拟局域网。简单来说VLAN就是一个交换机创建出来的多个子网。因为隔离的存在不同VLAN的访问请求会被交换机阻止。
这样一来,我们就实现了对不同“身份”的人的网络隔离。
### 2.对内网进行垂直划分
事实上,对不同“身份”的人的网络隔离属于对内网进行水平划分。除此之外,公司也会对内网进行垂直划分。
最简单的,我们会将公司内网整体保护起来,和外网进行隔离,这种隔离就属于垂直划分。在这种隔离之下,内网可以访问外网的资源,外网却不能够直接访问内网的资源。要实现这种隔离,就需要用到路由器了。路由器会将连入的所有内网设备打包在一起。所以,对外网来说,内网变成了一个整体,也就无法访问到某个具体的设备了。
在下图中我简单地展示了一下利用路由器和交换机对内网进行划分的效果通过路由器划分内网和外网通过交换机划分正式员工网络和外包员工网络。实际上你还可以对每一个VLAN按照安全等级进行进一步的垂直和水平划分。
![](https://static001.geekbang.org/resource/image/0f/a7/0fd26393177c3de655ad76e68c4bcaa7.jpeg)
## 有线网络和无线网络安全
现在,你应该知道如何在内网中落实“最小权限原则”了。而网络作为一个数据传输的主要通道,保障其中数据的安全性,也是非常重要的。这其中包括两个关键问题。
* 如何保障通道中的数据不被窃取?这涉及认证和加密的手段。
* 如何保障通道的接收方是可信的?也就是如何避免被“劫持”。
在工作中,我们最常接触的两种网络就是**有线**和**无线网络**,接下来,我就结合前面这两个关键问题,带你探讨一下有线和无线环境中的网络安全。
### 1.无线网络安全
无线网络你应该非常熟悉,我们在实际工作和生活中到处都需要用到无线网络。在无线网中,个人设备是通过射频技术和无线热点进行连接的。射频无法定向接收,因此,数据都是“广播”出去的。也就是说,只要在设备和热点附近,任何人都能接收到无线网络中的数据。
为了保证无线网络数据的安全性,我们主要的防护手段,就是使用目前最安全的无线网络协议[WPA2](https://baike.baidu.com/item/WPA2/4913331?fr=aladdin)。
但是WPA2协议只是用来保护无线网络中数据安全性的。它的连入密钥都是共享的所以不具备严格意义上的认证功能。而公司需要通过认证知道每一个连入内网的设备的归属来追踪每一个员工的操作。那无线网络中的认证是怎么做的呢
一般的操作是对连入的用户实行“**强制门户**”。“强制门户”你应该很熟悉就是当你使用公用密钥连入网络之后还需要你在网页中再次进行认证。比如在连入机场网络后还需要你进行手机号验证。具体的原理就是用户在连入Wi-Fi后路由器会将用户的HTTP请求重定向至认证页面。认证成功后路由器会记录用户的身份和MAC后续路由器就可以根据MAC来识别用户身份了。
![](https://static001.geekbang.org/resource/image/38/18/38b36d03bb2d6b90b8a3a5e35695e818.jpeg)
那“强制门户”在公司内部是怎么应用的呢?一般在连入内网后,员工还需要通过公司邮箱和密码,进行一次额外的验证。这样一来,公司就能够知道连入内网的到底是哪一名员工了。
说完了无线网络中的认证和加密,我们再看一下“劫持”的问题。在无线网络中,“劫持”的主要方式是**伪造热点**。
伪造热点的实现主要依赖的就是现在设备的自动连网功能。简单来说就是只要你的设备曾经连入过某一个热点设备就会记住这个热点的ID和密码下次如果设备再检测到这个热点ID就会尝试自动连接。
而黑客也可以利用自动连网的功能发起攻击。黑客只需要伪造出来一个相同的热点ID就可以诱导用户的设备连入黑客的热点从而“劫持”流量。避免伪造热点的方法也很简单就是对办公网络中的未知热点进行扫描。
所以,总结一下,在无线网的安全中,我们需要关注这三个点:
* 是否使用了安全的协议也就是WPA2
* 是否有认证技术,也就是强制门户;
* 是否有未知的热点出现在办公环境中。
### 2.有线网络安全
区别于无线网络,**有线网络不存在认证和加密的问题**。这个很好理解,因为有线网是通过网线来进行物理接入的。换一句话说,只要运维人员给服务器插上了网线,就说明运维人员授权这台服务器接入内网了。而且,一根网线只能将一台设备连入网络,不存在网线共享。所以,不需要考虑加密的问题。因此,我们在有线网络中,主要考虑的问题就是“劫持”。
所谓“劫持”,其实就是误导服务器将请求发送到黑客的设备上去。在无线网中,服务器实际上是向连接的热点发送请求,因此,我们可以通过伪造热点来进行误导。那在有线网中,服务器又会向哪里发送请求呢?
在网络协议中目标地址主要通过MAC地址和IP地址来确定。MAC地址和IP地址分别是基于[ARP协议](https://baike.baidu.com/item/ARP/609343?fromtitle=ARP%E5%8D%8F%E8%AE%AE&fromid=1742212&fr=aladdin)和[DNS协议](https://baike.baidu.com/item/dns%E5%8D%8F%E8%AE%AE/1860066?fr=aladdin)来进行寻址的。因为ARP和DNS都是早期的网络协议所以安全性较低。因此黑客可以轻易地发出伪造的ARP包和DNS包从而“欺骗”目标设备将数据包发送到黑客的设备上实现流量“劫持”的功能。
为了帮助你理解这个过程我把ARP“劫持”的过程总结成了一张图。从这张图中我们能看到服务器A想要向服务器B发起请求但是黑客通过发送伪造的ARP包误导A说“10.0.0.2的MAC地址是3:3:3:3”。因为ARP没有进行认证所以A会无条件相信黑客的说法。那么当A想要向B发送请求的时候MAC地址会设定成黑客的3:3:3:3所以请求最终就发送到了黑客的服务器上。DNS“劫持”的原理和这个比较类似也是黑客误导服务器让服务器错认黑客的IP为某个域名的IP。
![](https://static001.geekbang.org/resource/image/60/52/60a12414c08c62df9fa0ac685df93952.jpeg)
那该如何避免有线网络中的“劫持”呢有两种方法第一种方法是对网络进行更合理地划分避免黑客进入敏感的内网区域中第二种方法就是在网络中进行定期地检测。为什么要定期进行检测呢这是因为通过伪造ARP和DNS包发起的流量“劫持”发生在内网中往往不需要通过防火墙等网络设备所以难以被检测出来。因此我们需要在网络中进行定期地检测发掘异常的请求路径如某个服务器将请求发送到了未知的设备尽早发现“劫持”行为。
## 如何理解DDoS攻击
最后,我们再来介绍一种常见的内网攻击,**DDoS攻击**Distributed Denial Of Service Attack分布式拒绝服务攻击。DDoS就是黑客由外网向公司服务发起大量的请求从而打满网络带宽让内网无法响应用户的正常请求。那么DDoS是如何产生的呢我们又该如何防护呢
说到这我们先了解一下DoSDenail f Service拒绝服务攻击。知道了DoS攻击DDoS攻击就很好理解了。
DoS攻击主要有两种类型。一种是通过漏洞进行攻击使得服务或设备因为程序报错而宕机。比如针对ICMP协议的“死亡之PING”就是因为旧版本的Windows系统在处理超长的ICMP包时会报错死机。另一种则是通过巨量的垃圾流量挤占网络带宽使得网络设备无法接收或者发送合法的流量。
但是黑客如果直接对目标网络发起DoS攻击很容易就会被溯源出来。所以黑客会通过大量的“肉鸡”被黑客远程控制的机器来向目标网络发起请求隐藏自己的真实地址。这个过程就是DDoS。
这里要补充一点依靠“肉鸡”代理黑客不仅可以增加自己被溯源的难度还可以放大或者说增强攻击的效果。比如当你请求一个网页时你请求的数据实际上只有一个URL但服务器却需要返回给你一整个网页。
近几年比较流行的基于Memcache的DDoS就是黑客向“肉鸡”的Memcache发送一个十几个字节的GET请求通过在请求参数中进行配置黑客可以让Memcache服务器将返回的结果发送到目标的服务器而返回的结果能够达到几百Kb的数据量放大倍数达到数万倍。这也是为什么黑客可以依靠几十个“肉鸡”代理挤占目标网络几十GB的带宽。
DDoS能对内网造成非常严重的影响那我们该如何进行防护呢目前来说DDoS基本是不可防的。因为只要你的应用还在正常地提供服务那就需要接收外网的请求因此没办法直接拒绝黑客向你发起的请求。哪怕你能够识别出这些恶意的请求并且拒绝响应这也只能避免CPU被耗尽而带宽的资源还是会被占用。
所以各类云服务厂商提供的DDoS解决方案基本都是依靠带宽扩容来进行保障的。比如阿里云可能会卖给你一个40G的防DDoS服务。只要DDoS的流量小于40G阿里云就会保障你服务的可用性。一旦超过就会直接关停你的服务避免资源浪费。
## 总结
好了,今天的内容讲完了。我们来一起总结回顾一下,你需要掌握的重点内容。
网络在为我们提供了便利的同时也为黑客的攻击提供了一个方便的入口。除了在应用层针对Web漏洞进行攻击黑客也会直接在网络层发起攻击。网络层的攻击以窃取流量为主黑客利用监听、“劫持”等方式窃取用户数据。在无线网中黑客可以通过伪造热点来窃取流量在内网中黑客可以通过ARP和DNS“劫持”等来窃取流量。我们需要通过定期的检测内网来发掘可能的攻击行为。
除此之外黑客还会通过DDoS的方式来破坏公司和应用网络的可用性对正常服务产生影响。从理论上来说DDoS目前不可防我们只能通过扩容带宽来增加网络自身的耐受能力。
好了,我把这一讲的重点内容梳理了一个脑图。你可以用它来查漏补缺,也可以自己来梳理看看,加深印象。
![](https://static001.geekbang.org/resource/image/0a/6e/0a1b41d3d05c871fa4f4bfcdc375a06e.jpg)
## 思考题
最后,给你留一个思考题。
你可以观察一下,你们公司办公网的连入方式,思考一下,通过这种连入方式,公司能定位到你在办公的时候,都请求了哪些网页或者服务吗?
欢迎留言和我分享你的思考和疑惑,也欢迎你把文章分享给你的朋友。我们下一讲再见!