LINUX下SYN攻防战如下

(一)SYN攻击原理

SYN攻击属于DOS攻击的一种,它利用TCP协议缺陷,通过发送大量的半连接请求,耗费服务器CPU和内存资源。SYN攻击聊了能影响主机外,还可以危害路由器,防火墙等网络系统,事实上SYN攻击并不管目标是什么系统,只要这些系统打开TCP服务就可以实施.我们知道,在网络中两台电脑建立TCP连接 时需要进行三次握手过程,客户端首先向服务器发关TCP SYN数据包,接着服务器会向客户端发关相应的SYN ACK数据包,最后客户端会以ACK进行响应.从而建立正常的握手过程。在具体的连接细节中,服务器最早接受到SYN包时,在TCP协议栈中会将相应的半连接记录添加到队列中,之后等待接受下面准备握手的数据包,如果握手成功,那么这个半连接记录将从队列中删除.或者当服务器未收到客户端的确认包时,会重发请求包,一直到超时才将此条目从未连接队列删除。但是在服务器中的TCP协议栈中存储的半连接记录是有限的,当服务器受到SYN型的DOS攻击后,队 列会很快处于充满状态,客户端在短时间内伪造大量不存在的IP地址,向服务器不断地发送SYN包,服务器回复确认包,并等待客户的确认,由于源地址是不存在的,服务器需要不断的重发直至超时,这些伪造的SYN包将长时间占用未连接队列,正常的SYN请求被丢弃,目标系统运行缓慢严重者引起网络堵塞甚至系统瘫痪,服务器随后就不再接受新的网络连接,从而造成正常的客户端无法访问服务器的情况发生。

(二)实战SYN攻击过程

SYN攻击实现起来非常的简单,互联网上有大量面成的SYN攻击工具可以直接利用.假设在Linux服务器中安装了Web服务,在 Linux的命令提示符中执行"service httpd start"命令,即可开启Web服务,接着执行"netstat -ant | grep 80"命令,可以看到80端口已经处于打开状态了.在网络的其它机器上利用SYN攻击软件(例如"synkill"等)对Linux服务器的80端口进行 DOS攻击,之后在Linux服务器中执行命令"netstat -ant | grep 80",可以看到大量的网络连接信息,包括连接的类型,原地址,目标直地址,连接状态等,当然,因为SYN工具通常会伪告客户端地址,因此在连接列表中是 找不到真实地址的.在连接状态中显示"SYN_RECV",表示当前处于半连接状态.我们可以每隔几秒钟运行命令"netstat -n -p TCP | grep SYN_RECV |grep 80 | wc -l",来检查某个端口(这里为80)的未连接队列的条目数,当发现该条目数增大到某个极大值,并处于平衡状态时,那么就很有可能是Linux的TCP协 议栈中的队列满了,此时用户就无法建立新的连接了。

(三)如可在Linux中防御SYN型DOS攻击

在Linux中防御SYN型DOS攻击的方法比较常见的有增大队列SYN最大半连接数,减小超时值,利用SYN cookie技术,过滤可疑的IP地址等常用方法,下面分别进行分析。

(四)增大队列SYN最大半连接数

在Linux中执行命令"sysctl -a|grep net.ipv4.tcp_max_syn_backlog",在返回的"net.ipv4.tcp_max_syn_backlog=256"中显示 Linux队列的最大半连接容量是256.这个默认值对于Web服务器来说是远远不够的,一次简单的SYN攻击就足以将其完全占用.因此,防御DOS攻击 最简单的办法就是增大这个默认值,在Linux中执行命令"sysctl -w et.ipv4.tcp_max_syn_backlog=3000",这样就可以将队列SYN最大半连接数容量值改为3000了。

(五)减小超时值

