何为syn攻击?
  先普及下tcp3次握手的知识,在TCP/IP中,tcp协议提供可靠的socket连接服务,通过3次握手建立可靠连接。
tcp3次握手过程:
  第一阶段:某终端向服务器发送syn(syn=x)请求消息,并进入SYN_SEND状态
  第二阶段:服务器收到syn请求后,会回馈给终端synack消息(synack=x+1)和syn消息(syn=y),并进入SYN_RECV状态
  第三阶段:终端收到服务器的syn和synack,并向服务器反馈ack消息(ack=y+1),完成3次握手开始传输数据。
  了解到tcp3次握手之后呢,我们说一下syn攻击是怎么回事吧。syn其实就是在进行到第二阶段结束后,此时服务器不是已经发送了syn消息和synack消息了吗,这服务器真是个老好人啊,由于tcp3次握手机制,它得等着终端那家伙给它反馈synack消息啊,所以吧,服务器得分配一定的资源等着终端那家伙啊。可是呢,这终端比较坏,不但不回复synack包给服务器,反倒搞一大堆第一阶段的syn请求消息。这下服务器可不好过了啊,得腾出好多好多资源给终端留着啊,最后可能就把自己搞死了。这就是所谓的syn攻击啊,又称为ddos攻击。
syn攻击的防范?
  1.通过调整sysctl.conf网络内核文件
  第一步,列出系统现有的sysctl.conf配置并筛选出syn字眼【不筛选的话好多的,展示不了】

[root@centos-linux- ~]# sysctl -a|grep syn|grep -v ipv6
sysctl: reading key "net.ipv6.conf.all.stable_secret"
sysctl: reading key "net.ipv6.conf.default.stable_secret"
sysctl: reading key "net.ipv6.conf.eth0.stable_secret"
sysctl: reading key "net.ipv6.conf.lo.stable_secret"
fs.quota.syncs =
fs.xfs.inherit_sync =
fs.xfs.xfssyncd_centisecs =
net.ipv4.tcp_max_syn_backlog =
net.ipv4.tcp_syn_retries =
net.ipv4.tcp_synack_retries =
net.ipv4.tcp_syncookies =
  第二步,修改syn_retries与synack_retries的数值为2或3,设置syn_cookies为1【centeros 7默认为打开‘1’】
[root@centos-linux- ~]# vim /etc/sysctl.conf
net.ipv4.tcp_syn_retries =
net.ipv4.tcp_synack_retries =
net.ipv4.tcp_syncookies =
net.ipv4.tcp_max_syn_backlog =
  这里解释一下以上内容的含义:
  net.ipv4.tcp_syn_retries = 2
  【服务器在等待不到终端的确认消息时,syn消息报文会重新发送,需要根据网络情况尽量减少,如果网络不好的情况下终端可能会出现连不上服务器的情况】
  net.ipv4.tcp_synack_retries = 2
  【服务器在等待不到终端的确认消息时,synack消息报文会重新发送,需要根据网络情况尽量减少,情况和上面一样】
  net.ipv4.tcp_syncookies = 1
  【该功能可以防止部分SYN攻击】
  net.ipv4.tcp_max_syn_backlog = 1024
  【tcp_max_syn_backlog 是SYN队列的长度,加大SYN队列长度可以容纳更多等待连接的网络连接数】
  2.通过防火墙编写高级acl
iptables -N syn-flood
iptables -A syn-flood -m limit --limit /s --limit-burst -j RETURN
iptables -A syn-flood -j DROP
iptables -I INPUT -j syn-flood
service iptables save
  命令解释:
  -N 创建一个条新的链
  –limit 50/s 表示每秒50次; 1/m 则为每分钟一次
  –limit-burst 表示允许触发 limit 限制的最大包个数 (预设5),它就像是一个容器,最多装10个,超过10个就装不下了,这些包就给后面的规则了
  -I INPUT -j syn-flood 把INPUT的包交给syn-flood链处理
  这里的–limit-burst=10相当于说最开始我有10个可以匹配的包去转发,然后我匹配的包的个数是根据–limit=50/s进行限制的,也就是每秒限制转发50个数据包,多余的会被下面符合要求的DROP规则去处理,进行丢弃,这样就实现了对数据包的限速问题。

