企业内网模拟靶场搭建1_前期调研

本文旨在对企业内网搭建的模块进行划分,并给出完整的规划情况和调研所得的技术栈,汇报共7轮,于16周内完成。

一、云环境搭建任务需求

1. 云环境搭建

云环境的目的是进行:企业网的网络架构设计

网络层次:搭建包括 OS 层、虚拟化层、容器层、应用服务层等多层次的云网络环境

结合虚拟化软件,搭建模拟路由器 交换机 防火墙 安全网关 / IoT 接入设备等基础性网络环境

2. 攻击&防御体系

网络系统防御 :

  • 设计基于网络设备(路由器、交换机)、安全防护设备(防火墙、堡垒主机)、网络边缘接入设备(网关、VPN网关)的攻击和渗透工具集,开展攻击测试
  • 面向网络系统的攻击,设计基于网络嗅探、网络拦截、网络检测功能的网络系统防御检测体系

应用设备防御:

  • 设计应用系统全系列攻击工具集,开展攻击测试
  • 设计应用系统全方位 检测防御分析工具集,针对攻击开展检测分析

云环境的攻击&防御:

  • 构建各个层面的漏洞发现、攻击工具集,多层次穿透技术
  • 构建全层次的攻击检测、防御集合,用于响应和发现攻击行为

总言之,体系化的攻击技术体系:整体框架设计、工具集构建、攻击技术研发、攻击渗透验证

体系化的防御技术体系:整体框架设计、工具集构建、安全防御技术研发、安全防御验证

3.新型技术

新型渗透技术:3

  • 体系化的漏洞挖掘工具集构建(开源项目收集 … …)
  • 安全防护场景的探测(在 VPN 、 WAF 、 FW 、 HTTPS 场景下,探测网络中的公开和非公开服务、拓扑 …)
  • 绕过 WAF 、 IPS 的攻击(绕过规则检测、设备脆弱性利用)
  • 自动化攻击渗透(扫描 攻击路径选择 漏洞攻击的组合 …)
  • 高隐蔽性回传技术(动态域名、动态路径、匿名网络)(注:此处回传指的是,当攻击者入侵系统获取资料后,将敏感资料回传至公网,或自己的主机上的动作)
  • 网络基础设施设备的远程攻击和控制(路由器、防火墙、 IoT设备、智能终端 的攻击和控制)

防御技术体系:2

  • 抗绕过 ips 、 waf 规则恶意流量的智能检测技术(对编码、压缩、混淆、加密攻击流量的检测)
  • C&C Command and Control Server )检测 /APT 远控、扩散和回传的检测 SSH/SSL/TSL/ICMP/UDP/SOCKS/Proxy
  • 主机深度智能检测技术(深度脱壳检测、抗沙箱反分析、内存解密反 混淆)
  • 未知新型攻击流量的 AI 智能检测技术
  • 对网络基础设施设备的未知新型远程攻击控制技术的智能检测

二、网络拓扑搭建

注:本部分参考51CTO博主: 听雪落的光阴 相关博客

​ 在学校提供的平台上搭建模拟企业架构存在的问题是:

  • 性能较差,卡顿影响操作
  • 储存节点会随机刷新,无法可控的储存信息,环境有可能被清空
  • 依赖于学校网络中心,随时崩溃

​ 在个人主机上可以通过路由器、hub等工具组成子网,并完成实验,但是专业昂搭建企业架构存在的问题是:

  • 依赖于个人主机,每次组装时间较长
  • 个人主机大多为Windows系统,不容易完成实验需要
  • 使用桥接(bridge)的虚拟机难以与宿主机分割,搭建复杂拓扑存在难点。

​ 综上,经过调研后,我们最终将目光锁定在openstack技术上,下文中将继续记录尝试使用Openstack搭建平台的过程:

1. Openstack调研

关于Openstack:

  • OpenStack起源于云计算技术;
  • OpenStack是一个云操作系统;
  • OpenStack控制三大资源:计算、网络、存储(池);
  • OpenStack采取身份认证机制给予用户权限和资源;
  • OpenStack提供web端的可视化界面方便管理员控制;

OpenStack就是一个控制计算、网络和存储资源的分布式云操作系统。

Openstack整体架构

img

​ 如图,官方给出的架构将OPENSTACK体系分为多个层次,其中的每一个单词对应一个组件,其中被加粗的组件可以被视为核心的组件,未加粗的则是并非核心,按照个人需要安装的组件。

核心组件功能表格:

