JAVA和Nginx 教程大全

网站首页 > 精选教程 正文

Web安全之代理(Nginx)

wys521 2024-09-07 03:07:29 精选教程 29 ℃ 0 评论


要想产品安全,那么不对外提供服务是最安全的。安全是基于信任的,如果信任失败了,则没有安全。比如你给一个ip加白名单,结果这个ip对你发动了安全攻击。在非常明确需要提供服务的时候才对外提供服务,即白名单。其他的全部禁止。对外提供服务要在控制和管理下,这次我们来看一下《Web安全之代理(Nginx)篇》这个话题。

一.场景

  1. 过滤非正常用户使用的http请求。

  2. 限制正常用户使用的范围(下载速度、访问频率等)。

  3. 通过架构规划来提升安全。

  4. 能自动解决http请求问题。

二.解决方案

1.代理自身的安全

  1. 千万不要使用root启动!!!

  2. 关闭服务器的信息。

    server_tokens off;

  3. 关闭掉不使用的模块。

2.过滤http

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

过滤非法的http method

# 只允许 get,post,head方式的请求,其他的不安全也没有用到,

不接受if ($request_method !~ ^(GET|HEAD|POST)$)

{ return 404; }

过滤非法用户代理

# 非法代理直接拒绝# 有一些是爬虫工具,有一些是搜索外国的搜索引擎,有一些是

压力工具if ( $http_user_agent ~* "ApacheBench|WebBench|

HttpClient|Curl|Wget|^$|AhrefsBot|BLEXBot|^-$|WordPress" )

{ return 444; }

控制http请求后缀

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

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

控制文件上传

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

3.控制使用

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

下载限速

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

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

控制访问的url的频率和频次

在关键业务地方,需要做更细粒度控制。

比如说一个ip一天只能免费访问一百次,超过了就禁止访问。

具体的实现思路:通过redis更精准的控制访问粒度。

4.构架规划

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

动静分离

把提供静态资源和动态资源独立部署。

更严格的控制动态资源的请求类型。

更严格的控制静态资源的权限。

也解决一定的安全问题。

静态化

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

5.自动解决http请求问题

主要是为了预防ddos和cc。可以自动通过机制去处理。主要通过定时分析访问日志,根据不同的危险等级做不同的处理。难点在于危险等级和危险阀值的设定。比如:

  1. 低危的限制一段时间即可以继续使用。通过控制使用里的控制访问的url的频率和频次即可。

  2. 中危的通过nginx直接返回403。可以通过nginx的deny,geo来实现。

  3. 高危的通过防火墙直接拒绝服务。结合防火墙来实现。

三.验证方法

  1. postman。可以模拟各种http请求

文中有不妥或者错误的地方还望指出,以免误人子弟。另外今天看到一句话特别的话,也在这里分享给大家:Never give up on something that you can't go a day without thinking about.

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表