网络安全——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防火墙。


七、实验相关截图:

 

 

 

 

 

 

 

 

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

gdb本地调试版本移植至ARM-Linux系统

移植ncurses库 本文使用的ncurses版本为ncurses-5.9.tar.gz 下载地址:https://ftp.gnu.org/gnu/ncurses/ncurses-5.9.tar.gz 1. 将ncurses压缩包拷贝至Linux主机或使用wget命令下载并解压 tar-zxvf ncurses-5.9.tar.gz 2. 解压后进入到ncurses-5.9目录…

解决员工安全隐患的终极方案!迅软DSE答疑员工终端安全管控策略揭秘!

企业终端安全管控对于企事业单位来说至关重要。迅软DSE终端安全系统提供了丰富的终端安全桌面管理策略,可以对终端用户的上网行为和终端操作行为进行管理和控制,从而实现桌面终端的标准化管理,解决终端安全管理问题,并提高员工工作…

阿里云SLB的使用总结

一、什么是SLB 实现k8s的服务service的一种推荐方式,也是服务上云后,替代LVS的一个必选产品。 那么它有什么作用呢? 1、负载均衡,是它与生俱来的。可以配置多个服务器组:包括虚拟服务器组、默认服务器组、主备服务器…

小程序使用Nodejs作为服务端,Nodejs与与MYSQL数据库相连

小程序使用Nodejs作为服务端,Nodejs与与MYSQL数据库相连 一、搭建环境二、配置Nodejs三、与小程序交互四、跨域处理/报错处理五、nodejs连接mysql数据库六、微信小程序连接nodejs报错七、小程序成功与服务端相连,且能操作数据库一、搭建环境 新建空文件夹:Win + R进入cmd命令…

C++STL的list模拟实现

文章目录 前言 list实现push_back迭代器(重点)普通迭代器const迭代器 inserterase析构函数构造函数拷贝构造赋值 vector和list的区别 前言 要实现STL的list, 首先我们还得看一下list的源码。 我们看到这么一个东西,我们知道C兼容C,可以用struct来创建一…

Quartus II + Modelsim 脚本仿真

软件版本:Intel Quartus Prime Design Suite: 23.2 方式参考附件Intel 官方文档:Questa*-Intel FPGA Edition Quick-Start: Intel Quartus Prime Pro Edition 第1步,创建一个ram ip,并形成一个例化的top层ip 第2步,自…

独立完成软件的功能的测试(2)

独立完成软件的功能的测试(2) (12.13) 1. 对穷举场景设计测试点(等价类划分法) 等价类划分法的概念: 说明:数据有共同特征,成功失败分类: 有效&#xff1a…

FPGA使用乘法的方式

FPGA使用乘法的方式 方法一:直接使用乘法符“*” 源代码 module multiply(input [7:0] a,input [7:0] b,output wire [15:0] result);(*use_dsp48 = "yes"*) wire [15:0] result;assign result = a*b; endmodule仿真代码 module multiply_tb();reg [7:0] a; re…

大象慧云:从设立分部到迁移总部 与贵阳贵安共筑税务数字化未来

近年来,贵阳贵安着力提升政务服务水平,通过擦亮“贵人服务”品牌,持续优化营商环境。在这样的环境下,再加上“大数据基因”,对于希望在大数据领域大展拳脚的企业来说,贵阳贵安无疑成为了一个极具吸引力的选…

MySQL笔记-第11章_数据处理之增删改

视频链接:【MySQL数据库入门到大牛,mysql安装到优化,百科全书级,全网天花板】 文章目录 第11章_数据处理之增删改1. 插入数据1.1 实际问题1.2 方式1:VALUES的方式添加1.3 方式2:将查询结果插入到表中 2. 更…

C语言—每日选择题—Day46

第一题 1. 下列程序段的输出结果是&#xff08;&#xff09; #include <stdio.h> int main() {int x 1,a 0,b 0;switch(x) {case 0: b;case 1: a;case 2: a;b;}printf("a%d,b%d\n", a, b);return 0; } A&#xff1a;a2,b1 B&#xff1a;a1,b1 C&#xf…

CGAL的3D Alpha Wrapping

1、介绍 几何建模和处理中的各种任务都需要将三维对象表示为有效的曲面网格&#xff0c;其中“有效”指的是不透水、无交叉、可定向和2流形的网格。这样的表示提供了内部/外部和测地线邻域的定义良好的概念。 3D数据通常是通过测量和重建获得的&#xff0c;由人类设计&#xff…

深入理解网络 I/O 多路复用:Epoll

&#x1f52d; 嗨&#xff0c;您好 &#x1f44b; 我是 vnjohn&#xff0c;在互联网企业担任 Java 开发&#xff0c;CSDN 优质创作者 &#x1f4d6; 推荐专栏&#xff1a;Spring、MySQL、Nacos、Java&#xff0c;后续其他专栏会持续优化更新迭代 &#x1f332;文章所在专栏&…

【FPGA】综合设计练习题目

前言 这是作者这学期上的数电实验期末大作业的题目&#xff0c;综合性还是十分强的&#xff0c;根据组号作者是需要做“4、篮球比赛计分器”&#xff0c;相关代码会在之后一篇发出来&#xff0c;这篇文章用于记录练习题目&#xff0c;说不定以后有兴趣或者有时间了回来做做。 …

随机拆分文件夹划分训练验证集

import os from shutil import copy, rmtree import randomdef mk_file(file_path: str):if os

智能优化算法应用:基于鸟群算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于鸟群算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于鸟群算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.鸟群算法4.实验参数设定5.算法结果6.参考文献7.MA…

数据中心到底是如何工作的?

数字时代的数据中心&#xff0c;就如同网络世界的心脏&#xff0c;它的鼓动关系到整个网络生态的运转。但这个复杂而庞大的数据枢纽背后隐藏着怎样的精密机制&#xff0c;是许多人颇感好奇的谜。 数字时代的数据中心&#xff0c;就如同网络世界的心脏&#xff0c;它的鼓动关系…

【CSP】202303-1_田地丈量Python实现

文章目录 [toc]试题编号试题名称时间限制内存限制问题描述输入格式输出格式样例输入样例输出样例解释子任务Python实现 试题编号 202303-1 试题名称 田地丈量 时间限制 1.0s 内存限制 512.0MB 问题描述 西西艾弗岛上散落着 n n n块田地&#xff0c;每块田地可视为平面直角坐标…

UDP群聊

客户端 import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.EventQueue; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader…

PyTorch深度学习实战(25)——自编码器

PyTorch深度学习实战&#xff08;25&#xff09;——自编码器 0. 前言1. 自编码器2. 使用 PyTorch 实现自编码器小结系列链接 0. 前言 自编码器 (Autoencoder) 是一种无监督学习的神经网络模型&#xff0c;用于数据的特征提取和降维&#xff0c;它由一个编码器 (Encoder) 和一…