
网络安全实验手记用华为eNSP模拟器把攻防玩明白干了这么多年网络运维我对模拟器一直有种“又爱又恨”的复杂感情。爱的是它能让我在不出门、不碰真机的前提下把各种网络安全的实验翻来覆去地折腾恨的是无论是GNS3、EVE-NG还是华为自家的eNSP初期环境配置总能让人血压飙升。但说句大实话如果你想系统的学习网络安全练手ACL、防火墙策略、AAA认证这些基础中的基础eNSP依然是目前最顺手、最贴合国内主流数通设备的工具。这篇文章我准备把最近在华为eNSP模拟器上完成的一整套网络安全实验完完整整记录下来。从环境搭建到拓扑设计从ACL访问控制到防火墙安全策略再到AAA认证、VLAN隔离和ARP攻击防御每一步都带命令带验证把我踩过的坑也一并写出来。给正在学网络安全的兄弟们做个参考也给那些刚装好eNSP不知道从哪下手的朋友一条清晰路线。1. 环境准备与实验拓扑设计1.1 eNSP模拟器的安装与基础配置我记得最开始装eNSP的时候卡在启动设备失败这个问题上好几天。后来研究明白了大部分启动失败都不是软件本身的问题而是底层的VirtualBox 和 WinPcap 没配好。安装顺序上我有一个稳妥的流程先装WinPcap再装VirtualBox最后装eNSP本体。这里有个容易忽略的点VirtualBox的版本千万别选太新的eNSP官方自带配套版本最好。我自己试过用VirtualBox 7.0搭配老版本eNSPAR设备直接无法启动报错40换回官方配套版本之后问题立刻就消失了。装好之后打开eNSP会有几个提示弹窗我记得有一个是“VirtualBox未安装”如果SDK检测不到VirtualBox用起来就会各种报错。这里建议在eNSP菜单栏选“工具 - 注册设备”手动重新注册一遍AR、交换机、防火墙等设备模板注册成功的标志是状态栏里设备图标变成彩色不再是灰色。我每次装完新环境都会习惯性跑一遍注册设备这个操作虽然不起眼但能减少大量莫名其妙的故障。提示如果AR设备启动后一直卡在“启动中”或进度条不动优先检查防火墙是否拦截了VirtualBox的虚拟网卡通信以及是否以管理员权限运行eNSP。我实测下来管理员权限几乎是个必选项。1.2 网络安全实验的拓扑规划思路学网络安全不能只盯着单台设备做配置你得把它放到一个网络环境里让流量真正跑起来攻击和防御才有意义。这次我规划的是一个小型企业网络模型模拟一个典型的分区网络。拓扑包括三块区域一是外部区域我放了一台Client模拟互联网用户它可以是攻击者也可以是正常访客二是DMZ区域放了一台Server模拟对外提供服务的Web服务器三是内部区域放了两台PC分别模拟办公终端和服务器区中间用一台防火墙连接外部和内部用一台核心交换机做VLAN隔离。设备选型上我在eNSP里使用AR2220做边界路由器USG6000V做防火墙S5700做核心交换机。USG6000V在较老版本的eNSP里需要导入镜像才能启动我记得有一个独立的防火墙设备包。如果你发现设备列表里没有防火墙或者启动之后总是重启基本就是镜像没导入成功。拓扑设计的关键思路在于安全区域必须边界清晰。外网区域Untrust、DMZ区域DMZ、内网区域Trust是防火墙实验的三大基础安全区域后续所有安全策略都要围绕这三个区域展开。很多新手配置防火墙失败都是因为区域概念没搞清楚策略放行写到一半就乱了。2. 基于ACL的基础访问控制实验2.1 ACL的作用原理与基本配置ACL访问控制列表是网络安全入门绕不开的第一个重点。它可以简单理解成一个“门禁名单”路由器、交换机、防火墙收到数据包之后按ACL规则从上往下匹配命中哪条就执行哪条的动作要么允许permit要么拒绝deny。在eNSP里配置ACL之前一定要先想清楚“我要控制的是谁访问谁”。以我的实验为例企业内部有一台数据库服务器192.168.10.10只允许办公区的财务终端192.168.10.100访问其他所有的内网设备都不能访问它。这个需求要是没有ACL你光靠物理线路可没法实现。具体配置分两步。第一步在核心交换机上创建基本ACL或高级ACL。基本ACL2000-2999只能匹配源IP高级ACL3000-3999可以匹配源地址、目的地址、端口号和协议类型。这里我们需要限制访问数据库服务器的端口所以用高级ACL。# 核心交换机上配置 acl number 3001 rule 5 permit tcp source 192.168.10.100 0.0.0.0 destination 192.168.10.10 0.0.0.0 destination-port eq 3306 rule 10 deny ip source any destination 192.168.10.10 0.0.0.0 rule 15 permit ip第二步在数据库服务器所在VLAN的入方向或出方向调用这个ACL。如果你调用的位置不对规则不生效不说还可能把正常业务也切断了。以VLAN 10为例interface Vlanif10 traffic-filter inbound acl 3001这里我解释一下匹配顺序的问题。ACL规则编号越小匹配优先级越高。上面我写了3条规则第1条放行财务终端访问数据库的3306端口第2条拒绝任何设备访问数据库服务器第3条放行其余所有流量。为什么要有一条“放行其余所有流量”因为ACL默认隐含拒绝所有如果不加这条VLAN10里的设备连网关都ping不通整个网段就瘫痪了。这个“最后放行全部”的思路在任何ACL配置里都是个好习惯。2.2 验证ACL生效从ping到telnet配置ACL之后不能光看命令敲进去就完事必须做验证。eNSP提供的抓包工具是个很好的帮手。我在实验里先在PC1192.168.10.100上ping数据库服务器通了。然后在PC2192.168.10.200上ping同一个IP直接超时。这说明ACL第二条规则生效了PC2被正确拦截。这里有个小细节ACL对ping的拦截用的是ICMP协议如果之前的ACL里没有deny icmp的规则那ping可能还是会通。我在上面的配置里第二条是deny ip这等价于拒绝了所有协议所以ICMP也被拦了。如果是生产环境我不建议大范围deny ip最好精确到协议和端口。比如只禁止telnet23端口或只禁止RDP3389端口这样对业务的影响更小。我做过一个实验只针对SSH和Telnet做ACL限制发现用反掩码时特别容易写反。想匹配整个网段时用0.0.0.255匹配单个IP时必须用0.0.0.0。这个反掩码的概念新手至少要踩两次坑才能彻底记住。2.3 ACL实验中的常见误区ACL最常见的坑有三个。第一个是我前面说的忘记加“允许其他流量”的兜底规则导致网络中断。第二个是调用方向搞错ACL是分入方向和出方向的方向选错了规则不生效。第三个是高级ACL里协议类型写错比如只写了TCP但实际流量是ICMP看起来规则没生效其实只是协议没匹配上。实操心得我习惯在写ACL之前先在纸上画出源、目的、端口、动作四列逐条写好再看一眼方向。磨刀不误砍柴工这样能避免大半配置失误。3. 防火墙安全策略配置实验3.1 防火墙区域与安全策略概念安全策略和ACL最大的区别在于ACL是“匹配式过滤”而安全策略是“基于会话的管控”。防火墙不仅仅看单个数据包它还会记录整条会话的状态。只要第一个包被允许后续属于相同会话的包自动放行这就是状态检测防火墙比普通ACL更高效的原因。在华为USG6000V上安全策略的核心是“区域 源地址 目的地址 服务 动作”。区域默认有Trust信任区、Untrust不信任区、DMZ隔离区和Local本地区域。每个接口必须绑定一个区域接口和区域绑定错了全盘皆输。我的实验拓扑里防火墙GE1/0/0接外网属于Untrust区域GE1/0/1接DMZ服务器的交换机端口属于DMZ区域GE1/0/2接内网核心交换机属于Trust区域。地址规划如下。区域接口网段说明UntrustGE1/0/0100.1.1.0/24外网用户区域DMZGE1/0/1172.16.1.0/24Web服务器区域TrustGE1/0/2192.168.10.0/24办公终端区域3.2 写策略从放任到最小权限我一开始做实验时为了方便测试直接在防火墙上写了permit any any整个网络倒是通了但这完全脱离了安全实验的本意。后来我重做了一遍严格按照最小权限原则只放行必要流量。内网用户访问DMZ的Web服务我放行了HTTP和HTTPS80、443端口。外网用户访问DMZ的Web服务也放行HTTP和HTTPS。内网用户访问外网放行所有出方向流量。其他所有默认拒绝。华为USG6000V配置安全策略的命令我贴一下# 进入防火墙配置视图 system-view # 配置接口IP并划入区域 interface GigabitEthernet1/0/0 ip address 100.1.1.254 255.255.255.0 quit firewall zone untrust add interface GigabitEthernet1/0/0 quit interface GigabitEthernet1/0/1 ip address 172.16.1.254 255.255.255.0 quit firewall zone dmz add interface GigabitEthernet1/0/1 quit interface GigabitEthernet1/0/2 ip address 192.168.10.254 255.255.255.0 quit firewall zone trust add interface GigabitEthernet1/0/2 quit # 配置安全策略 security-policy rule name trust_to_dmz_web source-zone trust destination-zone dmz source-address 192.168.10.0 mask 24 destination-address 172.16.1.0 mask 24 service http service https action permit rule name untrust_to_dmz_web source-zone untrust destination-zone dmz destination-address 172.16.1.0 mask 24 service http service https action permit rule name trust_to_untrust source-zone trust destination-zone untrust action permit写完之后我验证了一下。PC1访问Web服务器通Client访问Web服务器也通。但PC1想ping DMZ里的Web服务器失败。原因很简单我只放行了HTTP和HTTPS没放行ICMP所以ping被默认拒绝拦截了。这个结果恰恰说明安全策略的粒度控制起作用了而不是像ACL那样把所有ICMP都放行。3.3 防火墙丢包时的排查思路防火墙实验里遇到最多的问题是“我明明写了permit为什么还是不通”。我总结了一套自己的排查顺序先看接口IP和区域绑定对不对再看路由表有没有回程路由最后再查安全策略匹配情况。接口和区域的问题用display firewall zone查看区域绑定的接口列表一眼就能看出来。路由问题在防火墙配置中尤其重要——很多新手只配了去程方向的路由忘了回程路由导致数据包能到达服务器回复包却回不来。安全策略的匹配情况可以用display security-policy rule all查看规则列表也可以用抓包看数据包是否到达防火墙接口。如果数据包到达但被丢弃防火墙的会话表里会有相关记录可以执行display firewall session table查看。注意USG6000V在eNSP里有默认的安全策略如果不把默认策略禁用会干扰你的实验。建议实验前先把默认策略的rule全部清除或者调整顺序让自定义规则放在前面。4. AAA认证与远程管理安全实验4.1 为什么需要AAA认证网络设备的管理方式默认是控制台直接登录但在实际企业环境里运维人员不可能每次都蹲在机房里连console线。我们通常通过SSH方式远程管理路由器、交换机、防火墙。问题来了如果远程管理的密码是明文、账号是弱口令那等于给攻击者留了一扇后门。网络安全实验如果不把这一块纳入进来就少了最重要的一环。AAA是Authentication认证、Authorization授权、Accounting计费的缩写在华为设备上可以通过配置AAA框架来对接本地数据库或远程RADIUS服务器实现统一的账号管理和权限控制。我在实验里用本地AAA方案在设备上创建一组账号要求所有远程SSH登录必须使用这组账号禁止使用默认的VTY密码登录。4.2 本地AAA与SSH配置实操配置AAA的第一步是创建用户和密码并指定用户的服务类型和权限级别。system-view aaa local-user admin password cipher Admin123 local-user admin privilege level 15 local-user admin service-type ssh quit第二步配置SSH服务。华为设备上需要生成RSA密钥对并开启SSH服务。rsa local-key-pair create # 提示输入密钥长度时我习惯输入2048 stelnet server enable ssh user admin authentication-type password第三步配置VTY用户界面使用AAA认证并且只允许SSH协议接入。user-interface vty 0 4 authentication-mode aaa protocol inbound ssh quit配置完成之后我在PC上用SSH客户端eNSP里的终端直连或第三方工具连接AR2220的接口IP。输入账号admin和密码Admin123成功登录。这时候我用display users查看当前在线用户能看到有一个来自PC的SSH会话。这个实验的意义在于设备上所有的远程管理活动都有据可查什么人什么时候登录过都能审计到这就是AAA里的计费功能在实用层面的价值。4.3 设备安全加固细节在做完AAA和SSH之后我顺手给设备做了几项安全加固虽然实验不强制要求但实际工作中非常有用。第一关闭不必要的服务。华为设备上HTTP管理服务默认可能是开启的危险系数很高。我直接undo http server enable把它关掉同时也关掉Telnet服务只保留SSH。第二配置ACL限制SSH管理源的IP地址。可以创建一条ACL只允许运维网段的IP访问设备的SSH服务其他IP一律拒绝。配置方式是user-interface vty 0 4下调用acl。第三设置密码安全策略。包括密码复杂度要求、登录失败锁定等机制。这些功能在AAA视图里就能配比如login-failed times 3 lock-time 5意思是连续输错3次密码锁定5分钟。我在实验里专门测试过故意输错密码3次账号确实被临时锁定了。这个机制对防止暴力破解很有用。5. VLAN隔离与二层安全防护实验5.1 内部网络为什么需要分层隔离企业内部的网络规模一大如果不做任何隔离所有终端都趴在同一张二层广播域里后果就是广播风暴拖垮网络、ARP欺骗泛滥成灾、一台中毒的PC可以充当中间人去嗅探同网段所有流量。VLAN是解决这些问题的基础手段。在这个实验里我把办公区按部门划分成多个VLAN行政部门VLAN 10、技术部门VLAN 20、服务器区VLAN 30各VLAN之间通过三层交换机的VLANIF接口互通。但我想验证的不只是“能互通”而是“谁能和谁互通”。正好结合前面ACL的实验在核心交换机上控制VLAN 10只能访问VLAN 30VLAN 20不能访问VLAN 30。5.2 配置VLAN与VLANIFS5700交换机上的VLAN配置比较简单# 创建VLAN vlan batch 10 20 30 # 配置接口类型和划分VLAN interface GigabitEthernet0/0/1 port link-type access port default vlan 10 quit interface GigabitEthernet0/0/2 port link-type access port default vlan 20 quit interface GigabitEthernet0/0/3 port link-type access port default vlan 30 quit # 创建VLANIF接口作为各VLAN网关 interface Vlanif10 ip address 192.168.10.254 255.255.255.0 quit interface Vlanif20 ip address 192.168.20.254 255.255.255.0 quit interface Vlanif30 ip address 192.168.30.254 255.255.255.0 quit这里有一个注意事项PC的网关必须填写对应VLANIF接口的IP地址否则跨VLAN通信会失败。VLANIF接口只要创建了三层交换机就具备了路由转发功能不同网段之间能自动互通。我验证了一下VLAN 10的PC能ping通VLAN 30的服务器VLAN 20的PC也能ping通VLAN 30。这说明三层互通没问题。接下来在交换机上配置ACL实现VLAN20对VLAN30的访问阻断。acl number 3002 rule 5 deny ip source 192.168.20.0 0.0.0.255 destination 192.168.30.0 0.0.0.255 rule 10 permit ip quit interface Vlanif20 traffic-filter inbound acl 3002 quit再次验证VLAN 10的PC能访问VLAN 30VLAN 20的PC访问VLAN 30失败。通过这种方式我实现了同一台交换机上不同部门之间的访问隔离。在很多企业里这种“VLANACL”的组合被广泛用于财务网段、人事网段等高敏感区域。普通员工网络即使被攻破也无法横向渗透到敏感网段这就是纵深防御里很重要的一环。6. 攻击防御实验ARP欺骗与MAC地址防护6.1 ARP欺骗实验的原理还原ARP欺骗是我觉得最直观也最适合在eNSP里复现的攻击类型因为它的原理不复杂但危害极大特别适合用来理解“网络安全为什么不能只看防火墙”。实验里我模拟一个攻击场景攻击者PCVLAN 20向网络中发送伪造的ARP响应声称自己就是网关的IP地址于是同网段其他PC的ARP缓存表被篡改它们发往网关的流量全部被攻击者截获。实验环境两台PC连接在S5700交换机上网关地址为192.168.20.254。一台是正常用户PC-A另一台是攻击者PC-B。PC-B通过eNSP自带工具发送伪造ARP报文。eNSP里可以用命令行工具模拟发包也可以用第三方工具配合虚拟网卡实现。在实验环境里我用的是软件发包效果非常明显。我用PC-A去ping外网正常情况下是通的。但在攻击者发送一次伪造ARP之后PC-A的arp表里网关的MAC地址变成了PC-B的MAC地址。这时候PC-A再ping外网数据包全部发给了PC-BPC-A自然就ping不通了。6.2 基于交换机的防御配置ARP欺骗的根源在于终端设备盲目信任网络中的ARP应答。解决方案可以从终端和交换机两个层面做。在eNSP实验里我重点配置了交换机的防御功能。华为S5700支持DHCP Snooping和动态ARP检测DAI。基本原理是DHCP Snooping建立了一张“IP-MAC-端口-VLAN”的安全绑定表然后DAI拦截所有ARP报文与绑定表进行比对只有匹配的ARP请求和ARP响应才允许通过。# 全局开启DHCP Snooping dhcp enable dhcp snooping enable # 在VLAN 20下使能DHCP Snooping vlan 20 dhcp snooping enable quit # 配置上行口为信任口 interface GigabitEthernet0/0/24 dhcp snooping trusted quit # 配置动态ARP检测 vlan 20 arp anti-attack check user-bind enable quit # 开启接口的ARP报文速率限制防止ARP风暴 interface GigabitEthernet0/0/2 arp rate-limit enable arp rate-limit 30 quit配置完成之后我再让PC-B发送伪造ARP响应PC-A的ARP表不再被篡改网络恢复正常。如果PC-B持续发送伪造ARP报文交换机会根据DAI策略丢弃这些报文并在日志中记录攻击源。这个实验做完之后我对“网络安全不是一个点而是一个面”这句话的理解深了很多。防火墙、ACL解决的是网络层的访问控制而二层安全问题必须靠交换机的防护机制来兜底。6.3 防御效果验证与抓包分析验证防御效果的方法很简单。第一步在防御配置前PC-A ping网关通执行arp -a看到网关MAC是攻击者的MAC。第二步在交换机上开启DAI功能后再次让PC-B发送伪造ARPPC-A的ARP缓存没有变化ping网关依然正常。第三步在交换机的接口视图下如果有日志输出提示丢弃了非法ARP报文说明防御机制精准命中。如果你想看更细的流量交互过程可以在PC-A和交换机之间点击eNSP的抓包按钮抓取ARP报文。正常ARP请求是广播ARP应答是单播被交换机拦截的非法ARP应答根本不会出现在PC-A的抓包结果里这是在eNSP里最直观的验证方式。实操心得模拟器里这一套和真机基本一致但真机上开启DAI之前一定得确认DHCP Snooping绑定表已经建立成功否则可能出现合法用户的ARP也被误杀。用静态绑定表的话得把所有终端IP和MAC都配进去工作量不小。7. 常见问题与排错速查7.1 eNSP设备启动失败怎么办eNSP的设备启动失败几乎每个使用者都会碰到。常见错误有40、41、43等。错误40一般是VirtualBox注册设备失败需要重新注册设备。错误41多为虚拟网卡被禁用或驱动异常可以去Windows的设备管理器里检查VirtualBox Host-Only Network是否启用。错误43多半是VirtualBox版本问题卸载重装官方配套版本即可。如果AR设备能启动但Console窗口打开后一直黑屏无反应可以先在任务管理器里结束掉所有eNSP和VirtualBox相关进程然后关闭杀毒软件重新打开eNSP。很多杀毒软件会把VirtualBox的虚拟网卡驱动或vbox服务当成风险程序拦掉导致设备无法与模拟器通信。7.2 配置不生效时从哪里查起我在做实验时有个习惯每做一步就验证一步。配置了接口IP就立刻display ip interface brief配置了路由就立刻display ip routing-table配置了策略就立刻用流量去测。这样一旦出错排查范围能缩到很小。如果遇到“配置了安全策略但流量不通”我执行display security-policy rule all。注意看规则顺序防火墙是自上而下匹配的前面的permit any any会吞掉后面所有规则。这也是我在防火墙实验里强调先清空默认策略的原因。7.3 抓包工具的正确使用姿势eNSP的抓包工具很好用但它不是所有接口都能抓。正确姿势是选中设备之后先点击“抓包”按钮再点击具体接口。启动抓包后该接口上流经的数据包会实时显示。我一般会配合Wireshark的过滤器使用比如只抓ARP包输入arp只抓HTTP流量输入http。如果不加过滤器接口流量多的时候数据会刷得飞快根本看不过来。8. 实验总结与进阶方向整套实验从ACL到防火墙从AAA到VLAN隔离再到ARP攻击防御基本上覆盖了网络安全入门阶段最重要的几个知识点。这些实验只看不做永远学不会哪里配置报错、哪里理解偏差只有在亲手敲命令和验证的时候才能暴露出来。我给想深入的同学一个建议eNSP跑通这些基础实验之后可以尝试更大的综合实验把防火墙、IDS、日志审计串联到一起模拟一次从外网扫描到内网入侵再到应急响应的完整过程。比如用外网Client扫描防火墙映射的DMZ端口尝试弱口令爆破Web服务然后再配置防火墙的防攻击策略阻断扫描行为。这类实验对理解的提升非常大。最后再分享一个小技巧每完成一个实验把拓扑、配置命令、验证截图、遇到的问题和解决过程记录下来。这不光是为了写文章更是帮你建立自己的排错知识库。我翻自己当初的记录时很多当时觉得无解的报错后来一看就能定位进步全在对细节的复盘里。