网络拓扑入门

 


1.介绍

当我们做渗透测试时,这是一个了解其整个网络拓扑结构的大好机会。因为平时我们没有这个内部网络的访问管理权限,所以除了做渗透测试之外的时候,我们不能掌握整个拓扑结构,然而即便是了解了一部分拓扑结构,也会让你觉得很有成就感。

但是,如果我们想要画出一个网络拓扑图,我们必须要对相关的基本设施有所掌握。因此,我们需要对以下内容有所了解:交换机、路由器、IDS/IPS、防火墙、虚拟专用网络(VPNs)、DMZ和VLAN等。这绝对不是一个无关紧要的要求。

首先我们必须要对这些东西进行一下简单的说明。对于那些你已经知道的内容,你可以快速浏览一遍,但若你从来都不了解这些东西,你应该参考一些更加全面的资料。

2.网络内部设施

交换机:网络交换机或交换式集线器是连接电脑网络桥段和节点的网络设备。其中我们应该牢记交换机是工作在OSI/ISO模型的第二层(其中也有一部分具有路由功能的交换机工作在第三层,但我们现在可以先忽略它)。你应该重点关注思科交换机,因为思科交换机在大型网络中遍地都是。

路由器:路由器是网络之间互相转发数据包的设备,是整个网络的交通枢纽。路由器可连接两个或者两个以上来自不同网络的数据线。当从其中一条线路中发送数据包时,路由器会读取数据包中的地址信息,以确保它能够到达正确的最终目的地。然后使用其路由表或是路由策略中的信息,给数据包发出指示,让数据包开始下一个网络旅程。路由器会在网络上充当一个“交通指挥”的角色,并且路由器工作在OSI/ISO模型的第三层,这意味着它能够支持NAT。NAT是一种网络地址转换技术,可以将广域网IP地址转换成局域网的IP,所以可以使数据包通过内部网络进行传送。

IDS:入侵检测系统可以是基于软件的,也可以是基于硬件的,是用于监视网络数据包或是系统当中是否存在恶意活动,并对此设置了安全规则,若检测到这样的恶意活动,入侵检测系统可以及时作出反应。通常若是在网络上检测到恶意活动时,源IP的恶意流量会被阻止一段时间,从这个恶意流量地址所发的数据包都将会被拒绝。更多相关资料可以点击这里:http://resources.infosecinstitute.com/packet-filtering/

IPS:入侵防御系统基本上是一个升级的入侵检测系统。IDS是用来探测和记录攻击的,IPS是用来检测、阻断并记录攻击。IPS系统能够预防某些攻击并阻止这些攻击继续发展。IPS系统版本众多,但在这里我们并不会一一都将其进行介绍,因为它们与IDS系统相似,除了具备IPS系统的功能外还可以防止持续性攻击。IPS系统的类型是:NIPS、HIPS、WIPS、NDA。更多相关资料请点击这里:http://resources.infosecinstitute.com/packet-filtering/

防火墙:防火前也可以是基于软件或是基于硬件的,它的作用很简单就是用来保护网络安全的。其主要目的是要控制传入和传出的网络流量,并对这些网络流量中的数据包进行分析,根据预定的策略确定它们是应该被允许通过还是被拦截。在被假定安全和可信的内部网络与另一个假定为不安全和不可信的外部网络之间建立一个防火墙,这防火墙就是这两个网络互相通信的安全桥梁。更多相关资料可以点击这里:http://resources.infosecinstitute.com/packet-filtering/

VPN:虚拟专用网络(VPN)是一种利用互联网或其它中间网络将计算机连接到孤立的远程计算机网络的技术。网络流量通过VPN连接发送并使中间网络上的其他计算机保持独立,VPN在其中则提供了一种安全保障。VPN可以连接一个远程网络个人用户,也可使多个网络连接在一起。当一个非常庞大的特定公司网络中,通常所有的硬件设施可能会在不同的地方。但是,这些硬件设备仍然应该是在同一个网络中的不同组成部分。因此,即使这些网络设备与互联网相连接还相距半个地球那么远,并且所属于不同的供应服务商,但它们仍是同一个网络的一份子。让我们来看看一个简单的例子:如果一家企业是专注于计算机硬件销售的,它们可能会有许多门店分布在全国各地,甚至是多个国家或地区。为了使这些设备同属于一个网络,即使他们的互联网服务是由不同的供应商所提供的,VPN的使用便可满足他们的需求。因此,通过虚拟专用网络(VPNs),若这些用户是同属于一本地网络的话,就可以访问相关的这些远程资源了。

