ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

计算机网络常见安全攻击与防范技术:从ARP欺骗到SQL注入的复现与防御

计算机网络常见安全攻击与防范技术:从ARP欺骗到SQL注入的复现与防御 简介这份文档面向计算机网络安全初学者与运维人员系统梳理了网络中常见的安全攻击类型及其防范思路帮助读者建立从攻击原理到防护措施的完整认知框架。内容围绕拒绝服务型攻击、弱口令攻击等典型威胁展开结合TCP/IP协议漏洞与系统缺陷分析攻击者的常用手法并给出针对性的主动防护建议适合课堂教学、自学入门或安全知识查漏补缺。资源包内仅含1个docx文档压缩后约10KB体积轻便便于随时查阅与打印。目前已有115人学习说明该主题具备一定的实用参考价值。读者可从中获得常见攻击的分类脉络、攻击方法的具体描述以及对应的防范措施要点为后续深入学习网络安全打下基础。1. 从一份 docx 说起计算机网络里那些真实存在的攻击面很多人第一次接触「计算机网络中常见安全攻击与防范技术」是在期末复习或者课程设计阶段手里攥着一份 docx 提纲里面列着 ARP 欺骗、SYN Flood、DDoS、SQL 注入这些名词背完就忘。但如果你真的在机房抓过一次包看过 ARP 缓存被污染后网关 MAC 变成攻击者主机的那一刻感受完全不一样——那不是考点那是真实发生在局域网里的攻击。这篇笔记不打算复述教材目录而是把这份 docx 标题背后的东西拆开计算机网络里到底有哪些常见攻击、它们发生在哪一层、用什么工具能复现、防御手段怎么落地。适合两类人一类是正在做网络安全课程设计、需要动手复现攻击与防范的学生另一类是刚入行的运维或后端想搞清楚自己维护的网络到底暴露在哪些风险下。核心词「计算机网络」「安全攻击」「防范技术」会贯穿始终但重点永远落在「怎么做」和「坑在哪」。2. 先分清攻击发生在哪一层OSI 模型不是背诵题2.1 按层次归类攻击比按名字背更有效教材里常见攻击动辄列二三十种背下来容易混。我一般按 OSI 层次归类因为防御手段天然跟着层次走物理层、数据链路层、网络层、传输层、应用层每层的攻击手法和防范工具完全不同。数据链路层的 ARP 欺骗、MAC 泛洪网络层的 IP 欺骗、ICMP 重定向传输层的 SYN Flood、UDP Flood应用层的 SQL 注入、XSS、DNS 劫持各自有各自的战场。这样归类的好处是当你拿到一份「常见安全攻击与防范技术」的提纲时能立刻判断每个攻击点该配什么防御ARP 欺骗对应动态 ARP 检测和端口安全SYN Flood 对应 SYN Cookie 和限速SQL 注入对应参数化查询和 WAF。层次清楚了防范技术就不会写成「加强安全意识」这种废话。2.2 用一张表把攻击、层次、工具、防御对齐下面这张表是我做课程设计时常用的对照表把最常见的几类攻击和它们的落地工具、防御手段对齐方便你直接抄进实验报告或者运维手册。攻击类型所在层次复现工具常见做法防御手段ARP 欺骗数据链路层arpspoof / Scapy动态 ARP 检测、静态绑定、端口安全MAC 泛洪数据链路层macof端口安全、限制 MAC 数量SYN Flood传输层hping3SYN Cookie、连接限速、防火墙UDP Flood传输层hping3 / 自写脚本限速、流量清洗DNS 劫持应用层本地 hosts 篡改 / 伪造响应DNSSEC、可信 DNS、HTTPSSQL 注入应用层sqlmap参数化查询、WAF、最小权限XSS应用层手工构造 / BeEF输出编码、CSP、输入过滤这张表的价值在于它把「安全攻击」和「防范技术」从两个孤立的名词变成了一一对应的关系。你做实验时每复现一个攻击就立刻能对应到至少一种防御手段报告写起来有逻辑答辩时也扛得住追问。2.3 实验环境怎么搭三台虚拟机就够复现这些攻击不需要复杂环境。我一般用三台虚拟机一台攻击机Kali Linux一台靶机Ubuntu Server 或 Metasploitable一台网关/受害者可以是另一台 Ubuntu。三台都设为桥接或 NAT 模式确保在同一网段。如果你只是做 ARP 欺骗实验两台就够攻击机和受害者。# 查看当前网卡和网段确认三台机器在同一网段 ip addr show # 输出示例inet 192.168.1.10/24说明网段是 192.168.1.0/24 # 在攻击机上开启 IP 转发否则 ARP 欺骗后受害者断网 echo 1 /proc/sys/net/ipv4/ip_forward # 查看 ARP 缓存表记录网关的 MAC 地址 arp -a这段命令的逻辑是先确认网络拓扑再开启 IP 转发让攻击机成为「中间人」而不是「断网器」最后记录正常 ARP 缓存作为对照。参数上ip_forward设为 1 是 ARP 欺骗实验的关键很多人第一次做实验发现受害者直接断网就是因为忘了开转发。arp -a的输出要截图保存后面和欺骗后的结果对比实验报告才有说服力。提示实验环境一定要用虚拟机或隔离网络不要在真实办公网里跑 arpspoof 或 hping3否则可能触发交换机端口安全甚至影响同事上网。3. 数据链路层攻击复现ARP 欺骗与 MAC 泛洪3.1 ARP 欺骗的原理与最小复现命令ARP 协议的设计缺陷在于它无条件信任响应。攻击机只要持续向受害者发送「网关 IP 对应我的 MAC」的伪造 ARP 响应受害者的 ARP 缓存就会被污染所有发往网关的流量都会经过攻击机。这就是典型的中间人攻击。复现步骤很直接。在 Kali 攻击机上执行# 安装 dsniff 工具包包含 arpspoof apt-get install dsniff -y # 欺骗受害者告诉 192.168.1.20网关 192.168.1.1 的 MAC 是攻击机的 MAC arpspoof -i eth0 -t 192.168.1.20 192.168.1.1 # 另开一个终端欺骗网关告诉 192.168.1.1受害者 192.168.1.20 的 MAC 是攻击机的 MAC arpspoof -i eth0 -t 192.168.1.1 192.168.1.20两条命令要同时运行形成双向欺骗。-i eth0指定网卡-t指定目标第一个 IP 是受害者第二个 IP 是伪装对象。执行后在受害者机器上arp -a会看到网关的 MAC 变成了攻击机的 MAC。此时攻击机再开driftnet或tcpdump就能截获受害者的 HTTP 流量。参数说明-i后面跟的是你的网卡名用ip addr确认-t可以只写一个目标但双向欺骗才能完整截获。如果实验中发现受害者无法上网先检查ip_forward是否开启再检查防火墙是否拦截了转发流量。3.2 MAC 泛洪让交换机「失忆」的攻击交换机靠 MAC 地址表转发帧表的大小有限。MAC 泛洪就是攻击机发送大量源 MAC 随机的帧把交换机的 MAC 表填满。表满之后交换机对未知单播帧的处理方式是泛洪——发给所有端口。攻击机再接一个抓包工具就能看到本不该发给它的流量。# 使用 macof 工具发送大量随机源 MAC 的帧 macof -i eth0 -n 10000 # -n 指定发送数量10000 条通常足以填满低端交换机的 MAC 表macof是 dsniff 工具包里的命令-i指定网卡-n指定发送帧数。执行后在交换机上查看 MAC 地址表show mac address-table会看到大量随机 MAC。防御手段是端口安全在交换机接口上限制学习到的 MAC 数量超过就触发违规动作。# 在 Cisco 交换机接口上配置端口安全 interface FastEthernet0/1 switchport mode access switchport port-security switchport port-security maximum 2 switchport port-security violation shutdown这段配置的含义是该端口最多学习 2 个 MAC 地址超过就关闭端口。violation shutdown是最严格的策略也可以设为restrict只告警不关闭。参数maximum要根据实际接入设备数量调整接打印机的端口设 1 就够接小交换机的端口要设大一些。3.3 数据链路层防御的落地检查清单防御不是配一条命令就完事要形成检查习惯。我一般按这个顺序排查先看交换机是否开启了 DHCP Snooping 和动态 ARP 检测DAI再看接入端口是否配置了端口安全最后检查是否有静态 ARP 绑定用于关键服务器。DHCP Snooping 能防止伪造 DHCP 服务器DAI 能根据 DHCP Snooping 的绑定表丢弃非法 ARP 响应两者配合是数据链路层最有效的防线。如果你在虚拟机环境做实验交换机功能可能由 Open vSwitch 或 Linux Bridge 模拟端口安全配置方式不同。Linux Bridge 可以用 ebtables 限制 MACOpen vSwitch 有port-security相关命令。实验报告里要写清楚你用的是哪种虚拟交换机否则防御配置无法复现。4. 传输层与应用层攻击从 SYN Flood 到 SQL 注入4.1 SYN Flood 复现与 SYN Cookie 防御TCP 三次握手的缺陷在于服务器收到 SYN 后要分配资源等待 ACK。攻击机发送大量伪造源 IP 的 SYN 包服务器资源被耗尽正常用户无法连接。这就是 SYN Flood。# 使用 hping3 发起 SYN Flood hping3 -S -p 80 --flood --rand-source 192.168.1.30 # -S 表示发送 SYN 包-p 指定目标端口--flood 全速发送 # --rand-source 随机伪造源 IP增加追踪难度在靶机上用netstat -an | grep SYN_RECV | wc -l能看到大量半连接。防御手段是开启 SYN Cookie# 临时开启 SYN Cookie echo 1 /proc/sys/net/ipv4/tcp_syncookies # 永久生效写入 /etc/sysctl.conf net.ipv4.tcp_syncookies 1 net.ipv4.tcp_max_syn_backlog 2048 net.ipv4.tcp_synack_retries 2tcp_syncookies设为 1 后服务器在 SYN 队列满时不再分配完整资源而是用加密 Cookie 验证 ACK。tcp_max_syn_backlog调整半连接队列大小tcp_synack_retries减少重试次数加快回收。这三个参数要一起调只开 Cookie 不改队列高并发下仍可能丢包。4.2 SQL 注入的复现与参数化查询防御SQL 注入的根源是用户输入被拼接进 SQL 语句。用一个简单的 PHP 登录页面举例// 有漏洞的写法直接拼接用户输入 $username $_POST[username]; $password $_POST[password]; $sql SELECT * FROM users WHERE username$username AND password$password; $result mysqli_query($conn, $sql);攻击者在用户名输入 OR 11SQL 变成SELECT * FROM users WHERE username OR 11 AND password...条件恒真直接登录。用 sqlmap 可以自动化检测# 检测 URL 是否存在 SQL 注入 sqlmap -u http://192.168.1.30/login.php?usernametestpasswordtest --batch # 如果存在注入尝试获取数据库名 sqlmap -u http://192.168.1.30/login.php?usernametestpasswordtest --dbs防御的核心是参数化查询把用户输入当作数据而不是 SQL 代码// 参数化查询写法 $stmt $conn-prepare(SELECT * FROM users WHERE username? AND password?); $stmt-bind_param(ss, $username, $password); $stmt-execute(); $result $stmt-get_result();prepare先编译 SQL 模板bind_param再绑定参数数据库不会把参数内容当作 SQL 语法解析。ss表示两个参数都是字符串类型。这是防御 SQL 注入最可靠的手段比手动转义更安全因为转义容易漏掉特殊字符。4.3 应用层防御的边界WAF 不是万能药很多人以为装了 WAF 就高枕无忧实际上 WAF 只能拦截已知模式编码绕过、分块传输、注释混淆都能绕过。我见过用/*!50000SELECT*/绕过规则库的案例。WAF 应该作为纵深防御的一层而不是唯一防线。真正的底线是代码层面的参数化查询、最小权限数据库账号、输出编码。数据库账号只给必要的 SELECT/INSERT 权限即使被注入也拿不到敏感表。注意做 SQL 注入实验时靶机数据库要单独部署不要用生产库。实验结束后及时关闭靶机或恢复快照避免被同网段其他机器扫描到。5. 避坑与排查实验和防御落地时最容易翻车的 5 个点5.1 现象ARP 欺骗后受害者直接断网抓不到包原因攻击机没有开启 IP 转发或者防火墙的 FORWARD 链默认 DROP。数据包到了攻击机但转发不出去受害者表现为断网而不是被中间人。解决echo 1 /proc/sys/net/ipv4/ip_forward然后检查iptables -L FORWARD确保没有 DROP 规则。如果用的是 firewalldfirewall-cmd --add-masquerade开启伪装。5.2 现象SYN Flood 实验打不瘫靶机netstat 看不到 SYN_RECV原因靶机已经开启了 SYN Cookie或者 hping3 的源 IP 没有随机化被中间设备过滤。另外虚拟机网卡的性能限制也会导致攻击流量上不去。解决先cat /proc/sys/net/ipv4/tcp_syncookies确认是否为 0实验时临时关闭。hping3 加--rand-source参数。如果还是不行检查虚拟交换机是否做了流量限制VirtualBox 的「混杂模式」要设为「全部允许」。5.3 现象sqlmap 跑不出注入但手工测试明明有回显原因sqlmap 默认的 User-Agent 被 WAF 拦截或者目标 URL 需要 Cookie 才能访问。另外 POST 请求要用--data参数而不是-u。解决加--random-agent随机 UA用--cookie带上登录后的 CookiePOST 请求写成sqlmap -u http://target/login.php --datausernametestpasswordtest。如果还是不行用-v 3看详细请求确认参数有没有发对。5.4 现象端口安全配置后合法用户频繁掉线原因maximum设得太小或者用户换了网卡、接了 USB 网卡导致 MAC 变化。另外 IP 电话、打印机等设备可能自带小交换机一个端口下挂多个 MAC。解决先show port-security interface Fa0/1看当前学习到的 MAC 数量和违规计数。把maximum调到实际设备数加 1违规动作先设为restrict观察一段时间确认稳定后再改shutdown。对于确实需要多 MAC 的端口可以配sticky动态学习并保存。5.5 现象SYN Cookie 开启后某些老设备连接异常原因SYN Cookie 会改变 TCP 选项字段极少数老旧的网络设备或负载均衡器不兼容导致握手失败。解决先在小范围开启观察监控。如果确实有兼容问题可以只对特定端口开启或者改用连接限速和上游清洗作为替代。tcp_syncookies可以设为 2无条件开启或 1队列满时开启生产环境建议先用 1。6. 把攻击复现变成防御验证一个可量化的检查习惯做安全实验最容易陷入「攻击跑通了就结束」的误区。我的习惯是每复现一个攻击立刻写一条对应的验证命令把防御效果量化。比如 ARP 欺骗实验后在受害者上跑arpwatch监控 ARP 变化SYN Flood 实验后用ss -s统计半连接数量SQL 注入实验后用sqlmap再跑一次确认参数化查询生效。# 验证 SYN Cookie 是否生效攻击前后对比 SYN_RECV 数量 watch -n 1 ss -s | grep -i syn # 验证 ARP 防御开启 DAI 后在攻击机上再跑 arpspoof观察是否被阻断 arpspoof -i eth0 -t 192.168.1.20 192.168.1.1 # 如果 DAI 生效受害者 arp -a 中网关 MAC 应保持不变watch -n 1每秒刷新一次方便观察攻击过程中的变化。ss -s比netstat更快适合高并发场景。验证 ARP 防御时如果 DAI 配置正确攻击机的伪造 ARP 响应会被交换机丢弃受害者的 ARP 缓存不会变化。这个对比截图放在实验报告里比单纯写「配置了 DAI」有说服力得多。再进一步可以把这些验证命令写成一个 shell 脚本每次实验后自动跑一遍输出防御前后的指标对比。脚本不需要复杂关键是养成「攻击—防御—验证」的闭环习惯。我见过太多课程设计只做了攻击复现防御部分一笔带过答辩时被问「你怎么知道防御生效了」就答不上来。最后说一个我踩过的坑早期做实验时我把攻击机和靶机放在同一个 NAT 网络里结果 hping3 的伪造源 IP 被 NAT 网关改写攻击完全无效。后来改用桥接模式或者用 Host-Only 加软路由才复现成功。网络实验的环境配置往往比攻击命令本身更花时间这一点要有心理准备。希望帮到你。本文还有配套的精品资源点击获取
返回列表