UTM
UTM(统一威胁管理)由硬件、软件和网络技术组成的具有专门用途的设备,它主要提供一项或多项安全功能,将多种安全特性集成于一个硬设备里,构成一个标准的统一管理平台。
- 操作系统:定制的Centos系统
- 需求分析:1.网络路由能力 2.防火墙能力 3.扫描流量能力
扫描流量分析:
- 进入Linux的网络数据包会做一个路由选择,判断数据包的目的地址是否是本地主机地址,如果是本地,则数据包将会从内核空间到达用户空间的应用软件,但如果目的地址不是本地主机地址,则该数据包将不会被送到用户空间,而是直接在内核空间被转发(前提是要打开内核转发功能,否则该数据包将被丢弃),而用户空间的应用程序是无法获得该数据包的,自然也就是无法扫描流量,因此目前无法达到我们希望扫描通过该路由器流量的需求。

-
我们现在要解决的问题就是要将本该被直接转发的数据包暂时保留,同时将该数据包通过特定的方式送到位于用户空间的应用软件,并由该应用软件扫描该数据包,根据扫描结果,执行继续转发该数据包或者丢弃该数据包等的操作。在Linux中,有一套极为强大的机制可以实现将本该直接转发的数据包送到一个队列中,而位于用户空间的应用程序可以从该队列中获取到数据包,并且应用程序可以发送一个判决结果,间接控制内核空间的应用程序对放入队列的数据包执行继续转发或丢弃等的一系列操作。如果你对Linux的底层网络比较熟悉的话,你应该知道,其实这套机制就是Netfliter。
-
用户空间的应用程序需要实现两大块功能 1.应用层防火墙功能 2.流量安全扫描功能

- 用户的防火墙规则及扫描规则应该如何输入呢?
前面我们对硬件的描述也说过了,我们的硬件上实际上是不会留下视频输出接口的,所以通过接一个显示器和键盘鼠标来直接控制盒子的想法是不现实的。那么,普通家用路由器是如何配置的呢,我们很自然的就想到了,通过连接一根网线,直接访问192.168.1.1即可访问路由器,在浏览器中配置所需要的信息。同理,我们目前要做的设备也可以这么干。所以,我们需要在这个安全路由器里加入一个http的服务器,让我们能够通过网页访问并且配置它,这个过程可以用下图表示。

云端管理
到上一节,我们其实已经实现一个本地的安全路由器,但现在还有一个问题,这个安全路由器只允许在本地进行配置,在这里还是希望扩展一下,能不能远程配置呢,我作为一个网络管理员,能不能在云端同时配置多台安全路由器呢,实际上我们也可以实现,实现后网络架构可以参照下图:

CloudEdge
在Cloud Edge中,其真实的环境如下图所示:

其中,绿色框中的部分为第三方模块,ixEngine帮助我们识别网络流量,IPS、NCIE、VSAPI、TMASE为反病毒或者反垃圾引擎,一个要经过我们Cloud Edge本地硬件设备的流量,会首先通过ixEngine,识别出其各项信息(属于哪一种协议,是否属于特殊App的流量等信息),之后进行规则的匹配,匹配时将会从设备、地址、用户ID、服务等等角度进行匹配,在匹配完成后,执行对应的黑白名单规则和防火墙规则等。最后,如果有必要,该流量将被送入杀毒引擎进行扫描,当全部流程走完,Cloud Edge本地硬件设备将根据应用程序的返回结果,判断是否允许转发或者丢弃。需要说明的是,扫描引擎不只是本地,还有一些扫描引擎是在云端的。另外,对于Email流量的扫描,还有一套专门的系统叫做CMS。
在加上云端功能,Cloud Edge的结构可以用下图表示:

自己动手安装Cloud Edge
对于我们而言,在开发和测试时,实际上可以不依赖于硬件,我们完全可以将Cloud Edge Box里的操作系统和专用软件安装在一个虚拟机里,然后在虚拟机环境中还有一整套我们的云端环境,两者结合,就可以实现大部分的功能。
Cloud Edge的部署方式
Cloud Edge作为一个安全网关,必然是需要部署到网络环境中的,那么,如何部署Cloud Edge呢,通常的做法是这样的,在网络出口位置,将某根网线断开,加入我们的Cloud Edge,之后从Cloud Edge接出两根网线,分别连接刚才网线断开处的两个连接点。
但是,在操作前,需要我们了解,Cloud Edge有两种工作模式,一种是Bridge模式,类似交换机,另一种Router模式,类似于路由器,一般来说,如果在不希望变动当前的网络结构的条件下部署我们的Cloud Edge话,Bridge模式是一个很明智的选择。
可以看到一个很简单的网络环境,联网设备连接到交换机上,交换机上级接路由器,路由器连接互联网。

如果在这样的网络环境里部署CE的话,在交换机和路由器之间接上一个Bridge模式的Cloud Edge即可。网络拓扑如下:

那么,如果想使用路由模式呢,当然是可以的,在小型网络环境下,路由模式下的Cloud Edge可以直接替代路由器,网络拓扑如下:

IPTABLES与NAT
SNAT是指在数据包从网卡发送出去的时候,把数据包中的源地址部分替换为指定的IP,这样,接收方就认为数据包的来源是被替换的那个IP的主机
MASQUERADE是用发送数据的网卡上的IP来替换源IP,因此,对于那些IP不固定的场合,比如拨号网络或者通过dhcp分配IP的情况下,就得用MASQUERADE
DNAT,就是指数据包从网卡发送出去的时候,修改数据包中的目的IP,表现为如果你想访问A,可是因为网关做了DNAT,把所有访问A的数据包的目的IP全部修改为B,那么,你实际上访问的是B
因为路由是按照目的地址来选择的,因此DNAT是在PREROUTING链上来进行的,而SNAT是在数据包发送出去的时候才进行,因此是在POSTROUTING链上进行的
SNAT与DNAT的应用
SNAT:
- 多台内网机器使用同一个公网IP上网
- 将服务器的源IP隐藏,改成公开的IP
DNAT:
- 端口映射,对数据包进行转发到指定的地址
- 隐藏后端服务的真实地址,用户访问公开的地址,由NAT服务进行转发