局域网的安全与防御

简介:

    提到安全攻击,往往会想到攻击来自于互联网,而内部的局域网安全问题被忽略。在企业局域网中也存在很多安全隐患,本篇博客介绍几种局域网内部的安全攻击与防御


常见的局域网攻击

1、MAC地址扩散攻击

    我们知道,交换机在转发数据帧时,会查询MAC地址表中该接口对应的源MAC地址条目,如果没有数据帧的源MAC地址,交换机将学习源MAC地址并与接口对应,添加到MAC地址表中,再根据目的MAC地址进行查找。如果目的MAC地址没找到,就会以广播的形式转发数据帧。而MAC地址扩散攻击就是利用交换机的这种特性

    攻击原理:每台交换机的MAC地址表空间是有限的,如果某主机发送大量的伪造源MAC地址数据帧,使得交换机MAC地址表溢出。这时,交换机在接收正常的数据帧,MAC地址表将找不到对应的条目,该数据帧会被转发,攻击者将得到正常的通信数据,如下图:

wKioL1nfOLfzeG5qAAC_w3XnNfc624.png

    使用MAC地址扩散攻击时,有个明显现象就是交换机CPU利用率偏高,容易被发现。使用“show processes cpu”命令可以查看设备的CPU利用率


2、ARP攻击与欺骗

(1)ARP攻击的原理

wKiom1nfP8SzAsn-AADvEdK8gyc681.png

● 攻击主机制造假的ARP应答,并发送给被攻击主机之外所有主机。ARP应答中包括攻击主机的IP地址和虚假的MAC地址

● 攻击主机制造假的ARP应答,并发送给被攻击主机。ARP应答中包括攻击主机之外所有主机的IP地址和虚假的MAC地址

    只要执行上边的一种攻击就可以实现被攻击主机与其他主机无法正常通信


(2)ARP欺骗的原理

wKiom1nfQZ_jxwH0AAD7SLXSiJs604.png

    ARP欺骗不是使网络无法正常通信,而是通过冒充网关或其他主机,从而控制流量或窃取机密信息



3、DHCP服务器欺骗与地址耗尽

(1)DHCP服务器欺骗:客户端将自己配置为DHCP服务器分发虚假的IP地址,或直接响应DHCP请求

(2)DHCP地址耗尽:客户端不断地冒充新客户机发送DHCP请求,请求服务器为自己分派IP地址,从而使服务器地址耗尽,而正常主机无法获得IP地址


4、IP地址欺骗

    客户端使用自己配置的IP地址冒充其他客户端或网络管理员,对其他主机、设备、服务器等进行非法操作.0




防御攻击的解决方案

方案1:交换机的端口安全配置

    Cisco交换机提供一种基于MAC地址控制端口访问权限的安全特性,对MAC地址进行流量限制、设定端口允许接入的主机数量,也可以手动在端口上设置MAC地址。只有绑定的MAC地址才能转发

    端口安全是一种网络接入的验证,只有符合设置规则的客户端才可以接入局域网,避免未授权的客户端接入网络,可实现以下功能:

● 基于MAC地址限制、允许客户端流量

● 避免MAC地址扩散攻击

● 避免MAC地址欺骗攻击


(1)启动交换机接口安全特性

    在接口模式下配置命令如下:

1
switch(config- if ) # switchport port-security

注意:启动安全特性的接口不能是动态(Dynamic)协商模式,必须是接入(Access)或干道(Trunk)模式


(2)配置允许访问的网络MAC地址

    限制允许访问网络的最大的MAC地址数和静态绑定MAC地址,命令如下:

1
2
switch(config- if ) # switchport port-security maximum {max-addr}        //max-addr默认为1,范围是1-8192
switch(config- if ) # switchport port-security mac-address {mac-addr}      //mac-addr为静态绑定的MAC地址,格式为X.X.X

 

(3)配置老化时间

    默认情况下,交换机不删除接口获得的MAC地址,如果接口的客户端经常变换,而旧MAC地址一直保留,可能导致新连接的客户端无法通信。可以配置老化时间,让交换机删除一段时间没有流量的MAC地址 ,配置命令如下:

1
2
switch(config- if ) # switchport port-security aging time {time}      //time范围是1-1440min,默认为0,不删除
switch(config- if ) # switchport port-security aging type {absolute | inactivity}