组件 项目 项目说明
Compute(计算服务) Nova 实施服务和关联的库,以提供对可计算资源(包括裸机,虚拟机和容器)的大规模可扩展的按需自助服务访问
Identity Service(认证服务) Keystone 提供API客户端身份验证,服务发现和分布式多租户授权
Image Service(镜像服务) Glance 发现,注册和检索虚拟机映像。Glance具有一个RESTful API,该API允许查询VM映像元数据以及检索实际映像。通过Glance提供的VM映像可以存储在从简单文件系统到对象存储系统(例如OpenStack Swift项目)的各种位置。
Networking(网络服务) Neutron SDN网络项目,在虚拟计算环境中交付网络即服务
Dashboard(仪表板) Horizon 为OpenStack服务提供基于Web的用户界面
Block Storage(块存储) Cinder 虚拟化了块存储设备的管理,并为最终用户提供了自助服务API,以请求和使用这些资源,而无需了解其存储实际部署在何处或在哪种类型的设备上。
Object Storage(对象存储) Swift 高度可用的,分布式的,最终一致的对象存储。组织可以使用Swift来高效、安全和廉价地存储大量数据。
Telemetry(计量服务) Ceilometer 有效收集,规范化和转换OpenStack服务产生的数据
Orchestration(编排服务) Heat 基于文本文件形式的模板,为云应用程序协调基础结构资源,可以将其视为代码
Database Service(数据库服务) Trove 一个数据库即服务供应关系和非关系数据库引擎
Data Processing(数据处理) Sahara 为用户提供一种简单的方法来在OpenStack上预配数据处理框架(例如Hadoop,Spark和Storm)

Openstack环境搭建

​ 可以自上文看出,Openstack本身只提供最基础的服务和命令行,要正常的使用Openstack一定要安装配置对应的组件,同时在配置之前,需要对网络、时间、安装源、数据库等进行手动安装,这样的工作量是及其庞大的。

image-20230305142931319

​ 要规避安装所带来的痛苦,有一些工具可供我们使用:

  • DevStack
  • PackStack
  • TripleO
  • Juju

在配置过程中,存在大量系统版本报错问题,如:

1
Error: Package: libselinux-ruby-2.5-12.el7.x86_64 (local) Requires: libselinux-ruby-2.4.el7.x86_64

如上类似的版本问题,均可以通过手动下载对应版本,在对应安装包目录下使用:

1
yum downgrade libselinux-ruby-2.4.el7.x86_64.rpm

解决。

在按照上述教程配置环境后,可以访问web界面如下:

image-20230305113157237


2.StarVCenter调研和使用

StarVCenter比较情况

​ StarVCenter和OpenStack都是开源的云计算平台,它们的主要区别在于:

  • 体系结构:StarVCenter是一个基于VMware vSphere的云管理平台,它使用vSphere API来管理虚拟化基础设施。而OpenStack则是一个基于多个开源组件的云管理平台,包括Nova(虚拟机管理)、Neutron(网络管理)、Cinder(存储管理)等等。
  • 支持的虚拟化技术:StarVCenter仅支持VMware的虚拟化技术,而OpenStack支持多种虚拟化技术,包括KVM、Xen、Hyper-V等等。
  • 社区规模和生态系统:OpenStack是由多家公司和组织共同开发和维护的项目,拥有一个庞大的社区和生态系统。而StarVCenter是由VMware单独开发和维护的,其社区和生态系统相对较小。
  • 功能和灵活性:OpenStack具有更高的灵活性和可扩展性,可以根据用户的需要进行自定义配置和扩展。而StarVCenter的功能相对较为简单,主要是针对VMware虚拟化环境的管理和监控。

​ 总之,StarVCenter更适合那些已经使用VMware虚拟化技术的企业,而OpenStack则适用于需要更高灵活性和可扩展性的企业。

注:上述文字通过ChatGPT生成,但是经过实验基本正确。

StarVCenter使用体验

​ StarVCenter的安装相对来说简单得多,开发者将StarVCenter使用.iso镜像封装,直接添加镜像,就能得到配置完毕的环境:

image-20230305144338169

在环境配置完毕后,我们对其功能进行了调研和学习:

添加计算节点:

image-20230305145557954

初始化网络配置:

image-20230305150610068

添加云路由:

image-20230305150635591

添加虚拟机模板:

image-20230305150704456

添加测试虚拟机:

image-20230305150731934

完成了初步对于StarVCenter的学习使用工作后,我们发现该软件存在一定的问题。

StarVCenter的不足之处

  1. starVCenter网上社区较小,通过微信开创社区不太方便:

    image-20230305152743075
  2. StarVCenter更注重starVCenter集群在企业架构中的位置,而不是注重云环境的拓扑情况,如下图,为starVCenter在官方文档中给出的部署结构图,可以看出,官方对该软件的定位也是提供云服务的企业内部计算集群:

    image-20230305161013554

    ​ 如下图所示,StarVCenter给出的全局仿真视图仅仅体现了储存、计算、管理网络的拓扑,但是未反应云服务拓扑因此和我们所做的事情并不对应。

    image-20230305161524312
  3. 因此,总体来说StarVCenter在部署难易、易用性等方面都远远超越了Openstack,但由于其功能和社区所限,我们决定放弃这一方案。

3.对于Openstack学习与探索

使用Openstack搭建企业靶场的可行性分析

