何为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. [转] hadoop MapReduce实例解析-非常不错,讲解清晰

    来源:http://blog.csdn.net/liuxiaochen123/article/details/8786715?utm_source=tuicool 2013-04-11 10:15 4 ...

  2. xgboost学习

    1.原理 https://www.cnblogs.com/zhouxiaohui888/p/6008368.html 2.实战 xgboost中比较重要的参数介绍: (1)学习率:learning r ...

  3. python之类与对象属性的增删改查

    类属性与对象属性的增删改查 类属性的增删改查 class School: """ 文档 """ Teacher = "老王&quo ...

  4. BZOJ 2118 墨墨的等式 (同余最短路)

    题目大意:已知B的范围,求a1x1+a2x2+...+anxn==B存在非负正整数解的B的数量,N<=12,ai<=1e5,B<=1e12 同余最短路裸题 思想大概是这样的,我们选定 ...

  5. js中的变量提升和函数提升

    从上周开始,我所在的学习小组正式开始了angular的学习,angular是全面支持es6的,所以语法上和以前的angular有了很大的不同,比如变量声明时就抛弃了var,而选择了let和const: ...

  6. 关于Thread的那些事

    关于Thread的那些事 1 : 你能够调用线程的实例方法Join来等待一个线程的结束.比如: public static void MainThread() { Thread t = new Thr ...

  7. 优化报表系统结构之报表server计算

    在报表项目中,经常会碰到数据库压力非常大影响整个系统性能的问题.由以下的传统方案的结构示意图能够看出.所有数据存储和源数据计算都放在数据库完毕.当并发訪问量较大的时候,尽管每一个报表的数据量不大,还是 ...

  8. c# 获取一年中的周/根据一年中的第几周获取该周的开始日期与结束日期

    /// <summary> /// 获取一年中的周 /// </summary> /// <param name="dt">日期</par ...

  9. gson的安装和使用

    gson的安装和使用 1.安装 2.布局 <?xml version="1.0" encoding="utf-8"?> <LinearLayo ...

  10. ThinkPHP5.0框架开发--第2章 TP5.0架构

    ThinkPHP5.0框架开发--第2章 TP5.0架构 第2章 TP5.0架构 ================================================== 上次复习 1.如 ...