用 Nginx 限制模块减轻 DDoS 攻击

vi /etc/rc.local
  加入如下文本
sysctl kern.ipc.maxsockets=100000    ##增加并发的socket,对于ddos很有用
sysctl kern.ipc.somaxconn=65535    ##打开文件数
sysctl net.inet.tcp.msl=2500      ##timeout时间
  优化Linux内核参数
vi /etc/sysctl.conf
  在末尾增加如下文本
net.core.netdev_max_backlog =  32768
net.core.somaxconn = 32768
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216

net.ipv4.tcp_max_syn_backlog = 65536
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 2
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_mem = 94500000 915000000 927000000
net.ipv4.tcp_max_orphans = 3276800
net.ipv4.ip_local_port_range = 1024  65535
        方法二: Nginx 内核带有限制并发和速率模块,我们可以用这个模块来缓和 VPS 的 Load。 我们需要 Nginx 的: limit_zone 语法:limit_zone zone_name $variable memory_max_size 环境:http limit_conn 语法:limit_conn zone_name max_clients_per_ip 环境:http, server, location limit_rate (可选) 语法:limit_rate speed 环境:http, server, location, if in location 例子:
# 警告!例子仅供参考!记得备份原来的文件!
# Nginx.conf 的位置:/usr/local/nginx/conf/nginx.conf
http{
#... 省掉 N 字
# 下面这段受攻击时用,平常不要用
# 来自 http://cd34.com/blog/webserver/ddos-attack-mitigation/
# //------------------------------------
client_body_timeout 10;
# 该指令用于设置读取客户端请求内容的超时时间,默认是 60,
client_header_timeout 10;
# 该指令用于设置读取客户端请求 Header 头信息的超时时间,默认是 60
keepalive_timeout 10;
# 该指令用于设置 keep-alive 连接超时时间,之后服务器会中断连接,默认是 75
send_timeout 10;
# 该指令用于设置发送给客户端的应答超时时间。超时时间是指进行了两次 TCP 握手,
# 还没有转为 established 状态的时间。
# 如果超过这个时间,客户端没有响应,Nginx 关闭连接
# //----------------------------------
limit_zone one $binary_remote_addr 16m;
# one = 区名,可以随便你叫,后面要一致(看 limit_conn)
# $binary_remote_addr = 用二进制来储存客户端的地址,1 MB 可以储存 32000 个会话
}
server{
#... 省掉 N 字
limit_conn one 2;
# 允许 2 个连接(one 要跟 limit_zone 的变量对应)
limit_rate_after 5m;
# 传送 5Mb 后开始限速(就算没用上,默认是 1m)
limit_rate 100k;
# 限速为 100KB/秒
}
  总结: 1、总速度可以去到 200KB/秒左右,一个连接可以去到 100KB,两个就 200KB(数学题) 2、如果你在下载, 又打开网页就,会返回 503 “Service unavailable”,因为太多连接 3、缓解 DDoS 还得靠那几个 timeout 的部分 重要提醒: 1、限制模块是不能防止 DDoS,它是用来减小 Load 2、真正的方法应该是,找出那个攻击者 IP,再用 iptables 封掉它 3、非必要时,不要用这个限制模块,它会给你的网站带来不便

转载于:https://my.oschina.net/mmfei/blog/1548502

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值