Linux系统-抵御SYN洪水攻击

本文源链接地址:https:www.93bok.com

说明:

本文中所提到的这些内核配置参数应该在每台服务器上线之前配置好的,防止意外。

SYN攻击:

SYN攻击是利用TCP/IP协议3次握手的原理,发送大量的建立连接的网络SYN包,但不实际建立连接,最终导致被攻击服务器的网络队列被占满,无法被正常用户访问。

原理图:



正常情况下TCP三次握手:



SYN攻击情况:


SYN Flood是当前最流行的DoS(拒绝服务攻击)与DDoS(分布式拒绝服务攻击)的方式之一,这是一种利用TCP协议缺陷,发送大量伪造的TCP连接请求,常用假冒的IP或IP号段来发送海量的请求连接的第一个握手包(SYN包),被攻击服务器回应第二个握手包(SYN+ACK包),因为对方是假冒IP,对方永远收不到包且不会回应第三个握手包,导致被攻击服务器保持大量SYN_RECV状态的“办连接”,并且会重试默认5次回应第二个握手包,塞满TCP等待连接队列,耗尽资源(CPU满负荷或内存不足),让正常的业务请求连接不进来。

解决:

一、添加以下参数

vim /etc/sysctl.conf
#在文件末尾添加:

net.ipv4.tcp_synack_retries = 0
net.ipv4.tcp_syn_retries = 0
net.ipv4.tcp_max_syn_backlog = 20480
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 10
fs.file-max = 819200
net.core.somaxconn = 65536
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.core.netdev_max_backlog = 165536
net.ipv4.ip_local_port_range = 10000 65535

二、参数生效

sysctl -p

三、参数详解

1)net.ipv4.tcp_synack_retries = 0

表示回应第二个握手包(SYN+ACK包)给客户端IP后,如果收不到第三次握手包(ACK包)后,不进行重试,加快回收“半连接”,不要耗光资源。不修改这个参数,模拟攻击,10秒后被攻击的80端口即无法服务,机器难以ssh登录; 用命令 netstat -na | grep SYN_RECV检测“半连接”hold住180秒;

2)net.ipv4.tcp_syn_retries = 0

默认是5,当没有收到服务器端的SYN+ACK包时,客户端重发SYN握手包的次数。

3)net.ipv4.tcp_max_syn_backlog = 20480

半连接队列长度,增加SYN队列长度到20480:加大SYN队列长度可以容纳更多等待连接的网络连接数,具体多少数值受限于内存。

4)fs.file-max = 819200

系统允许的文件句柄的最大数目,因为连接需要占用文件句柄

5)net.core.somaxconn = 65536

用来应对突发的大并发connect请求

6)net.core.wmem_max = 16777216

最大的TCP数据发送缓冲(字节)

7)net.core.netdev_max_backlog = 165536

网络设备接收数据包的速度比内核处理这些包的速度快时,允许送到队列的数据包的最大数目

8)net.ipv4.ip_local_port_range = 10000 65535

本机主动连接其他机器时的端口分配范围,比如说,在vdftpd主动模式会用到,如果只是开启22端口,不会使用到net.ipv4.ip_local_port_range这个功能

9)net.ipv4.tcp_syncookies = 1

表示开启SYN Cookies,当出现半链接队列溢出时启用cookies来处理,调大半链接队列,可防范少量SYN攻击,默认为0,改为1开启

10)net.ipv4.tcp_tw_reuse = 1

表示开启tcp连接重用,允许将TIME-WAIT sockets重新用于建立新的tcp连接,默认为0,改为1开启

11)net.ipv4.tcp_tw_recycle = 1

表示开启tcp连接中TIME-WAIT sockets的快速回收,默认为0,改为1开启

这个是什么意思呢,我来演示一下给大家看看,现在我先看看阿里云上边80端口的状态

接下来我访问我阿里云的网站,然后多刷新几次,刷新完了之后,我们再来看看80的状态是不是有TIME_WAIT状态的,那上边这个参数的作用就是快速释放这些TIMA_WAIT来达到快速回收的作用

12)net.ipv4.tcp_fin_timeout = 10

对于本端断开的socket连接,tcp保持在FIN_WAIT_2状态的时间。对方可能会断开连接或一直不结束或不可预料的进程死亡

原文地址:https://www.cnblogs.com/93bok/p/9684197.html

时间: 2024-10-01 00:31:27

Linux系统-抵御SYN洪水攻击的相关文章

TCP--SYN洪水攻击

在查看TCP标识位SYN时,顺便关注了一下SYN Flood,从网上查阅一些资料加以整理,SYN洪水攻击利用TCP三次握手. 1.SYN洪水介绍 当一个系统(客户端C)尝试和一个提供了服务的系统(服务器S)建立TCP连接,客户端C和服务端S会交换一系列报文. 正常的3次握手连接:首先是C发送一个SYN报文给服务端S,然后这个服务端发送一个SYN-ACK包以回应C,接着,C就返回一个ACK包来实现一次完整的TCP连接.就这样,C到服务端的连接就建立了,这时C和服务端就可以互相交换数据了. SYN洪

