

做了网站开发十几年,从未想像过自己开发的网站会受到ddos攻击,也不曾想像过自己能做到惹人攻击这一步,说不定是得罪了什么人…🤣
也许这是网站做到一定程度,所有网站SEOer都需要面对的一个问题…好,下面就开始研究一下这个问如何来解决
DDoS攻击的定义
分布式拒绝服务攻击DDoS是一种基于DoS的特殊形式的拒绝服务攻击,是一种分布的、协同的大规模攻击方式。单一的DoS攻击一般是采用一对一方式的,它利用网络协议和操作系统的一些缺陷,采用欺骗和伪装的策略来进行网络攻击,使网站服务器充斥大量要求回复的信息,消耗网络带宽或系统资源,导致网络或系统不胜负荷以至于瘫痪而停止提供正常的网络服务。与DoS攻击由单台主机发起攻击相比较,分布式拒绝服务攻击DDoS是借助数百、甚至数千台被入侵后安装了攻击进程的主机同时发起的集团行为。
NGINX防止DDoS攻击
//ngx_http_limit_req_module模块通过漏桶原理来限制单位时间内的请求数,一旦单位时间内请求数超过限制就会返回503错误。
http {
limit_req_zone $binary_remote_addr zone=one:10m rate=100r/s; //触发条件,所有访问ip 限制每秒10个请求
...
server {
...
location ~ \.php$ {
limit_req zone=one burst=5 nodelay; //执行的动作,通过zone名字对应
}
}
}
//1m内存可以保存16000会话
//限制单个IP的连接数
http {
limit_conn_zone $binary_remote_addr zone=addr:10m; //触发条件
...
server {
...
location /download/ {
limit_conn addr 2; // 限制同一时间内2个连接,超出的连接返回503
}
}
}
查看攻击IP
#netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
----------------------------------------------------
3 172.70.214.224
3 172.71.150.46
3 172.71.154.29
4 108.162.246.129
4 162.158.166.240
4 162.158.167.9
401 172.70.206.234 //找出攻击者的ip然后封掉
1471 127.0.0.1
前面的数字表示IP连接的次数,可见最后一个IP 172.70.206.234连接服务器401次,每个IP几个、十几个或几十个连接数都还算比较正常,如果像上面成百上千肯定就不正常了。