可以看到,知网上给出了一些关于使用Openstack搭建靶场的文献。

image-20230305162354915

使用Openstack未解决的问题

网络架构配置问题

​ 由于openstack需要连接控制节点和多个计算节点,以分担控制节点资源不够的情况,他们就需要多台主机进行相连,由于openstack需要在Linux平台上部署,故只能使用虚拟机进行平台的部署,然而虚拟机之间的相连就成了问题之一;虚拟机之间相连,首先需要虚拟机内部能够访问外部网络,另一方面需要外部网络能访问到部署在虚拟机上的服务。要完成前者非常容易,而完成后者,则依赖一定的技术,原因如下:大多数的情况下,openstack软件的步数都依赖于固定的IP地址,因此使用仅主机和nat模式两张网卡进行虚拟机的配置,要让部署了openstack软件的虚拟机上的服务,能够被公共网络访问,最直接的想法就是将虚拟机桥接到网络中,该方法中,我们遇到的难题就是Openstack复杂的网络配置,Openstack本身会利用用户配置时所提供的Ip添加网桥,进行服务的搭建,导致网络变得更加复杂。另一个直接的思路就是使用端口转发技术,转发Openstack向外提供的web服务,以达成服务的外部访问:

端口转发:

​ 调研过程中,我们考虑了两种端口转发的方式,

使用python程序进行转发

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
from twisted.internet import reactor, protocol

LOCAL_PORT = 5000 # 本地端口号
REMOTE_PORT = 5000 # OpenStack服务端口号
VM_IP = '192.168.6.20' # 虚拟机IP地址

class ForwardServer(protocol.Protocol):
def __init__(self, factory):
self.factory = factory

def connectionMade(self):
print(f"Accepted connection from {self.transport.getPeer()}")
# 连接到虚拟机的OpenStack服务
self.remote = protocol.ClientCreator(reactor, protocol.Protocol).connect((VM_IP, REMOTE_PORT))
self.remote.addCallback(self.remoteConnected)
self.remote.addErrback(self.remoteConnectionFailed)

def connectionLost(self, reason):
print(f"Connection lost: {reason}")
if hasattr(self, 'remote'):
self.remote.transport.loseConnection()

def dataReceived(self, data):
self.remote.transport.write(data)

def remoteConnected(self, remote):
print(f"Connected to {VM_IP}:{REMOTE_PORT}")
self.remote = remote
self.remote.transport.registerProducer(self, True)

def remoteConnectionFailed(self, failure):
print(f"Failed to connect to {VM_IP}:{REMOTE_PORT}")
self.transport.loseConnection()

class ForwardServerFactory(protocol.Factory):
def buildProtocol(self, addr):
return ForwardServer(self)

if __name__ == '__main__':
reactor.listenTCP(LOCAL_PORT, ForwardServerFactory())
print(f"Listening on localhost:{LOCAL_PORT}...")
reactor.run()

使用虚拟机自带配置进行转发:

image-20230305172058525

然而,经过试验后,这两类方式都无法完成向内访问的流量转发到虚拟机的目的,经过抓包分析:

image-20230305172859372

服务存在跨域访问的情况,因此,最终还是需要使用桥接技术。

Openstack使用方式学习

逐步学习Openstack软件的使用,如下为指定项目添加角色用户

fb4b369de639745ac0f33b11c9a1155

d99e27fc4d86f2b175d88512217bf0e

三、常见企业网络架构

1.小型企业网络

https://pic1.zhimg.com/80/v2-77f69fbd69fab5602a5211b55e237a28_720w.webp

​ 小型企业的网络架构中,把各个部门划分为独立的vlan并设置一个单独的子网网段,接入层网络使用2层交换机,汇聚及核心层网络使用园区级3层交换机,在各个子网间进行数据转发,最后通过防火墙连接到互联网;这样做的目的是使各个部门网络访问相对独立,便于各个部门设置专属的网络访问需求;各功能模块相对独立,从逻辑层来看清晰明了,方便后期运维及故障排查。

设备:FW(防火墙)-交换机-PC服务器-办公PC-AP(无线网设备)-AC(无线接入AP控制器)-无线设备

路由器和交换机的区别

  1. 交换机工作于 TCP/IP 协议的数据链路层(2层),路由器工作于网络层(3层)。
  2. 交换机的每一个端口对应一个mac地址;路由器接入了几个网络,就有几个IP地址,负责连接不同网络(一般为内-外网);
  3. 有些路由器提供了防火墙的服务,交换机不能提供该功能。路由器仅仅转发特定地址的数据包,不传送不支持路由协议的数据包传送和未知目标网络数据包的传送,从而可以防止广播风暴。

