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


七、实验相关截图:

 

 

 

 

 

 

 

 

 

 

  • 18
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李秋天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值