在Linux中建立TCP连接时,在客户端和服务器之间创建握手过程中,当服务器未收到客户端的确认包时,会重发请求包,一直到超时才将此条目从未连接队 列是删除,也就是说半连接存在一定的存活时间,超过这个时间,半连接就会自动断开,在上述SYN攻击测试中,当经过较长的的时间后,就会发现一些半连接已经自动断开了。半连接存活时间实际上是系统所有重传次数等待的超时时间之和,这个值越大半连接数占用的Backlog队列的时间就越长,系统能处理的 SYN请求就越少,因此,缩短超时时间就可以有效防御SYN攻击,这可以通过缩小重传超时时间和减少重传次数来实现.在Linux中默认的重传次数为5 次,总超时时间为3分钟,在Linux中执行命令"sysctl -w net.ipv4.tcp_synack_retries=1",将超时重传次数设置为。

(六)利用SYN cookie来防御DOS攻击

除了在TCP协议栈中开辟一个内存空间来存储半连接数之外,为避免因为SYN请求数量太多,导致该队列被填满的情况下,Linux服务器仍然可以处理新的SYN连接,可以利用SYN Cookie技术来处理SYN连接。什么是SYN Cookie呢?SYN Cookie是用一个Cookie来响应TCP SYN请求的,在正常的TCP连接过程中,当服务器接收一个SYN数据包,就会返回一个SYN -ACK包来应答,然后进入TCP -SYN -RECV(半开放连接)状态来等待最后返回的ACK包。服务器用一个数据空间来描述所有未决的连接,然而这个数据空间的大小是有限的,所以攻击者将塞满 这个空间,在TCP SYN COOKIE的执行过程中,当服务器收到一个SYN包的时候,他返回一个SYN -ACK包,这个数据包的ACK序列号是经过加密的,它由TCP连接的源地址和端口号,目标地址和端口号,以及一个加密种子经过HASH计算得出的,然后 服务器释放所有的状态.如果一个ACK包从客户端返回后,服务器重新计算COOKIE来判断它是不是上个SYN -ACK的返回包.如果是的话,服务器就可以直接进入TCP连接状态并打开连接.这样服务器就可以避免守候半开放连接了,在Linux中执行命令"echo "echo "1" > / proc/sys/net/ipv4/tcp_syncookies"> > /etc/rc_local",这样即可启动SYN Cookie,并将其添加到了Linux的启动文件,这样即使系统重启也不影响SYN Cookie的激活状态。

(七)过滤可疑的IP直址

当客户机对服务器进行攻击时,在服务器上可以进行抓包操作,这样可以对数据包中的IP进行检测,然后再对这些可疑的潮行过滤,从而将其无法正常连接服务器。利用Linux自带的"tcpdump"命令可以实现抓包操作,执行命令"tcpdump -c 1000 -l eth 0 -n dst port 80 > test.txt",就可以在当前目录下创建一个。

以上就是本文的全部内容,希望对大家的学习有所帮助。