无线和有线传输的区别

  1. 物理层协议:有线网络通常使用的是以太网协议(Ethernet Protocol),而无线网络则使用的是Wi-Fi协议(Wireless Fidelity Protocol),这两种协议在物理层上的传输方式不同。
  2. 链路层协议:有线网络使用的是MAC地址(Media Access Control Address)来标识设备的身份,而无线网络则使用的是MAC地址和SSID(Service Set Identifier)来标识设备的身份。
  3. 网络层协议:有线网络和无线网络使用的网络层协议是一致的,都使用的是IP协议(Internet Protocol)来实现数据包的传输。

总而言之,在网络层以下存在区别,而网络层以上不存在,即AP就是无线交换机。

网络架构设计

image-20230305181451165

2.最常见三层架构网络(大型企业网络架构)

物理网络拓扑:采用简单的三层架构,接入-汇聚-核心;

https://pic2.zhimg.com/80/v2-e9ab66f45b5688fa8fbd4e9ef30fb2e1_720w.webp

  1. 核心层

    核心层是企业网络的中心,连接着汇聚层和其他远程网段,承担着高速数据传输的任务。在核心层中通常采用高速交换机、路由器等设备,保证网络传输速度和可靠性。通常三个以上部门规模的园区网建议规划核心层。针对无线网络,核心层包括WAC,WAC通过CAPWAP(Control and Provisioning of Wireless Access Points,无线接入点控制协议)协议对AP进行管理。

  2. 汇聚层

    汇聚层是接入层与园区核心层之间的网络分界线,主要用于转发用户间的“横向”流量,同时转发到核心层的“纵向”流量。在汇聚层中,通常采用交换机、路由器等设备,以支持不同子网之间的通信。汇聚层还负责实现网络的隔离和分割,以保证网络安全性和管理性。

  3. 接入层

    接入层为用户提供各种接入方式,是终端接入网络的第一层。接入层通常由接入交换机组成,接入层交换机在网络中数量众多,安装位置分散,通常是简单的二层交换机。如果终端层存在无线终端设备,接入层需要无线接入点AP设备,AP设备通过接入交换机接入网络。

这是三个基础层,是为其他层服务的,下面介绍其他层,同时引入一个新架构:

https://download.huawei.com/mdl/image/download?uuid=5bf3e4ab28534271b560267395f8ef4a

终端层

终端层是指接入园区网络的各种终端设备,例如电脑、打印机、IP话机、手机、摄像头等。

核心区

叫法有所不同,指一般存放着企业最重要的数据、文档等资产。例如,域控、核心生产服务器等,安全设置也最为严格。根据业务的不同,相关服务器可能存放于不同的网段中。核心区按照系统可分为业务系统、运维监控系统、安全系统等,按照网段可分为业务网段、运维监控网段、安全管理网段等。

  • 数据中心区

    数据中心区是管理业务服务器(例如文件服务器、邮件服务器等)的区域,为企业内部和外部用户提供业务服务。

  • 网络管理区

    网络管理区是管理网络服务器(例如网管系统、认证服务器等)的区域。网管系统通过网管协议与和网络设备交互,能够提供配置、管理和运维功能,主流的网管协议有:SNMP(Simple Network Management Protocol,简单网络管理协议)和Netconf(Network Configuration Protocol ,网络配置协议)。认证服务器可提供网络准入的认证、授权和计费功能,主流的认证协议有:RADIUS(Remote Authentication Dial In User Service,用户远端拨号接入服务)和TACACS(Terminal Access Controller Access-Control System,终端访问控制器访问控制系统)。

DMZ区

**DMZ(Demilitarized Zone)**非军事化区,也就是隔离区,DMZ区是一个对外服务区,在DMZ区域中存放着一些公共服务器,比如对外的服务器、对外的邮箱等等。用户要从外网访问到的服务,理论上都可以放到DMZ区,这个区对外提供业务,安全性有严格限制。上层可能有WAF、IPS等。

出口区

园区出口是园区内部网络到外部网络的边界,内部用户通过园区出口区接入到外部网络,外部网络的用户通过园区出口区接入到内部网络。园区出口区一般需要部署出口路由器和防火墙。路由器解决内外网互通的问题,防火墙提供边界安全防护能力。

在最一般的架构中,出口区就是一个路由器,当然下面可以接一个fw,再接一个IPS。

设备汇总:路由器-FW-IPS-WAF-交换机(多层交换机)-AP-AC-应用服务器-认证服务器-办公主机-无线设备

访问限制

当规划一个拥有DMZ的网络时候,我们可以明确各个网络之间的访问关系,可以确定以下六条访问控制策略。

  1. 内网可以访问外网

内网的用户显然需要自由地访问外网。在这一策略中,出口路由器需要进行源地址NAT转换。

  1. 内网可以访问DMZ

此策略是为了方便内网用户使用和管理DMZ中的服务器。

  1. 外网不能访问内网

很显然,内网中存放的是公司内部数据,这些数据不允许外网的用户进行访问。

  1. 外网可以访问DMZ