DMZ:DMZ是一个物理或逻辑子网,这个子网包含并公开一些必须面临一个更大不受信网络(通常是互联网)的外部服务。DMZ的目的就是为企业的本地区域网络(LAN)增加一个额外的安全层,外部攻击者只能访问DMZ中的设备,而不是网络中的其它部分。(BTW:我们应该把需要连接到万维网的服务器放到DMZ当中。)因此,在DMZ区域中的服务器是被允许访问的,除此之外网络中其它部分的任何服务器都将被隐藏起来。在DMZ区域中的服务器也不能访问内部网络的其它部分,因此,既是发生了严重的攻击事件,攻击者也只能够攻陷DMZ中的服务器。

VLAN:VLAN(虚拟局域网)是一个将物理网络进行逻辑划分的概念,以便创建不同的广播域。这通常是在交换机或者路由器设备上进行实现的。依据通用需求对一组主机进行划分,而不用管它们的物理位置,VLAN可以大大地简化网络设计。VLAN具备 一个物理局域网(LAN)所具有的相同属性,即使在不同的交换机端口,它也可以使其更容易地组合到一起。VLAN可以建立一个虚拟局域网,我们不必在实际环境中进行设备的搬迁,虚拟化环境给我们提供了这样的便利。我们必须接受现实——如今,几乎每家企业都采用了虚拟化的网络设置。

3.网络拓扑结构

接下来,通过下面的图片,我们将介绍一种非常常见的网络拓扑结构。对于下面的网络结构,我们也希望能够得到一些反馈,如果你所使用的网络与此结构不同,你也可以留下一两句话,帮助我们做出一些知识上的校正。我们可以为一些新建公司提供不同的拓扑结构的图示,依据他们自己的需求来做相应的选择。

下面这是一个中型企业的拓扑图,他们应该是使用了/24 IP网段。

网络拓扑入门

我们能了解到这个企业的网络拓扑图是/24 IP网段的。在网络的入口点是一个由IDS/IPS系统和防火墙组成的网关。这都是为了防止已知的恶意攻击袭击内部网络系统而设置的。之后,我们就可以看到SRV非控制区域了,它包含了面向外界访问的所有服务器。另外此图上还表现了各种各样的本地局域网(LANs),以及VLANs等相关应用(通常是用的硬件虚拟化)。但还有一点不要忘记,如果网络是分布在多个地理位置上,VPNs的使用也是必不可少的。

4.描绘一个网络拓扑:简单的例子

确定企业的网络拓扑结构时,我们首先要确定其IP范围。为了确定IP范围需要掌握Gentoo Linux基础,我们可以使用nslookup 和 whois工具,如下:

网络拓扑入门

我们可以从Gentoo Linux中看到IP范围为89.16.167.128 – 89.16.167.143,可以代表成一个CIDR: 89.16.167.128/28。这个可以通过手工计算,也可使用一个网页上的在线工具来计算。

我们也可以看到Gentoo Linux托管地址:http://www.bytemark.co.uk,我们需要进一步调查。确定ByteMark 托管公司的ASN号码,我们可以执行whois命令,如下所示:

网络拓扑入门

还不错,“BYTEMARK-AS Bytemark电脑资讯有限公司”的ASN号码是35425。但我们还需要更进一步,我们需要找出ByteMark管辖区域内所有IP地址。我们可以通过whois命令再次做到这一点:

网络拓扑入门

注意,我们使用了AS35425,通过前面的步骤,最后Gentoo Linux得出了IP范围:89.16.160.0/19。

接下来的事情就是在Gentoo Linux域中跟踪路由的IP地址,通过不同的位置找到入口点。

从网站http://centralops.net/跟踪路由的结果如下。我们可以看到,Bytemark托管公司的第一个节点是91.223.58.79,可以直接访问属于Gentoo的地址89.16.167.134。可能有人觉得奇怪,但这是符合逻辑的,因为Gentoo Linux没有自己的自治系统(AS),所以Bytemark可以直接访问到自己的主机。

网络拓扑入门

让我们从不同的地点,尽量多运行几个路由跟踪。http://network-tools.com/网站的路由跟踪结果如下。

我们可以看到如下结果中,连接到89.16.167.134与91.223.58.79有着相同的结果。如果我们从更多的地方运行路由跟踪,我们可以得到不同的结果,因为数据包会被Bytemark路由器进行路径选择分配到不同的IP地址。

网络拓扑入门

