linux内核参数防DDOS并提高nginx访问性能

时间:2020-05-30
本文章向大家介绍linux内核参数防DDOS并提高nginx访问性能,主要包括linux内核参数防DDOS并提高nginx访问性能使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

linux内核参数防DDOS并提高nginx访问性能

说明:通过简单的内核参数设置,缓解一定的ddos攻击及增加nginx性能的效果
注:通过编辑/etc/sysctl.conf配置文件后sysctl -p 进行永久生效。

net.ipv4.icmp_echo_ignore_broadcasts = 1
关闭该功能,从而防止icmp风暴,防止网络阻塞,避免smurf攻击,不响应 icmp echo 请求广播,
忽略这些子网广播消息(三层攻击)

Smurf攻击:

通过使用将回复地址设置成受害网络的广播地址的ICMP应答请求(ping)数据包,来淹没受害主机,最终导致该网络的所有主机都对此ICMP应答请求做出答复,导致网络阻塞。更加复杂的Smurf将源地址改为第三方的受害者,最终导致第三方崩溃。

net.ipv4.icmp_ignore_bogus_error_responses = 1
开启恶意icmp错误消息保护

net.ipv4.tcp_syncookies = 1
开启SYN洪水攻击保护,保护原理:当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击
SYN洪水攻击:常见的有DDoS,就是让你的服务器资源耗尽,无法提供正常的服务,间接地拒绝
TCP SYN泛洪发生在OSI第四层,这种方式利用TCP协议的特性,就是三次握手。攻击者发送TCP SYN,SYN是TCP三次握手中的第一个数据包,而当服务器返回ACK后,该攻击者就不对其进行再确认,那这个TCP连接就处于挂起状态,也就是所谓的半连接状态,服务器收不到再确认的话,还会重复发送ACK给攻击者。这样更加会浪费服务器的资源。攻击者就对服务器发送非常大量的这种TCP连接,由于每一个都没法完成三次握手,所以在服务器上,这些TCP连接会因为挂起状态而消耗CPU和内存,最后服务器可能死机,就无法为正常用户提供服务了。

net.ipv4.conf.all.log_martians = 1
net.ipv4.conf.default.log_martians = 1
开启并记录欺骗,源路由和重定向包

net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
处理无源路由的包

net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
开启反向路径过滤

net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.all.secure_redirects = 0
net.ipv4.conf.default.secure_redirects = 0
确保无人能修改路由表,防止arp欺骗

net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
不充当路由器

kernel.exec-shield = 1 #表示禁止执行栈中的代码,如此一来,即便覆盖了函数的返回地址导致栈溢出,也无法执行shellcode
kernel.randomize_va_space = 1 #每次将程序加载到内存时,进程地址空间的堆栈起始地址都不一样,动态变化,导致猜测或找出地址来执行shellcode 变得非常困难
开启execshild,阻止缓冲区溢出攻击

fs.file-max = 65535
简单的说, max-file表示系统级别的能够打开的文件句柄的数量, 而ulimit -n控制进程级别能够打开的文件句柄的数量.
增加系统文件描述符限制

kernel.pid_max = 65536
允许更多的PIDs (减少滚动翻转问题),最大的线程数

net.ipv4.ip_local_port_range = 2000 65000
增加系统IP端口限制

net.ipv4.tcp_rmem = 4096 87380 8388608
net.ipv4.tcp_wmem = 4096 87380 8388608
增加TCP最大缓冲区大小,最小,默认和最大可使用的字节数

net.core.rmem_max = 8388608
net.core.wmem_max = 8388608
net.core.netdev_max_backlog = 5000
net.ipv4.tcp_window_scaling = 1
Tcp窗口等,可参考tcp报文头,增加传输速率

配置截图:

vi /etc/sysctl.conf

执行:sysctl -p

原文地址:https://www.cnblogs.com/zoer/p/12993345.html