Linux内核参数调优以应对SYN攻击

简介: Linux内核参数调优以应对SYN攻击

今天继续给大家介绍Linux运维相关知识,本文主要内容是Linux内核参数调优以应对SYN攻击。

一、SYN攻击简介
所谓SYN攻击,即利用TCP三次握手原理,向服务器发送大量的SYN数据包,却不响应服务器反馈的SYN+ACK数据包,导致服务器的网络、内存等资源被大量占用,从而导致正常用户无法访问,起到了拒绝服务攻击的目的。
如果想要杜绝SYN攻击,那么我们应该设置服务器减少对ACK数据包的等待时间,减少对SYN+ACK数据包的重发次数,增大网络连接队列的长度等等,具体参数设置如下:

二、相关内核参数简介
防止SYN攻击的相关内核参数如下所示:
1、net.ipv4.tcp_synack_retries
该参数表示服务器在收到客户端的SYN数据包并发送SYN+ACK数据包后,如果没有收到客户端的ACK数据包的重发SYN+ACK数据包的次数。在默认情况下,该值设置为5,即表示服务器会尝试发送5次SYN+ACK数据包,如果依旧没有收到响应,则中断链接,不再进行尝试。
2、net.ipv4.tcp_max_syn_backlog
该参数表示SYN队列的长度,默认为128,我们可以将该参数设置为20480,以容纳更多的网络链接数。
3、fs.file-max
该参数表示系统允许的文件句柄的最大数目,TCP连接的建立需要占用文件句柄,因此我们可以将该参数设置的大一点以应对大量的TCP链接请求。
4、net.core.somaxconn
该参数表示socket监听队列长度,系统在默认情况下会将已经收到但是还没有处理的request请求放入到该队列中,当该队列满后就无法处理其他的request请求。因此增大该队列的长度可以应对更多的TCP连接请求。但是也会消耗系统的内存。
5、net.core.wmem_max
该参数表示最大的TCP数据发送缓存,单位为字节。
6、net.core.rmem_max
该参数表示最大的TCP数据接收缓存,单位为字节。
7、net.core.netdev_max_backlog
该参数表示当网络设备接收数据包的速率大于内核处理数据包速率时,允许将数据包送入队列的最大数目。
8、net.ipv4.ip_local_port_range
该参数表示本机主动连接其他设备时的端口分配范围,通常设置为10000-65535,防止占用知名端口。
9、net.ipv4.tcp_syncookies
该参数默认为0,表示关闭SYN Cookies,我们可以将该参数设置为1表示开启该功能。SYN Cookies表示当出现SYN等待队列溢出时,启用cookies来处理,可以防范少量的SYN攻击。
10、net.ipv4.tcp_tw_reuse
该参数如果设置为1,则表示允许将TIME-WAIT sockets重新应用于新的TCP连接,如果设置为0,则表示关闭该功能。在默认情况下,该参数设置为0.
11、net.ipv4.tcp_syn_retries
表示当该设备向其他设备发送TCP SYN包尝试建立TCP连接时,如果对方不响应(有可能是网络丢包或者是对方服务忙),则重新发送TCP SYN数据包的次数。
12、net.ipv4.tcp_tw_recycle
该参数表示是否开启TCP连接中TIME-WAIT sockets快速回收,在默认情况下设置为0,表示不回收,如果设置为1,则表示回收。
13、net.ipv4.tcp_fin_timeout
该参数表示对于本端断开的socket连接,TCP保持在FIN-WAIT-2状态的时间,默认为60。

三、最终配置
最终,综合上述参数,我们需要在/etc/sysctl.conf文件的最后写入如下配置:

net.ipv4.tcp_synack_retries = 0
net.ipv4.tcp_syn_retries = 1
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.rmem_max = 1024123000
net.core.wmem_max = 16777126
net.core.netdev_max_backlog = 165536
net.ipv4.ip_local_port_range = 10000 65535
1
2
3
4
5
6
7
8
9
10
11
12
13
完成后的配置文件如下所示:

原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200
————————————————

                        版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/weixin_40228200/article/details/125635110

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
4天前
|
Linux C语言
Linux内核队列queue.h
Linux内核队列queue.h
|
4天前
|
监控 Unix Linux
Linux操作系统调优相关工具(四)查看Network运行状态 和系统整体运行状态
Linux操作系统调优相关工具(四)查看Network运行状态 和系统整体运行状态
14 0
|
4天前
|
Linux
Linux操作系统调优相关工具(三)查看IO运行状态相关工具 查看哪个磁盘或分区最繁忙?
Linux操作系统调优相关工具(三)查看IO运行状态相关工具 查看哪个磁盘或分区最繁忙?
10 0
|
2天前
|
算法 Linux 调度
深度解析:Linux内核的进程调度机制
【4月更文挑战第12天】 在多任务操作系统如Linux中,进程调度机制是系统的核心组成部分之一,它决定了处理器资源如何分配给多个竞争的进程。本文深入探讨了Linux内核中的进程调度策略和相关算法,包括其设计哲学、实现原理及对系统性能的影响。通过分析进程调度器的工作原理,我们能够理解操作系统如何平衡效率、公平性和响应性,进而优化系统表现和用户体验。
12 3
|
9天前
|
负载均衡 算法 Linux
深度解析:Linux内核调度器的演变与优化策略
【4月更文挑战第5天】 在本文中,我们将深入探讨Linux操作系统的核心组成部分——内核调度器。文章将首先回顾Linux内核调度器的发展历程,从早期的简单轮转调度(Round Robin)到现代的完全公平调度器(Completely Fair Scheduler, CFS)。接着,分析当前CFS面临的挑战以及社区提出的各种优化方案,最后提出未来可能的发展趋势和研究方向。通过本文,读者将对Linux调度器的原理、实现及其优化有一个全面的认识。
|
12天前
|
Linux 内存技术
Linux内核读取spi-nor flash sn
Linux内核读取spi-nor flash sn
11 1
|
13天前
|
Linux Shell
Linux脚本获取输入参数判断文件还是文件路径
Linux脚本获取输入参数判断文件还是文件路径
12 4
|
18天前
|
存储 网络协议 Linux
【Linux 解惑 】谈谈你对linux内核的理解
【Linux 解惑 】谈谈你对linux内核的理解
21 0
|
22天前
|
编解码 Linux Shell
【Shell 命令集合 系统设置 】Linux 设置Linux系统的控制台参数和属性setconsole命令 使用指南
【Shell 命令集合 系统设置 】Linux 设置Linux系统的控制台参数和属性setconsole命令 使用指南
32 0