DMZ中的服务器本身就是要给外界提供服务的,所以外网必须可以访问DMZ。同时,外网访问DMZ需要由出口路由器完成对外地址到服务器实际地址的转换。

  1. DMZ访问内网有限制

很明显,如果违背此策略,则当入侵者攻陷DMZ时,就可以进一步进攻到内网的重要数据。

  1. DMZ不能访问外网

此条策略也有例外,比如DMZ中放置邮件服务器时,就需要访问外网。

3.各类设备的调研与实现

安全(网络)设备

路由器
image-20230305184037606

可通过Vyos等开源路由器实现方案实现。

FW
  • 总述:调研获知,有这么几款防火墙软件适配度较高。(考虑:防火墙如思科等商用级别的不适合课程设置,所以我们主要搜集比较经典的或者是高水平课设防火墙项目)

​ 相较于传统的防火墙软件Snort,这一款Suricata支持多线程,理论上有更加良好的检测性能。所以最后我们选择了这个。

IPS

​ Suricata集成了防火墙和IPS的功能,所以这部分采用上一部分的Suricata工具,同时略过此部分。

WAF

Centos7+ModSecurity

1.CentOS和ModSecurity

CentOS简介

CentOS是一个企业级的Linux操作系统,它是Red Hat Enterprise Linux(RHEL)的一个免费版本,因此也被称为“Community Enterprise Operating System”。CentOS具有高可靠性、稳定性和安全性,因此非常适合用于Web应用程序的服务器环境。

ModSecurity简介

ModSecurity是一个开源的Web应用程序防火墙,可以在Apache、Nginx、IIS等Web服务器上使用。ModSecurity功能介绍

SQL Injection (SQLi):阻止SQL注入 Cross Site Scripting (XSS):阻止跨站脚本攻击 Local File Inclusion (LFI):阻止利用本地文件包含漏洞进行攻击 Remote File Inclusione(RFI):阻止利用远程文件包含漏洞进行攻击 Remote Code Execution (RCE):阻止利用远程命令执行漏洞进行攻击 PHP Code Injectiod:阻止PHP代码注入 HTTP Protocol Violations:阻止违反HTTP协议的恶意访问 HTTPoxy:阻止利用远程代理感染漏洞进行攻击 Sshllshock:阻止利用Shellshock漏洞进行攻击 Session Fixation:阻止利用Session会话ID不变的漏洞进行攻击 Scanner Detection:阻止黑客扫描网站 Metadata/Error Leakages:阻止源代码/错误信息泄露 Project Honey Pot Blacklist:蜜罐项目黑名单 GeoIP Country Blocking:根据判断IP地址归属地来进行IP阻断

2.ModSecurity 部署模式

架设方案:

一般来说,为了实现更高的安全性,将WAF部署在Web服务器的上层服务器上会更好。这种方法的优点包括:

  1. 安全性更高:将WAF部署在Web服务器的上层服务器上,可以提供更好的隔离和安全性,因为WAF将运行在专门的服务器上,可以更好地管理和控制安全策略,减少攻击者对Web服务器的直接攻击。
  2. 可伸缩性更好:将WAF部署在Web服务器的上层服务器上,可以更容易地进行水平扩展,以应对不断增长的流量和攻击。
  3. 管理更方便:将WAF部署在Web服务器的上层服务器上,可以更方便地管理WAF的配置和日志,以及与其他安全工具进行集成,提高管理效率和安全性。
  4. 性能更好:虽然将WAF部署在Web服务器的上层服务器上可能会增加一些性能开销,但是现代的WAF设备和软件通常都具有优化性能的功能,可以提供与将WAF部署在Web服务器上相当的性能。

ModSecurity 支持两种部署模式:嵌入模式和反向代理模式。这两种模式各有利弊,选用哪种模式取决于你的架构环境:

嵌入模式(Embedded)

因为 ModSecurity 是 Apache 的一个模块,你可以把它加载到任何兼容的 Apache 版本中。2.0.x 和 2.2.x 系列的 Apache 版本都是兼容的。对于那些架构已经确定好或者已经在使用中的情况来说,使用嵌入模式来部署 ModSecurity 是一个很好的选项。嵌入模式不但不会引入新的故障点(Points of Failure),而且也可以随着底层 Web 基础设施的伸缩而无缝伸缩。嵌入模式部署的最主要挑战是,ModSecurity 和 Web 服务器共享计算资源。

反向代理模式(Reverse Proxy)

反向代理其实是 HTTP 路由器,它被设计成部署在 Web 服务器和其客户端之间。当你安装了一台专用的 Apache 反向代理并且增加了 ModSecurity 模块,那么你就得到了一台网络 Web 应用防火墙–你可以用其来保护同网络的任何数量的 Web 服务器。很多安全实践者倾向于使用独立的安全控制层,这样一来你可以把它和被保护对象完全隔离开来。就性能来说,独立部署的 ModSecurity 有专属的计算资源,那么这意味着你可以做更多的事情(例如,配置更加复杂的规则)。这种部署模式最大的缺陷是,你引入了新的故障点。而解决这个新的故障点的方法是,使用两台或者更多台反向代理服务器的集群来提供高可用(High-Availability,HA)的架构设置。