我们可以看到,Gentoo Linux拓扑结构真的不复杂,因为他们没有自己的ASN。他们的托管服务提供商Bytemark真的不应该在那个地方装过滤器或者是IDS/IPS,因为那是终端用户该去申请的工作。如果托管服务提供商将过滤数据包转发到终端IP地址(不管他们运行HTTP,SSH还是FTP等),他们需要看自己的数据包和接受/拒绝它们,这可能会导致大量的问题。例如,让我们说,我们连接到www.gentoo.org,但Bytemark的托管过滤器决定它不会让我的数据包通过(无论何种原因。)你能发觉出有问题吗?这不应该是Bytemark来决定Gentoo网站的哪些数据包该通过,他们不应该对允许/拦截连接做出决定。

5.总结

我们已经看到了如何得到一个简单企业的网络拓扑结构了,但通常我们所遇到的情况并没有这么简单,因为有多个过滤器、IDS/IPS系统会阻止我们的请求。一般的路由跟踪本身并不会描绘出所有的目标主机,因为当数据包进入客户的网络时,它会被检查、过滤或者被中断。

### 关于网络拓扑图的概念 网络拓扑图是一种用于表示计算机网络中设备之间逻辑或物理连接方式的图表。它能够清晰地展示网络中的节点及其相互关系,从而帮助技术人员分析和优化网络性能[^1]。 --- ### 网络拓扑图的主要类型 网络拓扑图可以分为多种类型,常见的有以下几种: #### 1. **总线型拓扑** 所有的设备都连接到一根公共传输介质上,数据沿着这条线路传播给所有设备。这种类型的拓扑简单易实现,但在现代网络中较少使用。 #### 2. **星型拓扑** 每台设备都通过单独的电缆连接到中央集线器或交换机。这是目前最常用的局域网拓扑之一,因为它的扩展性和管理相对容易。 #### 3. **环形拓扑** 各种设备形成一个闭合回路,每个设备只与其两侧相邻的设备相连。令牌传递机制常被用来控制访问权限。 #### 4. **树状拓扑** 这是一个分层结构,在该模型下多个星型子网链接在一起构成更大的网络体系。 #### 5. **网格拓扑** 每个节点与其他每一个节点都有直接连线,提供极高的冗余度但成本高昂。 #### 6. **混合拓扑** 结合两种以上基本形式构建而成的实际应用环境下的复杂布局模式。 --- ### 使用 Python 和 Matplotlib 绘制简单的网络拓扑图 下面给出一段基于 `Matplotlib` 的代码示例,演示如何绘制基础版本的网络拓扑图: ```python import matplotlib.pyplot as plt import networkx as nx # 创建一个新的无向图对象 G = nx.Graph() # 添加节点 nodes = ['Router', 'Switch1', 'PC1', 'PC2'] G.add_nodes_from(nodes) # 定义边的关系 edges = [('Router', 'Switch1'), ('Switch1', 'PC1'), ('Switch1', 'PC2')] G.add_edges_from(edges) # 设置绘图参数 pos = nx.spring_layout(G) # 自动计算位置 nx.draw_networkx_nodes(G, pos, node_size=700) nx.draw_networkx_labels(G, pos) nx.draw_networkx_edges(G, pos, edgelist=G.edges(), edge_color='black') plt.title('Simple Network Topology') plt.axis('off') # 隐藏坐标轴 plt.show() ``` 上述脚本利用了 `networkx` 库生成了一个小型网络,并调用了 `matplotlib` 来渲染图像。 --- ### 更高级别的自动化 IP 拓扑发现方案 如果目标是从真实环境中动态获取当前活动主机列表并自动生成对应的IP地址分布情况,则需要用到更复杂的流程设计。这通常涉及以下几个阶段的操作步骤描述如下(注意这里不采用具体术语引导): - 利用 Nmap 或 Scapy 对指定范围内的 IP 地址发起扫描请求; - 收集返回的结果信息建立关联表单记录各个端口状态以及服务详情等内容; - 把这些收集来的资料导入至支持图形可视化的框架比如 NetworkX 中处理成适合展现的数据格式最后呈现出来[^2]。 --- ### 开源项目推荐 对于那些寻求现成解决方案而非自行开发程序的人来说,“Topology” 是一款非常值得尝试的应用软件包。该项目提供了丰富的功能选项允许用户快速搭建属于自己的定制版可视化界面效果同时兼容主流操作系统平台运行无障碍[^3]。 另外还有其他一些类似的第三方插件也可以考虑加入进来作为补充增强整体体验感例如 mxGraph API 提供了一套完整的 JavaScript 控件集合专门针对浏览器端应用场景打造出来的强大工具集可供开发者自由选用满足不同层次需求场景的要求[^4]。 ---
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值