网络安全——Iptables防DDoS攻击实验

一、实验目的要求:

二、实验设备与环境:

三、实验原理:

四、实验步骤:

五、实验现象、结果记录及整理:

六、分析讨论与思考题解答:


一、实验目的要求:

1、掌握常见DDoS攻击SYN Flood的攻击原理。

2、学习设计防火墙的过滤策略,防御DDoS攻击。

3、具体要求:

        1)模拟DDoS攻击的方式实现SYN Flood攻击。

        2)通过配置不同的防御策略和IPtables规则,防御SYN Flood攻击


二、实验设备与环境:


三、实验原理:

1SYN Flood攻击

        根据TCP协议传输的特点,攻击方向目标发送大量伪造的TCP连接请求,即目标主机在发出SYN+ACK应答报文后无法收到ACK报文,第三次握手失败,从而使目标连接资源耗尽,无法正常响应TCP的连接请求。常见的攻击方式有Direct Attack攻击方使用固定的IP发起攻击和Spoofing Attack攻击方使用变化的IP发起攻击。

2SYN Flood防御

主要有两种,一种是通过Linux内核提供的SYN相关配置,另一种是通过Iptables规则设置。

配置Linux中的SYN:1)缩短SYN Timeout的时间,降低服务器的负荷;2)设置SYN Cookie,若有重复的SYN报文,判定为受到攻击并丢弃。

Iptables规则设置:1)固定的IP发起攻击,对SYN包进行监视,异常行为则列入黑名单;2)变化的IP发起攻击,控制单个IP的最大并发连接数,即在一定时间内允许新建立的连接数。

3Sysctl命令

Sysctl命令用于运行时配置内核参数,这些参数位于/proc/sys目录下。根据Sysctl相关命令,进行信息的增删改查。格式为:"sysctl [选项] [参数]"。

4Netstat命令

Netstat命令用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。根据Netstat相关命令,进行信息的打印输出。格式为:"netstat [选项]"。


四、实验步骤:

(一)轻量级防御SYN Flood攻击

       1、查看环境:登录被攻击主机3,执行"sudo -i"命令切换至root用户模式;再执行" sysctl -a | grep syn "命令,查看系统Linux内核提供的SYN相关配置。Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。输出信息如图1所示。

"net.ipv4.tcp_max_syn_backlog"定义了处于SYN_RECV的TCP最大连接数,当处于SYN_RECV状态的TCP连接数超过tcp_max_syn_backlog后,会丢弃后续的SYN报文。

"net.ipv4.tcp_syncookies=1"表示默认打开SYN Cookie功能,该功能可以防止部分SYN攻击。

"net.ipv4.tcp_synack_retries=6"和"net.ipv4.tcp_syn_retries=5"表示SYN的重试次数。

执行"sysctl -w net.ipv4.tcp_syncookies=0"命令可以关闭SYN Cookie功能。

执行"sysctl -w net.ipv4.tcp_syncookies=1"命令可以打开SYN Cookie功能,最终保持打开状态。

        2、规则配置:将主机3的SYN重试次数设置为3;降低SYN重试次数可以降低处于半连接状态的数量,有效缓解SYN Flood攻击。

tcp_syn_retrie:对于一个新建连接,内核要发送多少个 SYN 连接请求才决定放弃。不应该大于255,默认值是5,对应于180秒左右时间。

tcp_synack_retries:对于远端的连接请求SYN,内核会发送SYN + ACK数据报,以确认收到上一个 SYN连接请求包。这是所谓的三次握手( threeway handshake)机制的第二个步骤。这里决定内核在放弃连接之前所送出的 SYN+ACK 数目。不应该大于255,默认值是5,对应于180秒左右时间。

# sysctl -w net.ipv4.tcp_synack_retries=3

# sysctl -w net.ipv4.tcp_syn_retries=3

# sysctl -a | grep syn