linux攻防比赛_LINUX 遭到SYN FLOOD攻击 LINUX下SYN攻防战相关推荐

  1. 『网络协议攻防实验』SYN Flood攻击

    前言 靶机1:seedubuntu 12.01,IP:192.168.199.138 靶机2:WindowsXP SP2,IP:192.168.199.135 攻击机:Kali-2020.4,IP:1 ...

  2. php攻击方式及防御方法,Syn Flood 攻击 及其一般防御方法

    防火墙通知受到Syn Flood攻击,并解释说: A SYN Flood is an attempt to consume memory and resources. A Normal TCP/IP ...

  3. 详解SYN Flood攻击原理与防范

    详解SYN Flood攻击原理与防范 SYN Flood是当前最流行的DoS(拒绝服务攻击)与DDoS(分布式拒绝服务攻击)的方式之一,它是利用TCP协议缺陷,发送大量伪造的TCP连接请求,从而使得被 ...

  4. pythonddos防御_浅谈拒绝服务攻击的原理与防御(7):用Python和C实现syn flood攻击...

    01 前言 以前做DDOS的实验都是用python来编写工具的,开始不会编写结构不会算校验和的时候就用scapy写,后来学会了报文结构开始自己构造各种报文,但是用python写成之后虽然是能实现基本功 ...

  5. syn flood攻击原理及防范

    sync攻击原理 DoS是Denial of Service的简称,即拒绝服务,造成DoS的攻击行为被称为DoS攻击,其目的是使计算机或网络无法提供正常的服务.最常见的DoS攻击有计算机网络带宽攻击和 ...

  6. SYN Flood攻击

    1.攻击原理 SYN Flood是拒绝服务攻击的一种,所谓拒绝服务攻击,即想办法让目标机器停止提供服务 这是一种利用TCP协议缺陷,发送大量伪造的TCP连接请求,使被攻击方资源耗尽(CPU满负荷或内存 ...

  7. syn flood 攻击 c 语言源代码,以太网模拟syn flood攻击

    以太网模拟syn flood攻击 (2012-06-08 00:55:49) 标签: 以太网 杂谈 以太网模拟syn flood攻击最近在网上找了一些模拟syn flood攻击的c语言源代码,顺便写了 ...

  8. 【计算机网络】TCP协议经典十五连问(半连接、重传、滑动窗口、流量窗口、拥塞控制、SYN Flood攻击、粘包拆包)

    文章目录 1. 讲下TCP三次握手流程 2.TCP握手为什么是三次,不能是两次?不能是四次? 2.1 为什么握手不能是两次呢? 2.2 为什么握手不能是四次呢? 3. 讲下TCP四次挥手过程 4. T ...

  9. DDOS SYN Flood攻击、DNS Query Flood, CC攻击简介——ddos攻击打死给钱。限网吧、黄网、博彩,,,好熟悉的感觉有木有...

    摘自:https://zhuanlan.zhihu.com/p/22953451 首先我们说说ddos攻击方式,记住一句话,这是一个世界级的难题并没有解决办法只能缓解 DDoS(Distributed ...

  10. 浅谈iptables防SYN Flood攻击和CC攻击

    何为syn flood攻击: SYN Flood是一种广为人知的DoS(拒绝服务攻击)是DDoS(分布式拒绝服务攻击)的方式之一,这是一种利用TCP协议缺陷,发送大量伪造的TCP连接请求,从而使得被攻 ...

最新文章

  1. Conda安装Glossary词汇表
  2. jlink烧写Nor Flash时出错正确解决方法汇总:PC of target system has unexpected value after programming (2011
  3. HDU 1711 Number Sequence(算法验证)
  4. 玩转Linux压缩及归档
  5. 做好项目,从正确定义问题开始!
  6. java项目使用junit_在Java 8之前的项目中使用JUnit 5
  7. 4. Spring 如何通过 XML 文件配置Bean,以及如何获取Bean
  8. HTML期末作业-家乡网站
  9. pycharm远程调试报错cant ser remote tunneling
  10. CentOS 6.2 虚拟机 mail邮件信息: crash:[abrt] full crash report
  11. OSPF特殊区域之stub和totally stub配置(二)
  12. 《单细胞生物》教学反思
  13. Visio图片转为eps格式
  14. 企业怎样优化用户体验?F5给出三条专业建议
  15. 创建个人博客只需五步骤——小白都能看会的详细过程,教你如何白嫖阿里云服务器
  16. 2018年自学编程的学习计划表
  17. 微信摇一摇抽奖的H5制作思路
  18. 神经网络学习(3)————BP神经网络以及python实现
  19. 集合类框架的常用类比
  20. Android Studio : Unfortunately you can't have non-Gradle Java modules and Android-Gradle modules

热门文章

  1. 论文阅读笔记(四)——ESPNetV2:A Light-weight Power Efficient and General Purpose Convolutional Neural Network
  2. 给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数)。
  3. 与用户交互、格式化输出、基本运算符
  4. 【测试篇】为什么需要测试
  5. 使用 Apache 来限制访问 Confluence 6 的管理员界面
  6. 程序中使用log4J打印信息的两种方式
  7. 作业二在校大学生零食消费调查问卷
  8. 调试uwp 程序 出现的黑框
  9. HTML基础整理(From表单)
  10. 将bean转换成键值列表