web安全——代理(nginx)

时间:16-07-19 来源: 作者: 点击:


场景
1. 过滤非正常用户使用的 http 请求。 2. 限制正常用户使用的范围(下载速度、访问频率等)。 3. 通过架构规划来提升安全。 4. 能自动解决 http 请求问题。

代理自身的安全
1. 千万不要使用 root 启动!!! 2. 关闭服务器的信息。 server_tokens off; 3. 关闭掉不使用的模块。


过滤 http
把所有非法的 http 请求直接拒绝。因为非法的请求往往就是在攻击服务器。

过滤非法的 http method
# 只允许 get,post,head 方式的请求,其他的不安全也没有用到,不接受 if($request_method !~^(GET|HEAD|POST)$){ return404; }

过滤非法用户代理
# 非法代理直接拒绝 # 有一些是爬虫工具,有一些是搜索外国的搜索引擎,有一些是压力工具 if( $http_user_agent ~*"ApacheBench|WebBench|HttpClient|Curl|Wget|^$|AhrefsBot|BLEX Bot|^-$|WordPress"){ return444; }

控制 http 请求后缀

有一些攻击都是扫描类似.base_history 等。所以除了合法的请求,其他的都拒绝。使用 的是 白名单 的思维方式

# 只接受这些后缀 location ~(\.(json|html|jsp)|/)${ ... }

控制文件上传
上传的文件只有读的权限,没有执行的权限。访问 webshell 的产生。

控制使用
虽然请求是正常的,但是要控制使用服务的资源。

下载限速
针对于静态资源,特别是大文件,需要限速。

server { server_name xxx.xxx.xxx; #控制下载流量 limit_rate 100k; }

控制访问的 url 的频率和频次
在关键业务的地方,需要做更细粒度的控制。 比如说一个 ip 一天只能免费访问一百次,超过了就禁止访问。 具体的实现思路:通过 lua,redis 更精准的控制访问粒度。

构架规划
通过构架的规划去增加安全也是很有必要的。

动静分离
把提供静态资源和动态资源独立部署。 更严格的控制动态资源的请求类型。

更严格的控制静态资源的权限。 也解决一定的安全问题。

静态化
把一旦生成不会变化的动态请求资源,变成静态的文件。这样就可以预防很多的安全问 题。 具体的实现思路:通过 nginx 去实现静态化。

自动解决 http 请求问题
主要是为了预防 ddos 和 cc。可以自动通过机制去处理。 主要通过定时分析访问日志,根据不同的危险等级做不同的处理。难点在于危险等级和 危险阀值的设定。 比如: 1. 低危的限制一段时间即可以继续使用。通过控制使用里的 控制访问的 url 的频率和

频次 即可。
2. 中危的通过 nginx 直接返回 403。可以通过 nginx 的 deny,geo 来实现。 3. 高危的通过防火墙直接拒绝服务。结合防火墙来实现。


声明:本文转载于网络,文章链接:http://www.nd9p.com/4945.html