也谈nginx的安全限制

一、Nginx安全限制

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

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

二、增加WAF模块

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

git clonehttp://luajit.org/git/luajit-2.0.git
make
make install
wget https://github.com/simpl/ngx_devel_kit/archive/v0.2.19.tar.gz –-no-check-certificate
tar zxvf v0.2.19.tar.gz
wgethttps://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 –j2
service nginx stop
mv/usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.orig
cp ./objs/nginx/usr/local/nginx/sbin/nginx
service nginx start

wgethttps://github.com/loveshell/ngx_lua_waf/archive/master.zip--no-check-certificateunzip master
mv ngx_lua_waf-master//etc/nginx/waf
mkdir -p/var/log/nginx/hack
chmod -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)。




生产环境下的负载均衡配置

nginx配置指南之一

nginx操作指南之二

时间: 2024-10-31 17:42:28

也谈nginx的安全限制的相关文章

浅谈nginx(一)

此文主要介绍nginx的基础知识及其基本配置,一为巩固,二为记录 知识点: nginx的作用 nginx的基本配置框架 nginx一些常用模块介绍 1.什么是nginx     nginx是一款免费的,开源的,高性能的HTTP服务软件,它不仅能     够支持反向代理服务器,而且也能当作IMPA/POP3代理服务.它稳     定, 配置丰富,设置简单,而且占用系统硬件资源少!这些特性     使得它深受广大用户喜欢. 1.1 Nginx的程序架构 Nginx架构: master/worker

【转】浅谈Nginx负载均衡与F5的区别

前言 笔者最近在负责某集团网站时,同时用到了Nginx与F5,如图所示,负载均衡器F5作为处理外界请求的第一道"墙",将请求分发到web服务器后,web服务器上的Nginx再进行处理,静态内容直接访问本地门户,动态数据则通过反向代理指向内网服务. 其实Nginx和F5这两者均可用作网站负载均衡,那二者有什么区别呢?笔者在此浅谈下Nginx与F5的一些区别. 目前很多网站或应用在设计之初都会为高并发的数据请求做负载均衡,不差钱的土豪用户一般会直接买F5硬件设备作为其负载均衡器,原因不用多

浅谈Nginx负载均衡与F5的区别

转自:http://www.cnblogs.com/brookzhang/p/6600861.html 前言 笔者最近在负责某集团网站时,同时用到了Nginx与F5,如图所示,负载均衡器F5作为处理外界请求的第一道"墙",将请求分发到web服务器后,web服务器上的Nginx再进行处理,静态内容直接访问本地门户,动态数据则通过反向代理指向内网服务. 其实Nginx和F5这两者均可用作网站负载均衡,那二者有什么区别呢?笔者在此浅谈下Nginx与F5的一些区别. 目前很多网站或应用在设计之

浅谈Nginx(二)—http下server配置

此文介绍Nginx下的http模块,着重介绍http模块下的server服务 --------依据"马哥教育"主讲人马永亮导师的上课笔记整理------- 目录  一. http相关的基本配置:     1) listen                2) server_name           3) tcp_nodelay     4) sendfile      二. 定义路径相关的配置:     1)root path     2)location     3)alias 

[转自SA]浅谈nginx的工作原理和使用

nginx apache 简单对比 nginx 相对 apache 的优点: 轻量级,同样起web 服务,比apache 占用更少的内存及资源 抗并发,nginx 处理请求是异步非阻塞的,而 apache 则是阻塞型的,在高并发下 nginx 能保持低资源低消耗高性能 高度模块化的设计,编写模块相对简单 社区活跃 配置简洁 apache 相对nginx 的优点: rewrite ,比 nginx 的 rewrite 强大 模块超多 少 bug ,nginx 的 bug 相对较多 超稳定 配置复杂

浅谈Nginx服务器的内部核心架构设计

前言Nginx 是一个 免费的,开源的,高性能 的 HTTP 服务器和 反向代理,以及 IMAP / POP3 代理服务器. Nginx 以其高性能,稳定性,丰富的功能,简单的配置和低资源消耗而闻名.Nginx是一个 Web 服务器,也可以用作 反向代理,负载均衡器 和 HTTP 缓存. 很多高知名度的网站都使用 Nginx,如:Netflix,GitHub,SoundCloud,MaxCDN 等.正文 Nginx的整体架构1.1. 主进程 Nginx 启动时,会生成两种类型的 进程*,一个是

浅谈nginx处理事件原理

nginx是一款自由的.开源的.高性能的HTTP服务器和反向代理服务器,作为HTTP服务器的后起之秀,相比较于web服务器软件老大哥Apache有着很大的改进地方,主要在性能方面NGINX占用的系统资源更少,支持更多的并发连接数(特别是在静态小文件场景下),达到更高的访问效率.在功能上NGINX不但是个优秀的web服务器软件,还具有反向代理负载均衡,相当于LVS,Haproxy.缓存服务器相当于Squid等专业的缓存服务器软件Nginx的负载均衡模块采用两种方法:轮转法:它处理请求就像纸牌游戏一

谈nginx配置

近日看<许式伟的架构课>中一段关于系统分解的描述所有思考,略记于此. 原文片段如下: 系统设计,简单来说就是 "对系统进行分解" 的能力.这个阶段核心要干的事情,就是明确子系统的职责边界和接口协议,把整个系统的大框架搭起来. 那么怎么分解系统? 首先我们需要明确的是分解系统优劣的评判标准.也就是说,我们需要知道什么样的系统分解方式是好的,什么样的分解方式是糟糕的. 最朴素的评判依据,是这样两个核心的点: 功能的使用界面(或者叫接口),应尽可能符合业务需求对它的自然预期: 功

趣谈Nginx反向代理

无论你用浏览器还是APP访问多数网站,到达的第一站就是Nginx. 后来者居上的Nginx 千禧年前后,互联网业务迎来了高速发展,老牌的Web服务器都无法满足高性能.高可靠的市场需求. 一个开源的.流行的HTTP和反向代理服务器在2004年应运而生,它就是Nginx.它作为HTTP服务器可以用较少的内存来提供可靠的静态站点服务,同时作为反向代理支持HTTP.电子邮件.TCP和UDP等多种协议,可以用作多个上游服务器的流量入口.所谓后来者居上,Nginx出道十五年,稳居市场占用率榜首. (Netc