absolute表示老化时间到后,删除所有MAC地址并重新学习

inactivity表示一段时间(老化时间)没有流量,就将其MAC地址从地址表中删除

注意:静态绑定的MAC地址不受老化时间影响

    有些工作环境要求静态绑定的MAC地址也受老化时间影响,配置命令如下:

1
switch(config- if ) # switchport port-security aging static


(4)配置MAC地址违规后的策略

    当出现以下情况时,就出现MAC地址违规

● 最大安全数目的MAC地址表之外的一个新的MAC地址访问该端口

● 配置在其他端口安全的MAC地址试图访问这个端口

     当出现MAC地址违规是,有三种处理方法,配置命令如下:

1
switch(config- if ) # switchport port-security violation {protect | restrict | shutdown}

protect将违规的MAC地址的分组丢弃,但端口处于up状态。交换机不记录违规分组

restrict将违规的MAC地址的分组丢弃,但端口处于up状态。交换机记录违规分组

shutdown端口成为err-disabled状态,相当于关闭端口。


    在出现err-disabled状态时,默认不会自动恢复。恢复端口有两种方法:

手动恢复:先关闭端口(shutdown),在打开端口(no shutdown)

自动恢复:设置计时器,端口进入err-disabled状态时开始计时,计时器超过后,自动恢复。计时器配置命令如下:

1
2
switch(config) # errdisable recovery cause psecure-violation    //配置出现err-disabled状态的原因
switch(config) # errdisable recovery interval {time}         //time为30-86400,单位为s


(5)配置端口安全的Sticky(粘连)特性

    如果为每个端口配置静态绑定,工作量非常大,用端口安全Sticky特性,动态的将交换机学习的MAC地址转换为Sticky MAC地址,并加入运行配置中,自动形成了端口安全允许的静态MAC地址表项。保存配置,交换机重启将不会重新学习。配置命令如下:

1
switch(config) # switchport port-security mac-address  sticky

 

(6)查看和清除端口状态

1
2
3
4
switch # show port-security int f0/1         //查看启用端口安全的状态
switch # show interfaces status err-disabled      //查看处于err-disabled状态的端口摘要信息
switch # show port-security                 //查看端口安全的摘要信息
switch # clear port-security dynamic {address mac-addr | int f0/1}    //清除接口的MAC地址或全部端口缓存


案例:在交换机配置端口安全,命令如下:

1
2
3
4
5
6
7
8
switch(config) # int f0/1
switch(config- if ) # switchport mode access
switch(config- if ) # switchport access vlan 2
switch(config- if ) # switchport port-security         //启用端口安全
switch(config- if ) # switchport port-security mac-address 0025.1234.1258    //静态绑定MAC地址                
switch(config- if ) # switchport port-security aging time 1        //配置老化时间1min 
switch(config- if ) # switchport port-security aging type inactivity       //配置删除端口MAC的策略
switch(config- if ) # switchport port-security violation restrict        //配置出现违规时的策略

    在端口f0/1启用端口安全,允许最大MAC地址为1,并静态绑定MAC地址


查看启用端口安全的状态

1
2
3
4
5
6
7
8
9
10
11
12
13
switch # show port-security int f0/1
Port Security              : Enabled               // 端口安全启用
Port Status                : Secure-up             // 端口状态为up
Violation Mode             : Restrict              // 出现违规MAC地址采取的策略
Aging Time                 : 1 mins                // 老化时间
Aging Type                 : Inactivity            // 端口MAC地址删除策略
SecureStaticAddress Aging  : Disabled              // 是否允许端口删除静态绑定MAC地址
Maximum MAC Addresses      : 1                     // 最大MAC地址数量
Total MAC Addresses        : 1                     // 端口活跃MAC地址数(包括静态绑定MAC地址)
Configured MAC Addresses   : 1                     // 静态绑定的MAC地址数
Sticky MAC Addresses       : 0                     // 粘连的MAC地址数
Last Source Address:Vlan   : 0025.1234.1258:2      // 最新的源MAC地址及其所在的VLAN
Security Violation Count   : 0                     // 安全违规次数



方案2:DHCP监听

    DHCP监听(DHCP Snooping)是一种保护DHCP服务器的安全机制,可以通过过滤来着网络中的主机或其他设备的非信任DHCP报文,以保证客户端能够从正确的DHCP服务器获得IP地址,避免DHCP服务器欺骗和DHCP地址耗尽

    DHCP监听将交换机端口分为:

