DDOS攻击,这种攻击廉价且效果出众,直接通过第四层网络协议用他的带宽把你的带宽顶掉,造成网路阻塞,暂时的解决方法只有三种,第一种就是你要够有钱,买强大的高级防火墙,或者使用的带宽足够大,无视这些网络流量。第二种是技术足够强,用类如DPDK的高效数据包处理驱动,开发出流量清洗服务,把垃圾网络包过滤掉,不过同时也会影响正常的网络包,增加延时。第三种就是钱不多的公司多数使用的方案,换ip(废话)。
还有一种网络攻击其实比起DDOS更频繁出现,就是CC(Challenge Collapsar)攻击,一般来说是利用网站代码漏洞,不停地发大量数据包请求,造成对方服务器回应这些请求导致资源耗尽,一直到宕机崩溃。这种攻击属于第七层的网络协议,一方面在服务器层面是正常的请求,所以这种情况想根本解决问题,只能从代码入手。但是另一方面,也就可以用其他来限制他访问,例如nginx的配置上也是能稍微防一下。
!!!具体看需求进行相应nginx配置!!!!
!!!具体看需求进行相应nginx配置!!!!
!!!具体看需求进行相应nginx配置!!!!
一般配置
http {
#默认是不允许列出整个目录的
autoindex off;
#默认是会在返回的数据包中显示版本号 ,开启隐藏
server_tokens off;
#设置客户端请求头读取超时时间,超过这个时间还没有发送任何数据,Nginx将返回“Request time out(408)”错误
client_header_timeout 15;
#设置客户端请求主体读取超时时间,超过这个时间还没有发送任何数据,Nginx将返回“Request time out(408)”错误
client_body_timeout 15;
#上传文件大小限制
client_max_body_size 100m;
#指定响应客户端的超时时间。这个超过仅限于两个连接活动之间的时间,如果超过这个时间,客户端没有任何活动,Nginx将会关闭连接。
send_timeout 600;
#设置客户端连接保持会话的超时时间,超过这个时间,服务器会关闭该连接。
keepalive_timeout 60;
#设置网站根目录的访问权限,allow就是允许访问的ip和ip段,deny就是禁止访问的ip和ip段
location / {
allow 192.168.1.1/24;
allow 120.76.147.159;
deny 119.23.19.240;
deny 192.168.3.1/24;
deny all;
}
#限制访问个别目录或文件后缀名
#在访问uploads、p_w_picpaths目录时,访问php|php5|jsp后缀的文件会返回403代码,也就是不给执行代码了
location ~ ^/(uploads|p_w_picpaths)/.*\.(php|php5|jsp)$ {
allow 192.168.1.1/24;
return 403;
}
#禁止访问所有目录下的sql|log|txt|jar|war|sh|py后缀的文件,这些是什么文件就不详细说了。
location ~.*\.(sql|log|txt|jar|war|sh|py) {
deny all;
}
#有时候,有些访问记录不想保存到日志里面,例如静态图片
location ~ .*\.(js|jpg|JPG|jpeg|JPEG|css|bmp|gif|GIF|png)$ {
access_log off;
}
#如果想用户体验好一点,可以建立一个报错页面,然后让这个页面跳转到其他页面
error_page 403 http://www.example.com/errorfile/404.html;
#判断特定条件,然后拒绝服务
#判断当http_user_agent返回的结果中包含UNAVAILABLE关键字,则返回403错误。
location / {
if ($http_user_agent ~ UNAVAILABLE) {
return 403;
}
}
}