在Web服务器和客户端之间安装反向代理服务器,可以提高Web应用程序的安全性和性能。当安装了Apache反向代理服务器后,其工作原理如下:

  1. 客户端向反向代理服务器发起请求:客户端通过HTTP协议向反向代理服务器发起请求。反向代理服务器通常会监听80端口或443端口,用于接收客户端请求。
  2. 反向代理服务器代理请求:反向代理服务器收到客户端请求后,会根据请求的URL和其他信息,将请求转发给后端的Web服务器。在这个过程中,客户端并不知道请求实际上被转发给了哪个Web服务器。
  3. 后端Web服务器响应请求:后端Web服务器收到请求后,根据请求的内容进行处理,并且返回响应结果。这个响应结果可以是动态生成的HTML页面、静态的文件或者其他资源。
  4. 反向代理服务器返回响应:反向代理服务器收到后端Web服务器返回的响应后,会将响应内容返回给客户端。在这个过程中,反向代理服务器可以根据需要对响应内容进行缓存、压缩、加密等处理,以提高Web应用程序的性能和安全性。

服务设备(应用)

应用服务器(DMZ区)

1.Web服务器:Ubuntu18.04 + Apache + Flask

web服务器需访问内网(数据管理区)中的数据库服务器以获得数据。

2.DNS服务器:Centos7 + bind 搭建内网服务器

https://www.cnblogs.com/lcxhk/p/14118674.html

https://doc.52zoe.com/docs/maple-linux/maple-linux-1ci1kqbv08g61

企业的DNS服务器对外提供服务主要是为了支持企业的对外网络访问,例如企业的网站、邮件服务器等需要通过域名进行访问。企业可以将其域名解析服务委托给第三方DNS解析服务商,但这样会涉及到一些安全和隐私问题。

企业自己搭建的DNS服务器一般会配置为递归查询的方式。

更新DNS服务器的域名表,自动同步,即DNS服务器可以从其他DNS服务器自动获取域名解析信息,并及时更新自己的域名表。自动同步的方式一般使用DNS协议中的区域传输(AXFR)或增量传输(IXFR)功能实现.

3.邮件服务器:Ubuntu18.04 + Postfix

关于Postfix

Postfix是一个顶尖的SMTP服务器,也被称为MTA。Postfix负责从其他SMTP服务器接收邮件,将MUA递交的邮件传递给收件人。MUA(mail user agent)就是我们平常使用的Thunderbird,Foxmail,Outlook等邮箱客户端。Postfix程序采用模块化的设计,每一个模块都尽可能以最低的权限运行。这种设计非常有助于安全。Postfix与Unix的结合度非常高。一台Linux服务器的Postfix可以负责多个域名的邮件发送和接收。这篇文章只介绍单个域名的发送和接收。 https://blog.51cto.com/u_15127557/4065429

数据库服务器

Ubuntu18.04 + Mysql + 远程访问

https://github.com/Qingquan-Li/blog/issues/151

在数据库服务器中,配置远程访问以供web服务器接入;此外需通过防火墙限制流量,仅允许来自web服务器的流量通过,或建立VPN(偏麻烦)。

认证服务器(域控等)

​ Windows办公环境下,域控的角色常常使用Active Directory完成,Windows Server的局限性使得Windows域中只能添加Windows系统主机,而不能添加Linux系统主机。Samba可以通过Samba 4实现Active Directory域控制器的功能。

https://github.com/samba-team/samba

安卓模拟器

Ubuntu18.04+Genymotion

一般来说,Linux系统上也可以使用安卓模拟器来模拟安卓设备。安卓模拟器软件通常是跨平台的,可以在多种操作系统上运行,包括Linux系统。以下是几种在Linux系统上常用的安卓模拟器:

  1. Android Studio自带的模拟器:Android Studio是一种主要用于开发安卓应用程序的开发工具,它自带了一个安卓模拟器,可以在Linux系统上运行安卓应用程序。安装和配置过程相对较为复杂,需要一定的开发经验。
  2. Genymotion:Genymotion是一种功能强大的第三方安卓模拟器,提供了高度仿真的安卓环境,可以支持多种安卓版本和设备类型,并且支持多种PC平台,包括Linux系统。Genymotion的界面友好,易于使用。
  3. Anbox:Anbox是一种基于Linux容器技术的安卓模拟器,可以在Linux系统上运行安卓应用程序。与其他安卓模拟器不同的是,Anbox是通过在Linux内核上创建安卓容器来实现安卓应用的运行,因此可以实现更高的性能和更好的集成度。

Genymotion是一种基于VirtualBox虚拟化技术的第三方安卓模拟器,可以在多种操作系统上运行,包括Linux系统。具体来说,Genymotion支持以下几种Linux发行版:

  • Ubuntu 18.04、20.04

