博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
也谈nginx的安全限制
阅读量:6431 次
发布时间:2019-06-23

本文共 2340 字,大约阅读时间需要 7 分钟。

一、Nginx安全限制

  前面已经详细介绍了nginx负载均衡的配置以及nginx本身自带的的一些安全措施,详情请参考“”,但毕竟nginx自带的安全功能有限也不太适合复杂的应用环境,本文可作为上一篇文章的续集。

  随着业务的增加,网络连接的流量越来越大,合理的控制访问请求及连接数非常重要,否则仍会出现失去响应的情况。

二、增加WAF模块

  ngx_lua_waf是一个基于ngx_lua的web应用防火墙,主要防止sql注入,本地包含,部分溢出,fuzzing测试,xss,***F等web***;防止svn/备份之类文件泄漏;防止ApacheBench之类压力测试工具的***;屏蔽常见的扫描***工具,扫描器;屏蔽异常的网络请求;屏蔽图片附件类目录php执行权限;防止webshell上传。

git clonehttp://luajit.org/git/luajit-2.0.gitmakemake installwget https://github.com/simpl/ngx_devel_kit/archive/v0.2.19.tar.gz –-no-check-certificatetar zxvf v0.2.19.tar.gzwgethttps://github.com/openresty/lua-nginx-module/archive/v0.9.13.tar.gz--no-check-certificate

./configure--prefix=/usr/local/nginx --conf-path=/etc/nginx/nginx.conf--pid-path=/var/run/nginx/nginx.pid --error-log-path=/var/log/nginx/nginx.log--http-log-path=/var/log/nginx/nginx-http.log --add-module=/root/ngx_devel_kit-0.2.19/--add-module=/root/lua-nginx-module-0.9.13/--with-ld-opt="-Wl,-rpath,$LUAJIT_LIB"make –j2service nginx stopmv/usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.origcp ./objs/nginx/usr/local/nginx/sbin/nginxservice nginx start

wgethttps://github.com/loveshell/ngx_lua_waf/archive/master.zip--no-check-certificateunzip mastermv ngx_lua_waf-master//etc/nginx/wafmkdir -p/var/log/nginx/hackchmod -R 755/var/log/nginx/hack/

三、增加fail2ban防止非法IP

  fail2ban是一款日志扫描软件,它可以从日志中扫描异常记录结合相应的识别规则并通过iptables封禁恶意的用户IP防止进一步的***。

  安装fail2ban非常简单,直接通过yum installfail2ban就可以完成安装,它的配置文件是/etc/fail2ban/jail.conf,所有的过滤策略则保存在/etc/fail2ban/filter.d/下。jail.conf的配置内容如下图所示:

  我们可以先对照nginx的日志查看,之前的nginx中已经对IP和服务请求数做了限制,对于同一IP多次超过原有的请求限制的情况,我们可以使用fail2ban定义的规则(例如600秒内超过5次则封禁该IP2小时)。当然也可以根据实际情况自定义策略。

  首先分析nginx的日志记录,需注意过滤策略要和日志中的内容匹配,如下图所示。

  完成后重启fail2ban服务,你可以看到fail2ban的日志中封禁及解封IP的信息,如下图所示。

  也可以通过fail2ban-client指令查看指定策略的应用情况或使用“fail2ban-client -D”查看配置文件的相关内容。

四、查看nginx状态

  通过Nginx转发的方式实现负载均衡,除了可以通过分析访问日志记录的方式来统计转发次数外还可以使用nginx自带的状态统计功能来实现。它依赖于nginx的“ngx_http_stub_status_module”模块,请确保该模块在当前版本中存在。

  启用它的方式很简单,具体配置如下图所示。

  配置完成并重新加载nginx服务后可以通过浏览器访问目标服务器的8000端口来查看转发状态,如下图所示。

active connections:23 #nginx 正处理的活动连接数 23个。

server accepts handled requests

nginx启动到现在共处理了 24个连接 ,

nginx启动到现在共成功创建24 次握手 ,

请求丢失数=(握手-连接),可以看出,我们没丢请求

总共处理了50 次请求。

Reading :nginx 读取到客户端的 Header 信息数。

Writing : nginx 返回给客户端的 Header 信息数。

Waiting : Nginx 已经处理完正在等候下一次请求指令的驻留连接。开启 keep-alive 的情况下,这个值等于 active – (reading + writing)。



转载地址:http://tttga.baihongyu.com/

你可能感兴趣的文章
20161026学习笔记
查看>>
Docker入门到实践
查看>>
HDU 2063 单向二分匹配裸题(超恶心呢)
查看>>
HDU 4451 简单搭配问题
查看>>
POI之excel导入导出
查看>>
《构建之法》读后感
查看>>
STL--queue学习笔记
查看>>
从《浪潮之巅》看互联网
查看>>
MySQL高级-查询截取分析
查看>>
《程序员代码面试指南》第三章 二叉树问题 在二叉树中找到两个节点的最近公共祖先...
查看>>
yii2之RBAC权限控制
查看>>
使用Double搭建服务群集
查看>>
MFC打开目录
查看>>
DAM的使用结合串口和中断以及GPIO。
查看>>
ul动态添加click事件+js滑动条滚动
查看>>
poi 下拉框实现
查看>>
vb.net调用存储过程简单示例
查看>>
炮兵阵地
查看>>
如何使用Visual Studio构建libiconv
查看>>
C++入门一
查看>>