场景

  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请求

web安全——代理(nginx)的更多相关文章

  1. web性能优化——代理(nginx)

    简介 一个很好的原则是调优时每次只个性一个配置.如果对配置的个性不能提高性能的话,改回默认值 优化必须要通过性能测试.不能意淫,需要前后对比,真实说明问题. 场景 优化nginx. 确保每次请求控制一 ...

  2. [C#]使用 C# 代码实现拓扑排序 dotNet Core WEB程序使用 Nginx反向代理 C#里面获得应用程序的当前路径 关于Nginx设置端口号,在Asp.net 获取不到的,解决办法 .Net程序员 初学Ubuntu ,配置Nignix 夜深了,写了个JQuery的省市区三级级联效果

    [C#]使用 C# 代码实现拓扑排序   目录 0.参考资料 1.介绍 2.原理 3.实现 4.深度优先搜索实现 回到顶部 0.参考资料 尊重他人的劳动成果,贴上参考的资料地址,本文仅作学习记录之用. ...

  3. nginx反向代理nginx,RealServer日志打印真实ip

    title: nginx反向代理nginx,RealServer日志打印真实ip date: 2016-05-11 19:15:37 tags: --- nginx反向代理nginx,RealServ ...

  4. nginx入门与实战 安装 启动 配置nginx Nginx状态信息(status)配置 正向代理 反向代理 nginx语法之location详解

    nginx入门与实战 网站服务 想必我们大多数人都是通过访问网站而开始接触互联网的吧.我们平时访问的网站服务 就是 Web 网络服务,一般是指允许用户通过浏览器访问到互联网中各种资源的服务. Web ...

  5. Web服务器之Nginx详解(操作部分)

    大纲 一.前言 二.Nginx 安装与配置 三.Nginx 配置文件详解 四.Nginx 命令参数 五.配置Nginx提供Web服务 六.配置Nginx的虚拟主机 七.配置Nginx的用户认证 八.配 ...

  6. Linux系统WEB服务之Nginx基础入门

    一.Nginxi简介 Nginx是什么?它是一个开源.高性能的WEB服务器软件和代理服务器软件,由俄罗斯人Igor Sysoev 开发实现.它的功能主要分三类,第一是它作为一个WEB服务软件使用:第二 ...

  7. web中间件之nginx

    web中间件之nginx https://www.jianshu.com/p/d8bd75c0fb1b   对nginx正向代理和反向代理理解特别好的一篇文章. 一.nginx nginx缺点,负载均 ...

  8. 跨平台web调试代理工具---whistle

    whistle是基于Node实现的跨平台web调试代理工具,支持windows.mac.linux等所有安装了Node的操作系统,可以部署在本地机器.虚拟机或远程服务器,并通过本地网页查看或修改HTT ...

  9. Hadoop-2.2.0中国文献—— Web应用代理

    Web应用代理是YARN的一部分. 默认地,它会作为 Resource Manager(RM)的一部分来执行, 可是也能够配置成独立执行的模式.使用代理的原因就是减少通过YARN的web攻击的可能性. ...

  10. 与http协作的web服务器--代理、网关、隧道

    一台服务器可以搭建多个web站点 代理: 接受客户端发送的请求,转发给其他服务器,然后接受服务器的返回结果(响应)再返回给客户端.每次经过代理服务器,就会追加写入via首部信息. 按两种基准分类.一种 ...

随机推荐

  1. 0006 《SQL必知必会》笔记02-计算字段与函数

    1.从数据库中检索出的数据往往并不是最后要展示的格式,可以在数据库端或者客户端应用程序中完成转换和格式化,但一般说来,在数据库服务器中完成要快很多. 2.拼接字段:将几个值连接到一起构成单个值.Ora ...

  2. 用批处理来自动化项目编译及部署(附Demo)

    阅读目录 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 介绍 详细 处理 结论 Demo下载 介绍 一个项目从立项开始,可能就已经根据公司的配置模板将 ...

  3. win8.1 user profile service 服务登录失败

    在Win 8.1 上新建个用户后,不能登录. 出现 user profile service 服务登录失败. 无法加载用户配置文件. 网上大部分相同提示的问题是有关已有账号不能再次登陆的. 解决方式是 ...

  4. js 数组删除指定元素

    Array.prototype.remove = function(obj) { for (var i = 0; i < this.length; i++) { var temp = this[ ...

  5. Javascript Function()中的降龙十八掌

    原文地址:http://tutorialzine.com/2014/08/what-does-this-function-do/ 下面列出十八个JS function,看你知道这些函数是干嘛用的,你能 ...

  6. mongodb主从数据同步

    1. 下载mongodb 下载地址:https://www.mongodb.org/dl/linux/x86_64-rhel62 2. 解压tar zxf mongodb-linux-x86_64-r ...

  7. oracle--trunc与to_char的区别

    trunc取得是天(可比较),而to_char取得是数值(可计算): 但trunc(date) 具有与to_char(date) 相似的功能,但有区别:   trunc(sysdate,'cc')  ...

  8. C++变量和函数

    变量可根据作用域和类型分为 (动态)全局变量,静态全局变量,(动态)局部变量,静态局部变量 全局变量:定义在函数外,在源程序其他cpp文件中访问需要extern修饰 静态局部变量:生命周期相比局部变量 ...

  9. Android Studio中使用android:src="@drawable/ic_launcher"报错

    今天尝试着安装了Android Studio,界面确实不错,列表什么的也改了很多. 然后新建工程,习惯性在activity_main那里加上一段代码测试看看: <ImageView androi ...

  10. 网页中显示pdf

    1.<embed width="800" height="600" src="test_pdf.pdf"> </embed ...