syn攻击原理与防护措施的更多相关文章

  1. Linux安全之SYN攻击原理及其应对措施

    TCP自从1974年被发明出来之后,历经30多年发展,目前成为最重要的互联网基础协议,但TCP协议中也存在一些缺陷. SYN攻击就是利用TCP协议的缺陷,来导致系统服务停止正常的响应. SYN攻击原理 ...

  2. Linux安全之SYN攻击原理及处理

    TCP自从1974年被发明出来之后,历经30多年发展,目前成为最重要的互联网基础协议,但TCP协议中也存在一些缺陷. SYN攻击就是利用TCP协议的缺陷,来导致系统服务停止正常的响应. SYN攻击原理 ...

  3. SYN 攻击原理及解决方法

    原理SYN foold攻击主要针对tcp通信三次握手期间做的手脚,所以要弄懂这个攻击的原理我们首先必须知道tcp三次握手的详细过程 由上图可知tcp三次握手顾名思义要经过三个步骤,这三个步骤分别是 客 ...

  4. SYN攻击

    一.TCP握手协议 在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接. 第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服 ...

  5. Sync 攻击原理及防范技术

    据统计,在所有黑客攻击事件中,SYN攻击是最常见又最容易被利用的一种攻击手法.相信很多人还记得2000年YAHOO网站遭受的攻击事例,当时黑客利用的就是简单而有效的SYN攻击,有些网络蠕虫病毒配合SY ...

  6. TCP三次握手原理与SYN攻击

    本文内容包括以下几点 1.TCP三次握手四次挥手解析 2.迭代型服务器程序编写,并给出客户端,结合这一模式详细介绍Berkeley套接字的使用 3.介绍SYN攻击的原理 TCP连接建立,传输数据,连接 ...

  7. SYN攻击防护措施

    SYN攻击的应对措施 针对SYN攻击的几个环节.提出对应的处理方法: 方式1:降低SYN-ACK数据包的重发次数(默认是5次): sysctl -w net.ipv4.tcp_synack_retri ...

  8. TCP SYN flood洪水攻击原理和防御破解

    简介 TCP协议要经过三次握手才能建立连接: 于是出现了对于握手过程进行的攻击.攻击者发送大量的SYN包,服务器回应(SYN+ACK)包,但是攻击者不回应ACK包,这样的话,服务器不知道(SYN+AC ...

  9. SYN泛洪攻击原理及防御

    拒绝服务攻击时,攻击者想非法占用被攻击者的一些资源,比如如:带宽,CPU,内存等等,使得被攻击者无法响应正常用户的请求. 讲泛洪攻击之前,我们先了解一下DoS攻击和DDoS攻击,这两个攻击大体相同,前 ...

随机推荐

  1. background--详解(背景图片根据屏幕的自适应)

    background:有以下几种属性: background-color background-position background-size background-repeat backgroun ...

  2. html5+css3相关知识

    一:HTML5 1.html中的meta标签 定义针对搜索引擎的关键词: <meta name="keywords" content="HTML, CSS, XML ...

  3. Django路由中的include

    include(module,namespace = None,app_name = None)[source] include(pattern_list) include((pattern_list ...

  4. freeswitch 注册错误408 - Request Timeout

    1.网络不通(可能虚拟机没打开网络) 2.防火墙没有过滤端口号(关闭防火墙) 3.IP地址错误

  5. 自动合法打印VitalSource Bookshelf中的电子书

    最近有一本2千多页的在VitalSource中的电子书想转为PDF随时阅读,没料网上找了一圈没有找到合适的.相对好一些的只有一个用Python写的模拟手动打印.于是想到了用AutoHotkey写一个自 ...

  6. 2019-03-28 SQL Server Pivot

    --现在我们是用PIVOT函数将列[WEEK]的行值转换为列,并使用聚合函数Count(TotalPrice)来统计每一个Week列在转换前有多少行数据,语句如下所示 select * from Sh ...

  7. tddl

    淘宝根据自己的业务特点开发了TDDL(Taobao Distributed Data Layer 外号:头都大了 ?_Ob)框架,主要解决了分库分表对应用的透明化以及异构数据库之间的数据复制,它是一个 ...

  8. Android蓝牙串口程序开发

    本文主要介绍了针对android的蓝牙串口上位机开发. 程序下载地址:点击打开链接 一.帧定义 androidclient依照一定的数据帧格式通过蓝牙串口发送数据到连接到MCU的蓝牙从机.MCU接收到 ...

  9. ADO.NET (二)—— ADO和ADO .NET对照

     ADO.NET (二)-- ADO和ADO .NET对照       我们知道ADO.NET的两大核心组件各自是Data Provider和DataSet.假设说 DataSet是ADO.NET的心 ...

  10. leveldb学习:sstable(2)

    block写入:block_builder block.h和.cc里定义了block的entry存储格式和restart,提供了entry的查找接口以及迭代器.那么怎样往写block里写entry呢? ...