https://blog.csdn.net/m0_53533553/article/details/127968374

二层设备

交换机(核心+汇聚层)
  • 总述,我们暂时决定采用虚拟化的交换机。下面是几款主流的交换机虚拟方案。

    • https://github.com/faucetsdn/ryu

      • Ryu:Ryu是一个用Python编写的SDN控制器平台,它提供了许多SDN应用程序和网络服务的API,同时也可以作为虚拟交换机使用。Ryu的虚拟交换机模块实现了OpenFlow协议,并且可以与其他SDN控制器配合使用。

      • 然而Ryu是一个SDN控制器的软件包,它不是一个虚拟交换机,因此不能用于直接模拟核心虚拟机和汇聚层虚拟机。然而,可以使用Ryu控制器来控制OpenFlow交换机,这些交换机可以作为虚拟交换机在虚拟化环境中使用,从而实现对核心虚拟机和汇聚层虚拟机的控制。同时,Ryu控制器也支持多种网络拓扑结构和应用场景。

    • https://github.com/openvswitch/ovs

      • Open vSwitch是什么?
        Open vSwitch(OVS)是一个开源的虚拟交换机,可用于在物理和虚拟服务器之间创建虚拟网络。它支持多种数据面处理程序,包括Linux内核、DPDK和Netmap等,同时也支持多种控制器协议,如OpenFlow和OVSDB等。

      • OVS能够同时支持核心交换机和汇聚层交换机的模拟吗?
        云环境平台涉及到两种交换机:核心交换机和汇聚层交换机,而Open vSwitch可以同时模拟核心虚拟机和汇聚层虚拟机。
        Open vSwitch是一个虚拟交换机,可以在虚拟化环境中使用,支持多种虚拟化平台和技术,如KVM、Xen、VMware、Hyper-V等。Open vSwitch提供了许多高级特性,如多层交换、负载均衡、流量限制、VLAN、QoS等。这些特性使得Open vSwitch可以满足数据中心网络中各种不同的需求,包括核心虚拟机和汇聚层虚拟机。

AP&AC(无线访问接入点&接入控制器)

