首页 / 资讯中心 / 文章详情

ARP欺骗与DHCP攻击防御:接入层安全组合配置实战

ARP欺骗与DHCP攻击防御:接入层安全组合配置实战 ★ FEATURED ARTICLE
简介这份HCIA-Security网络安全学习笔记面向备考华为认证安全方向的学习者与初入网络安全领域的从业者以PDF形式系统梳理课程要点与实验操作帮助读者建立从协议原理到攻防实践的知识框架。压缩包内共1个PDF文件约19.3MB内容涵盖USG模拟器环境准备与配置清空、OSI与TCP/IP模型分层解析、IPv4报文各字段含义、各层协议对应关系及攻击手段梳理并延伸至Kali踩点扫描中nmap与Zenmap的用法、ARP协议原理与欺骗攻击复现、arpspoof断网实验及DHCP Snooping、IP源防护、DAI等防御配置思路。笔记以实验步骤与命令记录为主配合原理讲解便于对照模拟器动手验证、复盘关键配置并理解攻击与防御的对应逻辑。目前已有569人学习适合需要系统梳理HCIA-Security考点、补充实操细节的读者参考使用。1. ARP 为什么“谁给响应都信”从一条广播请求说起局域网里最容易被忽视的一件事一台主机要发数据给同网段的另一台机器它手里只有对方的 IP没有 MAC于是它会在链路上喊一嗓子“谁是 192.168.6.1”谁答应它就信谁。这个“喊一嗓子”就是 ARP 请求目标 MAC 填全 F交换机看到全 F 就泛洪整个广播域都收到。问题在于ARP 协议本身没有任何身份校验机制响应报文是单播回来的收到就覆盖本地缓存后来的响应优先。这意味着任何一台机器只要主动发一条伪造的 ARP 响应就能把别人的缓存表改掉。HCIA-Security 网络安全学习笔记里把这句话总结得很直白ARP 协议太傻谁给的响应它都相信。搞懂这个“傻”字背后的报文结构和缓存更新逻辑才能理解后面 DHCP Snooping、DAI、IP 源防护这一整套接入层防御为什么必须组合使用而不是单点配置就能高枕无忧。2. 从 OSI 到 TCP/IP分层模型不是背诵题是攻击面地图2.1 七层模型为什么被淘汰但报文封装关系还得靠它理解笔记里明确写了 OSI 目前已经被淘汰TCP/IP 模型已经取代它。但淘汰的是“七层作为标准体系”这件事不是分层思想本身。真正在抓包和排障时用的是封装关系二层以太网头里的 type 字段决定把载荷交给谁0x0800 交给 IPv40x0806 交给 ARP三层 IP 头里的 protocol 字段决定交给谁6 是 TCP17 是 UDP1 是 ICMP四层端口再决定交给哪个应用80 是 HTTP21 是 FTP23 是 Telnet。这条链路是逐层解封装的依据也是攻击者逐层找突破口的地图。我一般会这么理解分层模型的价值不在于你能背出七层名字而在于你知道每一层都有独立的标识字段而这些字段恰恰是可以被伪造的。二层的 MAC 可以改三层的源 IP 可以伪造四层的端口可以随便填。安全设备要做的就是在某一层建立“这个字段应该长什么样”的基线然后比对。DHCP Snooping 建立的是“IP-MAC-端口”的绑定表DAI 拿 ARP 报文去比这张表IP 源防护拿 IP 报文去比这张表本质都是同一套思路在不同层的落地。2.2 IPv4 报文头里哪些字段是防御的抓手笔记对 IPv4 报头的拆解很细其中几个字段和安全直接相关。TTL 现在用来记录传输跳数报文每经过一台三层设备减一减到 0 就丢弃这是防止三层路由环路的手段。攻击者做扫描时常用小 TTL 探测路径防御方也可以利用 TTL 异常识别伪造源地址的报文。identification、flags、fragment offset 三个字段配合完成分片和重组flags 标记最后一片fragment offset 保证重组顺序。分片攻击就是利用重组逻辑做文章比如重叠分片让不同设备对同一份数据产生不同解读。protocol 字段标识上层协议这个字段在 ACL 和防火墙策略里是匹配条件之一。header checksum 只校验 IPv4 报头在传输过程中是否损坏不校验载荷所以载荷完整性要靠上层协议自己保证。options 是可选的高级功能padding 在 options 不足 32 bit 时补 0。这些字段单独看都是协议细节放在安全语境下就是“哪些字段可被篡改、哪些字段可被用来做匹配”的问题。笔记里把“各层协议之间的关系”和“各个层次的攻击手段”并列用意就在这里你理解了封装关系才知道每一层的攻击手段为什么能成立。2.3 用 nmap 做踩点扫描行为本身就在暴露分层信息笔记里提到用 nmap -sP 对 192.168.6.1-120 做 ping 扫描3 到 5 秒完成Zenmap 是 nmap 的图形界面版本用 Python 编写跨平台运行。intense scan 是细致扫描comprehensive 是综合扫描20 个地址大概要 5 分钟。这些参数背后对应的是不同的探测报文组合ping 扫描发 ICMP端口扫描发 TCP SYN主机发现还可能用 ARP 请求和 NetBIOS 查询。每一种报文都对应前面说的某一层字段。# 对指定网段做 ping 扫描只做主机发现不扫端口 nmap -sP 192.168.6.1-120 # 查看帮助确认当前版本支持的扫描类型 man nmap-sP 的含义是只做 ping 扫描不发端口探测包速度快但信息少。实际做资产梳理时通常会先用 -sP 圈出存活主机再对存活主机做端口扫描。这里要注意扫描行为在目标侧会留下大量 ARP 请求和 ICMP 记录如果目标网段部署了 ARP 限速或 ICMP 限速扫描结果会失真。笔记里还提到 ScanPort 和 X-Scan 这类老工具前者只能在 XP 里跑后者能扫系统版本、漏洞、开放端口和服务。工具会过时但“用报文探测分层信息”这个思路不会过时。3. ARP 欺骗为什么能两头哄骗缓存覆盖机制与流量转发3.1 ARP 请求与响应广播出去单播回来ARP 的过程可以拆成两个报文。PC1 发请求包源 MAC 是自己的目标 MAC 是全 F这是广播交换机见到全 F 就群发。PC2 收到后回响应包源 MAC 是自己的目标 MAC 是 PC1 的这是单播。PC1 收到响应后把 IP-MAC 对应关系写进 ARP 缓存标记为 dynamic 动态缓存。用 arp -a 可以查看缓存arp -d * 可以清空缓存表arp -s 可以做静态绑定比如 arp -s 192.168.6.20 1c-87-2c-61-ff-25。关键点在于缓存更新规则后来的 ARP 响应会直接覆盖当前缓存不管之前是不是已经有一条记录。这个设计在正常网络里是为了适应 IP 和 MAC 的变化比如换了网卡、做了地址迁移但在攻击场景下就成了致命弱点。攻击者不需要等请求主动发响应就行收到响应的主机不会去验证“我到底有没有发过这个请求”。3.2 arpspoof 的双向欺骗为什么用户感觉不到断网笔记里的攻击实验很典型攻击机在 6.50受害者 win7 在 6.116网关在 6.1。攻击分两条命令第一条 arpspoof -i eth0 -t 192.168.6.116 192.168.6.1告诉受害者“6.1 的 MAC 是攻击机的 MAC”第二条 arpspoof -i eth0 -t 192.168.6.1 192.168.6.116告诉网关“6.116 的 MAC 是攻击机的 MAC”。两条命令合起来就是两头哄骗受害者和网关都以为对方在攻击机的位置。# 欺骗受害者声称网关 6.1 的 MAC 是攻击机的 MAC arpspoof -i eth0 -t 192.168.6.116 192.168.6.1 # 欺骗网关声称受害者 6.116 的 MAC 是攻击机的 MAC arpspoof -i eth0 -t 192.168.6.1 192.168.6.116 # 开启内核路由转发让流量经过攻击机后还能正常转发出去 echo 1 /proc/sys/net/ipv4/ip_forward-i 指定网卡-t 指定目标后面跟的是要冒充的地址。第三条命令是整场攻击能“隐身”的关键开启 ip_forward 之后攻击机收到受害者的流量会转发给网关网关回来的流量再转发给受害者用户上网不断只是所有流量都从攻击机过了一遍。笔记里写得很清楚攻击时通不攻击时也通用户网不中断。正因为不中断用户很难察觉而攻击者可以查看用户隐私、限速、篡改报文、做钓鱼页面。注意ARP 欺骗利用的是 ARP 响应报文不是请求报文。防御配置要针对响应做检测而不是只盯着请求。3.3 防御组合拳DHCP Snooping、DAI、IP 源防护各管一段单靠一个功能防不住 ARP 欺骗笔记里给的是一套组合。DHCP Snooping 负责建立信任边界全局 dhcp snooping enablevlan 1 下 dhcp snooping enable然后把上联口设为 dhcp snooping trusted默认所有接口都是非信任口。非信任口上收到的 DHCP 响应会被丢弃这样攻击者就没法冒充 DHCP 服务器下发假网关。DAI 动态 ARP 检测负责拿 ARP 报文去比对绑定表。接口下 arp anti-attack check user-bind enable 开启检测arp anti-attack check user-bind alarm enable 开启丢弃告警alarm threshold 配置告警阈值默认 100。绑定表从哪来如果启用了 DHCP Snooping表项由 DHCP 分配过程自动生成如果是静态分配 IP 的环境就用 user-bind static 手工建比如 user-bind static ip-address 192.168.31.7 mac-address 0021-cccf-1d28 interface Ethernet0/0/2再在接口下 ip source check user-bind enable。这样接在 e0/0/2 口的 PC 只能是 31.7、MAC 是 1d28 才能通过不匹配直接丢弃。ARP 限速是第三层保险。arp speed-limit source-mac maximum 按源 MAC 限速arp speed-limit source-ip maximum 按源 IP 限速arp anti-attack rate-limit enable 使能限速功能缺省是未使能。限速防的是泛洪型攻击比如攻击者高速发送大量 ARP 报文把交换机 CPU 打满。这三层配合的逻辑是Snooping 管信任边界DAI 管报文合法性限速管报文速率缺一层都会留下缺口。4. DHCP 为什么既是便利也是入口四步交互与两类攻击4.1 DHCP 分配流程discover 广播出去服务器按 MAC 区分用户DHCP 给用户自动分配 IP 地址、网关、DNS 等参数能提供 DHCP 功能的设备包括路由器、家用路由器、防火墙、三层交换机和服务器。用户上网至少要满足三个参数IP 地址、网关、DNS。笔记里的配置很完整路由器上 dhcp enable 启用功能接口下 ip address 192.168.31.1 24 配地址dhcp select global 指定从全局地址池分配然后 ip pool qq 创建地址池gateway-list 配网关network 配网段和掩码dns-list 配 DNS。dis ip pool name aa used 可以查看分配记录。第一个报文是 DHCP discover源地址 0.0.0.0目标地址 255.255.255.255广播。用户请求地址时把自己的 MAC 封装在 DHCP 报文里服务器基于不同 MAC 区分不同计算机进而分配不同 IP。这个设计本身没问题问题在于服务器怎么知道请求是真的来自那台机器以及接入层怎么知道响应是真的来自合法服务器。4.2 DHCP 冒充攻击假服务器下发假网关攻击者在接入层跑一个 DHCP 服务抢在真服务器之前响应 discover给受害者下发一个假网关这个假网关指向攻击机自己。受害者拿到地址后所有出网流量都先到攻击机后面就是和 ARP 欺骗一样的套路可以监听、篡改、钓鱼。防御就是前面说的 DHCP Snooping上联口设为 trusted接入口保持默认非信任非信任口上收到的 DHCP 响应报文直接丢弃。这样假服务器的响应进不来受害者只能拿到真服务器分配的地址。配置顺序有讲究先全局 dhcp snooping enable再进 vlan 视图 dhcp snooping enable最后进上联接口 dhcp snooping trusted。如果只开全局不开 vlan功能不生效如果忘了把上联口设为 trusted真服务器的响应也会被丢掉用户直接拿不到地址。这是实际配置里最容易翻车的地方。4.3 DHCP 耗尽攻击把地址池打空让正常用户拿不到地址笔记里的实验用 kali 伪装各种 DHCP 请求报文把地址池耗尽受害者无法获取 IP。实验环境是 win7 虚机里跑模拟器用路由器搭 DHCP 服务kali 通过桥接接到交换机上执行 pig.py eth0 发起攻击。路由器侧配置 ip pool aagateway-list 192.168.6.254network 192.168.6.0 mask 255.255.255.0dns-list 配两个地址接口配 192.168.6.254 并 dhcp select global。耗尽攻击的原理是 DHCP 服务器按 MAC 分配地址攻击者伪造大量不同 MAC 的请求每个请求占一个地址池子很快见底。防御手段是端口下做 DHCP 请求限速限制单位时间内从某个端口进来的 DHCP 请求个数。笔记里还提到 yersinia 这个底层协议入侵工具能伪装 STP、CDP、DTP、DHCP、HSRP、802.1Q、802.1X、ISL、VTP 等多种协议的报文启动方式是 yersinia -G 进图形界面。这类工具的存在说明接入层的攻击面远不止 ARP 和 DHCP生成树、冗余网关协议都可能被针对防御思路是一致的在接入端口建立基线限制异常报文速率把信任边界划清楚。5. 避坑与排查接入层安全配置里最容易翻车的几件事5.1 开了 DHCP Snooping 但用户拿不到地址现象是配置完 dhcp snooping enable 之后接在接入端口的 PC 一直拿不到 IP。原因通常是上联口没有设为 trustedDHCP 响应从上行方向回来时被非信任口规则丢弃。解决是进上联接口执行 dhcp snooping trusted确认 display dhcp snooping 里该接口的信任状态是 trusted。排查时先看全局和 vlan 两级开关是否都开了再看接口信任状态最后看地址池有没有可用地址。5.2 DAI 开了但绑定表是空的现象是 arp anti-attack check user-bind enable 配了但 ARP 报文还是能通过或者正常用户的 ARP 反而被丢。原因是绑定表没有数据来源如果环境是静态分配 IP没有 DHCP Snooping 自动生成表项就必须用 user-bind static 手工建否则 DAI 比对时找不到对应记录行为取决于设备默认策略。解决是先确认地址分配方式静态环境补静态绑定动态环境确认 Snooping 是否正常工作、表项是否生成。display dhcp snooping user-bind 可以看当前绑定表。5.3 ARP 限速配了但攻击流量没降下来现象是 arp speed-limit source-mac maximum 配了阈值攻击时交换机 CPU 还是被打高。原因是只配了限速值没使能限速功能arp anti-attack rate-limit enable 缺省是关闭的必须显式打开。另外要确认限速维度选对了按源 MAC 限速和按源 IP 限速针对的攻击形态不同伪造 MAC 的攻击按 MAC 限速有效伪造 IP 的攻击要按 IP 限速。解决是补上使能命令必要时两个维度都配再开告警 arp anti-attack rate-limit alarm enable 观察丢弃情况。5.4 清空配置时把不该删的删了笔记里提到清空配置的操作是 reset saved-configuration删除除拓扑以外的文件夹。实际排查时常见的问题是清完之后设备起不来或者拓扑丢失原因是把启动文件和拓扑文件一起删了。解决是清空之前先确认哪些文件是拓扑依赖只删配置文件不删系统文件和拓扑目录清完重启前用 dir 确认关键文件还在。5.5 模拟器环境里攻击实验复现不了现象是照着笔记配了 arpspoof 和 ip_forward但受害者就是断网或者攻击不生效。原因通常是模拟器的网络桥接方式不对笔记里提到双桥接和云桥接桥接没配对会导致攻击机收不到受害者的流量或者转发不回去。解决是检查虚拟网卡和物理网卡的桥接关系确认攻击机能 ping 通受害者和网关再确认 ip_forward 的值确实是 1cat /proc/sys/net/ipv4/ip_forward 看一眼就知道。6. 防御为什么必须组合而不是单点从信任边界到报文基线的设计取舍接入层安全这套机制的核心取舍在于协议本身不提供认证防御只能在设备侧补。ARP 没有认证所以要用 DAI 拿绑定表去比对DHCP 没有源认证所以要用 Snooping 划信任边界报文速率没有天然上限所以要用限速兜底。这三个手段各自解决一段问题但都依赖同一个前提绑定表是可信的。绑定表可信的前提又是 DHCP Snooping 正常工作或者静态绑定配置准确。这条依赖链断一环后面的检测就失去基准。防御手段解决的问题依赖前提失效后果DHCP Snooping假 DHCP 服务器、信任边界上联口正确设为 trusted用户拿不到地址或假网关生效DAIARP 响应伪造绑定表有准确记录正常 ARP 被误丢或伪造 ARP 放行IP 源防护源 IP 伪造接口绑定关系准确伪造源 IP 报文通过ARP 限速ARP 泛洪限速功能已使能CPU 被打高业务中断从设计动机看这套组合的思路是“先建立可信基线再做报文比对最后用速率限制兜住异常”。它不追求在协议层修复 ARP 的缺陷因为那需要改协议、改终端成本不可接受它选择在网络设备上做集中管控代价是配置复杂度和维护成本。实际部署时我一般会先把 DHCP Snooping 和绑定表跑稳确认表项准确再开 DAI 和 IP 源防护最后加限速。顺序反了排查起来就是一团乱麻因为分不清是绑定表错了还是检测规则错了。验证方法也很直接配完之后用攻击工具在接入端口复现一次看 DAI 的丢弃计数有没有涨看告警有没有触发看正常用户的业务有没有受影响。笔记里那套 arpspoof 双向欺骗加 ip_forward 的实验反过来就是最好的验证脚本。从那以后我每次配接入层安全都强制先确认绑定表再开检测宁可多花十分钟看 display 输出也不愿意在用户报障时去猜是哪一层出了问题。希望帮到你。本文还有配套的精品资源点击获取
阅读完成 · 觉得有帮助?
咨询建站