非信任端口:连接终端设备的端口。该端口客户端只能发送DHCP请求报文,丢弃来着该端口的其他所有DHCP报文

信任端口:连接合法的DHCP服务器或汇集端口

wKiom1ngWvKSJrXFAAD3xps9eHY882.png

    DHCP监听还可以限制客户端发送DHCP的请求速率,从而减缓DHCP资源耗尽攻击。Cisco交换机支持在每个VLAN上启用DHCP监听


DHCP监听的配置

(1)启用DHCP监听的命令如下:

1
switch(config) # ip dhcp snooping

    设置DHCP监听作用于哪个VLAN的命令如下:

1
switch(config) # ip dhcp snooping vlan number     //number为VLAN号,可以一次设多个VLAN,如2、3-5


(2)配置端口信任或非信任

    启用DHCP监听后,默认所有端口为非信任。若要配置端口为信任,配置命令如下:

1
switch(config- if ) # ip dhcp snooping trust


(3)配置预防DHCP耗尽攻击

    限制DHCP报文速率,减缓DHCP耗尽攻击,在非信任端口配置以下命令:

1
switch(config- if ) # ip dhcp snooping limit rate {rate}     //rate为报文速率,单位p/s,Cisco2960交换机1-2048p/s

    还可以启用核实MAC地址功能,避免虚假MAC地址请求IP地址,从而实现DHCP耗尽攻击,配置命令如下:

1
switch(config) # ip dhcp snooping verify mac-address

    

    当非信任端口的DHCP报文速率大于规定值,就会出现违规情况,端口将出现err-disabled状态。和上面MAC地址违规一样,也可以手动恢复,下面介绍下自动恢复,设置err-disabled计时器,命令如下:

1
2
switch(config) # errdisable recovery cause dhcp-rate-limit    //配置出现err-disabled状态的原因
switch(config) # errdisable recovery interval {time}         //time为30-86400,单位为s


(4)DHCP监听状态查询

1
2
3
switch # show ip dhcp snooping                 //查看当前DHCP监听状态及各端口情况
switch # show ip dhcp snooping binding          //查看当前DHCP监听表
switch # clear ip dhcp snooping binding         //清除DHCP监听表


案例:在交换机上启用DHCP监听,限制非信任端口DHCP报文速率为100p/s

wKiom1ngwJWQuq27AADCcDZTiI0658.png

1
2
3
4
5
6
7
8
9
10
11
switch(config) # ip dhcp snooping                 //启用DHCP监听
switch(config) # ip dhcp snooping vlan 1          //监听的VLAN 
switch(config) # int f0/21
switch(config- if ) # ip dhcp snooping trust 
switch(config- if ) # exit
switch(config) # int range f0/1 - 20
switch(config- if -range) # ip dhcp snooping limit rate 100
switch(config- if -range) # exit
switch(config) # int range f0/22 - 24
switch(config- if -range) # ip dhcp snooping limit rate 100
switch(config- if -range) # exit


    如果上面的DHCP服务器是一台路由器是,客户端可能无法获得IP地址,可以在其上面配置以下任意一台命令:

1
2
3
router(config- if ) # ip dhcp relay information trusted       //接收DHCP报文的接口
或者
router(config) # ip dhcp relay information trust-all        //全局模式,对所有接口生效


方案3:部署网络版防病毒软件

    网络版和单机版防病毒软件最大的不同在于可以通过控制中心管理网络中任意一台计算机,统一杀毒、升级病毒库等,实现全网管理。一般有服务器端和客户端组成,具有以下特点:

(1)可以远程安装或卸载客户端防病毒软件

(2)可以禁止用户自行卸载客户端防病毒软件

(3)可以全网范围统一制定、分发、执行防病毒策略

(4)可以远程监控客户端系统健康状态

(5)提供远程报警手段,自动将病毒信息发送给网络管理员

(6)允许客户端自定义防病毒策略