AP设备:

  • 总述:AP设备也能够虚拟化,所以我们寻找了一些虚拟化方案。常用的虚拟化方案有下面的这些。

  • https://wiki.dd-wrt.com/wiki/index.php/%E6%95%99%E7%A8%8B

  • DD-WRT是一个基于Linux的开源无线路由器固件,它可以用于将路由器设备转换为软AP。DD-WRT支持多种路由器设备和Wi-Fi芯片组,具有强大的路由和网络功能。

    • 因为常用的
  • https://github.com/openwrt/openwrt

    • OpenWrt:OpenWrt是一个开源的嵌入式Linux发行版,它可以用于将支持OpenWrt的路由器设备转换为软AP。OpenWrt支持多种硬件平台和Wi-Fi芯片组,具有强大的路由和网络功能。可以利用虚拟机模拟AP设备的实现(vmware模拟AP设备教程:https://www.jb51.net/article/241586.htm)

注意,上面两种软件的都较为主流,主要区别是:OpenWrt注重自由、可定制性强,DD-Wrt注重易用性和稳定性,且支持更多的硬件设备。

私有云和公有云的安全主要靠网络边界的防护,如fw、waf等

4.云服务相关调研

云服务概念解释

云计算&云服务

image-20230305185115232

​ 云计算是一种技术,他搭建了一个平台,帮助中小型企业解决了在部署应用时昂贵的硬件设备成本。在这一平台上,可以提供存储、计算等不同的服务,这些服务就是云服务。“云计算实现的服务”

云服务结构示意

img

​ 硬件、软件、网络等计算机资源,在云计算技术的技术架构中,得到整合,然后在其管理调度下,形成一个计算机资源共享池,即“”。它可以对外提供服务,从而形成一个云计算平台,简称云平台。云平台有存储、计算、处理和共享这4种功能。其中,在云平台上进行存储,即为“云存储”。用户可以通过互联网,接入云平台,以按需、易拓展的方式获取所需服务,这就是“云服务”。

公有云、私有云、社区云、混合云

​ 云计算的部署模式有以下4种,分别是:1、私有云;2、社区云;3、公共云;4、混合云。这是根据云计算服务的消费者来源划分的。私有云是为某个特定用户/机构建立的,公有云是为大众建的,社区云是介于公有、私有之间的一个形式,混合云是公有云、私有云、社区云几种的任意混合。

云网络接入架构

企业客户业务场景多种多样,包括线下 IDC,分布各地的办公室,门店,在家办公人员等。所有这些环境都需要一致的体验接入到企业内网的工作环境。

什么是云架构? 云架构是指构建云所需的所有组件和功能如何连接起来,以便交付供应用运行的在线平台。云被视为平台即服务(Pass),因为云提供商为用户提供了平台以及底层IT基础架构。 与传统的服务器相比,云平台可以将物理资源虚拟化为虚拟机资源池,灵活调用软硬件资源,实现对用户的按需访问。而且在运行过程中根据用户并发量的不同,实时迁移虚拟机资源,一方面保证提供高质量的服务,另一方面最小化资源成本,提高CPU,内存等利用率

云应用网络拓扑:

https://www.iodraw.com/file/img/1/aliyun.svg

VPC:专有网络VPC (Virtual Private Cloud)是基于阿里云构建的一个隔离的网络环境,专有网络之间逻辑上彻底隔离。托管在VPC内的是我们在私有云上的服务资源,如云主机、负载均衡、云数据库等。

专有网络是您专有的云上私有网络。您可以完全掌控自己的专有网络,例如选择IP地址范围、配置路由表和网关等,您可以在自己定义的专有网络中使用阿里云资源,如云服务器ECS(Elastic Compute Service)、云数据库RDS(Relational Database Service)和负载均衡SLB等。

VPN:VPN的英文全称是“Virtual Private Network”,翻译过来就是“虚拟专用网络”。在公用网络上建立专用网络,进行加密通讯。在交换机,防火墙设备或Windows等软件里也都支持VPN功能,一句话,VPN的核心就是在利用公共网络建立虚拟私有网。

简而言之,VPN创建了一条通向内网的通道,用户通过访问VPN服务器来访问内网服务,即用户对内网服务是不可见的,内网服务对用户是可见的,VPN服务器代替用户访问内网网站。

跨地网络互通云企业网方案

https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/8328558561/p469742.png

四、访问控制技术

​ 传统企业网络的大内网中,有极大一部分的威胁都来自于黑客入侵内网某一台主机后,横向移动导致的进一步攻击,为了有效地快速对入侵事件进行响应,阻止横向移动,可通过构建内网的防御体系:

1.ACL(访问控制列表)

image-20230305213404915

  • 访问控制列表ACL(Access Control List)是由一条或多条规则组成的集合。所谓规则,是指描述报文匹配条件的判断语句,这些条件可以是报文的源地址、目的地址、端口号等。
image-20230305213823572
  • ACL本质上是一种报文过滤器,规则是过滤器的滤芯。设备基于这些规则进行报文匹配,可以过滤出特定的报文,并根据应用ACL的业务模块的处理策略来允许或阻止该报文通过。
  • ACL的缺点:难以优化理解,大型ACL的冗余、不一致

实现方案:一般路由器都能够进行ACL配置。

2.SDP(软件定义边界)

image-20230305213708489

  • 软件定义边界”( Software Defined Perimeter,SDP),也称为Dark Cloud,是由国际云安全联盟CSA于2013年提出的基于零信任(Zero Trust)理念的新一代网络安全技术架构。SDP借鉴了虚拟化技术和其他软件定义的体系结构的概念,旨在进一步实现网络安全现代化。

  • SDP主张网络隐身、零信任、最小授权,所有应用程序都将被隐藏,外部方和攻击者都看不到它,只有在对每个端点请求进行身份验证和授权之后才授予访问权限。使用SDP的公司实质上是在其服务器和其他基础架构上披上了隐形的外衣,没有人可以从外面看到,只有授权用户可以访问基础结构。

SDP开源实现方案https://github.com/WaverleyLabs

3.SDN(软件定义网络)

​ 在传统的网络中,网络设备通常具有复杂的配置和管理,因此难以快速应对网络安全威胁。另外,传统网络中的数据包传输是基于物理设备的,攻击者可以通过攻击这些物理设备来获取更多的访问权限,并进行横向移动攻击。

​ 而SDN采用了软件定义的方式管理网络,可以通过中央控制器对整个网络进行实时管理和控制,从而提高了网络的可视化和可管理性。此外,SDN中的网络流量可以通过流量分类和隔离技术进行管理,可以对网络流量进行更加精细的控制和监控,从而有效防止横向移动攻击。

  1. OpenDaylight:OpenDaylight是一个开源的SDN控制器,可以用于构建和管理SDN网络。它提供了各种插件和API,可以方便地管理和控制SDN网络中的设备和流量。
  2. Floodlight:Floodlight是一个基于OpenFlow协议的开源SDN控制器,支持各种类型的SDN网络拓扑结构和流量管理。它提供了一系列的API和插件,可用于构建和管理SDN网络。
  3. ONOS:ONOS是一个开源的SDN控制器,支持各种类型的SDN网络拓扑结构和协议。它提供了一系列的API和插件,可用于构建和管理SDN网络。
  4. Ryu:Ryu是一个轻量级的SDN控制器,可以用于构建和管理SDN网络。它支持OpenFlow协议和其他SDN协议,提供了一系列的API和插件,可用于管理SDN网络中的流量和设备。

SDN:https://pluribusnetworks.com/blog/what-is-network-segmentation/