Linux系统防火墙防止DOS攻击

问题 Linux系统防火墙防止DOS攻击 解决方案 用Linux系统防火墙功能抵御网络攻击 虚拟主机服务商在运营过程中可能会受到黑客攻击,常见的攻击方式有SYN,DDOS等.通过更换IP,查找被攻击的站点可能避开攻击,但是中断服务的时间比较长.比较彻底的解决方法是添置硬件防火墙.不过,硬件防火墙价格比较昂贵.可以考虑利用Linux系统本身提供的防火墙功能来防御. 1. 抵御SYNSYN攻击是利用TCP/IP协议3次握手的原理,发送大量的建立连接的网络包,但不实际建立连接,最终导致被攻击服务器的网

网络安全系列之1 SYN洪水攻击

近期又在准备参加网络安全比赛,将相关的内容整理一下,也请多提宝贵意见. 在之前的博文中曾提到"死亡之ping",如"ping IP地址 –l 65500 –t",通过该命令可以连续地向某一台主机发送最大数据包,这样就有可能导致对方的系统资源耗尽或是网络堵塞.由于目前的电脑硬件配置以及网络带宽都非常高,因而"死亡之ping"已很难发挥作用,但这类攻击的方式有一个统一的名字--拒绝服务攻击"DoS(Denial of Service)&qu

[翻译]现代Linux系统上的栈溢出攻击【转】

转自:http://www.codeweblog.com/%E7%BF%BB%E8%AF%91-%E7%8E%B0%E4%BB%A3linux%E7%B3%BB%E7%BB%9F%E4%B8%8A%E7%9A%84%E6%A0%88%E6%BA%A2%E5%87%BA%E6%94%BB%E5%87%BB/ 现代Linux系统上的栈溢出攻击 2012.12.21 - 06:56 — jip 预备知识: 对C语言和 X86_64 汇编语言有基本的了解 ++++++++++++++++++++++++

1.tcp协议 三次握手建链接 四次挥手断开链接 tcp协议的状态 syn洪水攻击与半连接池 互联网协议详解 3. socket介绍 4. 基于socket来编写C/S架构的软件

网络=底层的物理连接介质+互联网协议(就是计算机界的英语) OSI七层 应用层(应用层\表示层\会话层):http,ftp 传输层:tcp/udp 网络层:ip 数据链路层:ethernet 物理层:发送电信号 1. 互联网协议,可看作是一个安装在计算机上的包 2. 交换机:有mac地址学习功能 3. ARP(地址解析协议),可将IP地址转成mac地址,mac地址转成IP地址 4. IP+端口可锁定一架计算机上的某个应用程序 5. IP 和子网掩码->局域网地址(子网地址) 6.  TCD又称好

Linux编程之ICMP洪水攻击

我的上一篇文章<Linux编程之PING的实现>里使用ICMP协议实现了PING的程序,ICMP除了实现这么一个PING程序,还有哪些不为人知或者好玩的用途?这里我将介绍ICMP另一个很有名的黑科技:ICMP洪水攻击. ICMP洪水攻击属于大名鼎鼎的DOS(Denial of Service)攻击的一种,一种是黑客们喜欢的攻击手段,这里本着加深自己对ICMP的理解的目的,也试着基于ICMP写一段ICMP的洪水攻击小程序. 洪水攻击(FLOOD ATTACK)指的是利用计算机网络技术向目的主机发

windows系统和Linux系统之间拷贝文件攻击--pscp

putty secure copy == pscp,是putty提供的文件传输攻击,通过ssh两件,在两台机器之间安全传输文件 获取pscp工具:http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html,将.exe文件放在windows的system32文件夹下,或者自己设置环境变量.然后在dos命令窗口下即可直接调用. -r 复制目录下所有文件 -l 对方机器(Linux)用户名(root) -pw 密码 使用方法: 1.本

linux系统收到SYN但不回SYN+ACK问题排查

一,背景: 今天下午发现线上的一台机器从办公网登录不上且所有tcp端口都telnet不通,但是通过同机房的其它机器却可以正常访问到出问题的机器.于是就立即在这台出问题的server端抓包分析,发现问题如下:server端收到了本地pc发的SYN包,但是没有回syn+ack包,所以确认是server端系统问题.tcpdump抓包如下: 二,排查 1,发现系统没有任何负载 2,网卡也没有丢包 3,iptables策略也都没问题 4,系统的SYN_RECV连接很少,也没超限 5,系统的文件描述符等资源

tcp三次握手和syn 洪水攻击

1. 连接后,所有的 ack 为1才有效(连接后,ack 也一般都是1) 2. 建立连接3次握手, 如何确认对方收到了你发的包, seq 是自己发出去的,自己知道seq的值.所以怎么确认对方收到了自己的包呢? seq+ 1 == ACK ,相等就说明对方收到了.三次握手,最主要的是序列号的确认机制这才是tcp3次握手的核心.序列号取值范围(2的32次方减去1,循环重新开始). 序列号的作用: 对数据包进行重组!使用序列号来重组数据 arp -n 第3步中,Client 断开连接 4次挥手.