(二)防御固定IPSYN Flood攻击

       1、发起攻击:登录主机1,进入终端,通过终端进行对主机3(30.0.1.4)的攻击;

       "# hping3 -S --flood -V 30.0.1.4 -p 22"命令实现;

       hping是面向命令行的用于生成和解析TCP/IP协议数据包汇编/分析的开源工具。本次利用其中的功能之一,拒绝服务攻击。对目标机发起大量SYN连接。

       2、查看状态:登录主机3,进入root模式,查看SYN_RECV半连接状态的TCP连接。

       "# netstat -an | grep SYN_RECV"命令查看连接状态;

       从结果可看出,有大量由30.0.1.4发起的TCP连接处于半连接状态;

       "# netstat -an | grep SYN_RECV | wc –l"命令查看连接数量;

       从结果可看出,TCP连接处于半连接状态的数量为256个。

         3、防御攻击:在主机3下,执行命令配置Iptables规则,防御来自源IP 30.0.1.4 SYN Flood攻击。

       "# iptables -I INPUT -p tcp -m connlimit  --connlimit-above 5 -j REJECT"命令配置允许单个IP访问服务器的最大连接数为5。

       "iptables -L -v"使其生效。从结果可看出,Iptables拦截了大量的TCP并发连接。"# netstat -an | grep SYN_RECV | wc -l # netstat -an | grep SYN_RECV"命令,查看处于SYN_RECV(半连接)状态的数量,限制在iptables规则连接数内。 TCP连接处于半连接状态的数量逐渐减少,最后降为0,说明防御策略生效。

        4、还原设置:在主机1上,停止(Ctrl+C)SYN Flood攻击;在主机3上,清空(iptales -F)iptables规则

 (三)防御变化IPSYN Flood攻击

    1、发起攻击:同理,登录主机2,通过终端发送变化IP的SYN报文攻击目标主机3(30.0.1.4)。

       "# hping3 -S --flood -V 30.0.1.4 -p 22 --rand-source"命令实现;

       2、查看状态:登录主机3,执行以下命令查看处于SYN_RECV(半连接)的TCP连接;存在207个SYN_RECV连接。

       "# netstat -an | grep SYN_RECV | wc -l # netstat -an | grep SYN_RECV"命令实现;

       3、防御攻击:登录主机3,配置每分钟最多允许1个SYN新连接;

       "# iptables -A INPUT -p tcp --syn -m limit --limit 1/m --limit-burst 1 -j ACCEPT"

       "# iptables -L -v"使其生效;

登录主机3,执行"iptables -L -v"命令可查看到主机以每分钟新增1个连接数的速度接受数据包。可看出,每分钟只有一个数据包连接。

       4、还原设置:在主机1上,停止(Ctrl+C)SYN Flood攻击;在主机3上,清空(iptales -F)iptables规则


五、实验现象、结果记录及整理:

1、在轻量级防御SYN Flood攻击中,结合grep正则表达式可清楚的查看出Linux内核提供的SYN相关配置;可结合自身环境所需,对信息进行相应的配置修改;

2、在防御固定IP的SYN Flood攻击中,即Direct Attack攻击,使用限制服务器的最大连接数方法,有效的拦截了大量的TCP并发连接;

3、在防御变化IP的SYN Flood攻击中,即Spoofing Attack 攻击,使用每分钟最大连接数的方法进行防御,有效的拦截了大量的SYN新连接。


六、分析讨论与思考题解答:

1、Hping的功能?

防火墙测试、端口扫描、Idle扫描、拒绝服务攻击、文件传输、木马功能

2、Syn Flood有哪些种类?

①Direct Attack攻击方使用固定的源地址发起攻击,对攻击方的消耗最小;

②Spoofing Attack攻击方使用变化的源地址发起攻击,需要攻击方不停地修改源地址

③Distributed Direct Attack这种攻击主要是使用僵尸网络进行固定源地址的攻击

3、有哪些方法可预防Syn Flood攻击?

①对SYN包进行监视;如果发现某个IP发起了较多的攻击报文,直接将这个IP列入黑名单;

②无效连接监视释放;这种方法不停监视系统的半开连接和不活动连接,当达到一定阈值时拆除这些连接,从而释放系统资源;

③延缓TCB分配方法;当正常连接建立起来后再分配TCB则可以有效地减轻服务器资源的消耗,主要是是使用SYN Cache和SYN Cookie技术;

④使用SYN Proxy防火墙。


七、实验相关截图:

 

 

 

 

 

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/216263.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

金数据企业版:广告推广效率提升的关键,无代码API集成与连接技术

深入理解无代码开发与API集成的重要性 在当今的电商竞争环境下,企业必须寻找提高效率和灵活性的办法。无代码开发平台,如金数据,提供了一种创新的方式来应对快速变化的市场需求,特别是在API集成方面。无代码开发意味着企业可以通…

Slate基础使用说明

目录 Slate基础使用说明 1. 简单教程 2. 要点说明 2.1 TCommands以及TCommands基类 2.2 FUICommandInfo 2.3 FUICommandList 2.4 FUIAction 2.5 UICommand 3. 代码源码 4. 工具使用 4.1 Display Ul Extension Points 4. 参考文章 Slate基础使用说明 1.…

C++1114新标准——统一初始化(Uniform Initialization)、Initializer_list(初始化列表)、explicit

系列文章目录 C11&14新标准——Variadic templates(数量不定的模板参数) C11&14新标准——Uniform Initialization(统一初始化)、Initializer_list(初始化列表)、explicit 文章目录 系列文章目录1…

快速解决Edge浏览器常见问题:完整教程

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 目录 文章目录 前言 一、Edge浏览器是什么? 二、常见的问题 1. DNS服务器出错 解决方案一:清除浏览器缓存和Cookie 2.网络问题 3.缓存和Cook…

网络安全等级保护V2.0测评指标

网络安全等级保护(等保V2.0)测评指标: 1、物理和环境安全 2、网络和通信安全 3、设备和计算安全 4、应用和数据安全 5、安全策略和管理制度 6、安全管理机构和人员 7、安全建设管理 8、安全运维管理 软件全文档获取:点我获取 1、物…

Spark RDD的转换

