• web安全——代理(nginx)


    场景

    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)$) {
        return 404;
    }
    
    

    过滤非法用户代理

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

    控制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. 高危的通过防火墙直接拒绝服务。结合防火墙来实现。

    验证方法

    1. postman。可以模拟各种http请求
  • 相关阅读:
    商户网站使用第三方支付的大致原理和实现
    ASP.NET MVC中检测浏览器版本并提示下载更新
    如何选择使用IEnumerable, ICollection, IList
    IEnumerable和IQueryable的区别以及背后的ExpressionTree表达式树
    IEnumerable是集合,IEnumerator是集合的迭代器
    ASP.NET MVC中使用Session来保持表单的状态
    在ASP.NET MVC中实现Select多选
    总结ASP.NET MVC视图页使用jQuery传递异步数据的几种方式
    在ASP.NET MVC4中使用Quartz.NET执行定时任务
    委托, 泛型委托,Func<T>和Action<T>
  • 原文地址:https://www.cnblogs.com/ansn001/p/5643711.html
Copyright © 2020-2023  润新知