本文转自 杨书凡 51CTO博客,原文链接:http://blog.51cto.com/yangshufan/1972253,如需转载请自行联系原作者
目录
相关文章
|
7月前
|
前端开发 Java API
2025 年 Java 全栈从环境搭建到项目上线实操全流程指南:Java 全栈最新实操指南(2025 版)
本指南涵盖2025年Java全栈开发核心技术,从JDK 21环境搭建、Spring Boot 3.3实战、React前端集成到Docker容器化部署,结合最新特性与实操流程,助力构建高效企业级应用。
2104 1
|
7月前
|
人工智能 自然语言处理 JavaScript
用 LLM 辅助性能测试报告生成
性能测试报告通常包含测试概述、方案说明、结果分析、问题定位、优化建议及上线评估等内容。报告编写面临数据分析复杂、撰写耗时、经验依赖等问题。引入大型语言模型(LLM),可实现报告智能生成,提升效率与专业度。LLM具备自然语言生成、数据归纳、专家知识迁移等能力,可适配多格式、多语言输出。通过构建LLM辅助的报告生成引擎,结合Prompt设计,可高效输出结构化报告。实践表明,LLM在测试结论总结、瓶颈分析与优化建议方面表现优异,为性能测试智能化升级提供有力支撑。
492 0
|
PyTorch 算法框架/工具 芯片
新手入门:DGL在昇腾上的安装问题
本文介绍了在aarch64架构和Python 3.10环境下安装DGL(Deep Graph Library)的过程。首先通过`uname -a`确认硬件架构,接着使用`python --version`检查Python版本。为确保兼容性,从指定链接下载适合的whl包或通过pip安装dgl。过程中遇到了torchdata版本不兼容的问题,通过降级torchdata至0.7.1版本解决。此外,针对NPU芯片适配,重新安装了与CANN 8.0.RC2兼容的torch和torch_npu组件。最终成功导入dgl包并准备进行模型训练验证。
|
人工智能 自然语言处理 机器人
AI心语:智能时代的情感纽带
本文旨在探索人工智能在情感计算领域的应用,以及这些技术如何帮助我们更好地理解和模拟人类情感。通过分析当前的技术进展和面临的伦理挑战,文章为读者提供了一个关于AI与情感结合世界的全面视角。
1598 6
|
存储 缓存 数据管理
Django后端架构开发:后台管理与会话技术详解
Django后端架构开发:后台管理与会话技术详解
392 0
|
JavaScript 前端开发 Docker
前端的全栈之路Meteor篇(一):开发环境的搭建 -全局安装或使用容器镜像
本文介绍了如何搭建 Meteor 开发环境,包括全局安装 Meteor 工具和使用 Docker 镜像两种方法,以及创建和运行一个简单的 Meteor 项目的基本步骤。 Meteor 是一个全栈 JavaScript 框架,适用于构建实时 Web 应用程序。文章还提供了遇到问题时的解决建议和调试技巧。
909 3
|
机器学习/深度学习 监控 算法
深度学习之手术中的增强现实导航
基于深度学习的手术中的增强现实(AR)导航技术是一种结合了先进的计算机视觉算法、深度学习模型与增强现实技术的创新应用。其主要目的是为外科手术提供实时的、精确的手术指导,帮助医生在复杂的手术过程中更好地理解患者的解剖结构,提升手术的精准性和安全性。
328 1
|
人工智能 UED
提升5.69倍,高效RAG上下文压缩方法COCOM
【8月更文挑战第7天】在AI领域,大型语言模型(LLMs)展现出了强大的计算与知识处理能力,但也面临着处理复杂任务时因上下文信息激增而导致生成时间延长的问题。为解决这一挑战,研究人员开发了COCOM上下文压缩方法,该方法通过将冗长的上下文信息压缩成简洁的上下文嵌入,有效提升了RAG系统的解码速度。实验表明,COCOM能在不牺牲答案质量的前提下,将解码时间最多提升5.69倍,极大改善了用户体验。然而,该方法也可能存在信息损失的风险,且在特定任务上的效果可能受限,因此在实际应用中需综合考量压缩率与答案质量的平衡。论文详情参见:https://arxiv.org/abs/2407.09252。
640 3
|
开发框架 前端开发 JavaScript
循序渐进VUE+Element 前端应用开发(8)--- 树列表组件的使用
循序渐进VUE+Element 前端应用开发(8)--- 树列表组件的使用
|
存储 运维 网络协议
Linux SSHD服务安装与维护详解(一)——SSHD安装、启动与密钥认证实现
Linux SSHD服务安装与维护详解(一)——SSHD安装、启动与密钥认证实现
859 2

热门文章

最新文章