按颜色区分转换: 绿色是单 RDD 窄依赖转换黑色是多 RDD 窄依赖转换紫色是 KV 洗牌型转换黄色是重分区转换蓝色是特例的转换 单 RDD 窄依赖转换 MapPartitionRDD 这个 RDD 在第一次分析中已经分析过。简单复述一下: 依赖列表:一个窄依赖&…

【Java 基础】32 定时调度

文章目录 Timer 类创建 Timer注意事项 ScheduledExecutorService 接口创建 ScheduledExecutorService注意事项 选择合适的定时调度方式Timer 的适用场景ScheduledExecutorService 的适用场景 总结 在软件开发中,定时任务是一种常见的需求,用于周期性地执…

Java - Spring中Bean的循环依赖问题

什么是Bean的循环依赖 A对象中有B属性。B对象中有A属性。这就是循环依赖。我依赖你,你也依赖我。 比如:丈夫类Husband,妻子类Wife。Husband中有Wife的引用。Wife中有Husband的引用。 Spring解决循环依赖的机理 Spring为什么可以解决set s…

【知识分享】Java用poi实现excel导出图片并浮在单元格上方

当使用Java导出Excel并将图片放置在单元格上时,可以使用Apache POI库来实现。以下是一个简单的示例代码: package org.example.demo2;import com.aliyun.core.utils.IOUtils; import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermod…

用23种设计模式打造一个cocos creator的游戏框架----(八)适配器模式

1、模式标准 模式名称:适配器模式 模式分类:结构型 模式意图:适配器模式的意图是将一个类的接口转换成客户端期望的另一个接口。适配器模式使原本接口不兼容的类可以一起工作。 结构图: 适用于: 系统需要使用现有的…

centos7 docker Mysql8 搭建主从

Mysql8 搭建主从 docker的安装docker-compose的安装安装mysql配置主从在master配置在slave中配置在master中创建同步用户在slave中连接 测试连接测试配置测试数据同步遇到的问题id重复错误执行事务出错,跳过错误my.cnf 不删除多余配置的错误可能用到的命令 docker的…

IOS添加三方库冲突了

1 duplicate symbol for architecture arm64 改为 在Build Settings->Other link flags中添加-dead_strip,如果Other link flags中有-all_load与-force_load则删掉,只填-dead_strip

倒计时4天|谈思AutoSec智能汽车安全攻防实训课程火热报名中~

车联网技术是国内外的研究热点问题。车联网技术与传统汽车行业深度融合,促进了自动驾驶技术在多种智能场景下的部署与应用。然而,车联网技术智能化、共享化、网联化发展的同时也带来了不可避免的安全问题,如硬件安全、数据安全、通信安全、云…

前端:如何让background背景图片进行CSS自适应

在设置login背景时,找到了一张这样的图片: 但是设置成login背景时,如果没有做一些css适应设置,图片就变样了,变成了这样: 严重变形了,这就造成了一种理想与现实的差距。 若想解决这个自适应问题…

JavaScript实现飘窗功能

实现飘窗功能很简单 html代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title…

遗留系统现代化:7步入门数字化转型

遗留系统对企业来说可能是一把双刃剑。虽然它们曾经对企业很有帮助&#xff0c;但随着时间的推移&#xff0c;这些应用程序、系统和架构变得过时&#xff0c;最终会限制企业发展。 为了实现保持竞争优势所需的扩展、业务敏捷性和数字化转型&#xff0c;越来越多企业意识到需要…

低压无功补偿在分布式光伏现场中的应用

摘要&#xff1a;分布式光伏电站由于建设时间短、技术成熟、收益明显而发展迅速&#xff0c;但光伏并网引起用户功率因数异常的问题也逐渐凸显。针对分布式光伏电站接入配电网后功率因数降低的问题&#xff0c;本文分析了低压无功补偿装置补偿失效的原因&#xff0c;并提出了一…

【BigDecimal类—常用API系列】解决java浮点计算精度损失问题

文章目录 Java浮点计算精度损失问题BigDecimal进行精确运算的解决方案 Java浮点计算精度损失问题 BigDecimal它是干什么用的呢&#xff1f;什么是java浮点计算精度损失问题&#xff1f;我们先看一段代码&#xff0c;看这个代码有什么问题&#xff1f;再说BigDeimal这个类是干什…

Java:TCP 通信方法(基本发送 + 接收)并 实现文件传输且反馈

TCP 通信编程 TCP:是一种可靠的网络协议&#xff0c;再通信两端都建立一个Socket对象。 通信之前要保证连接已经建立。 通过Socket产生IO流进行通信。 创建对象时&#xff0c;会连接服务器&#xff0c;连接不上&#xff0c;会报错。 所以&#xff0c;先运行服务端&#xff0c;再…

【C语言】数据在内存中的存储

目录 练笔 整型数据的存储&#xff1a; char 型数据——最简单的整型 整型提升&#xff1a; 推广到其他整形&#xff1a; 大小端&#xff1a; 浮点型数据的存储&#xff1a; 存储格式&#xff1a; 本篇详细介绍 整型数据&#xff0c;浮点型数据 在计算机中是如何储存的。…