1. 程式人生 > >WAF安全應用防火牆(nginx+lua)

WAF安全應用防火牆(nginx+lua)

一、如果使用nginx簡單實現403和404,應該都不難,只需要在配置檔案中的server欄位中新增相應的內容即可
1、nginx實現rerurn 403
修改nginx配置檔案在server中加入以下內容

set $block_user_agent 0;
     if ( $http_user_agent ~ "Wget|AgentBench"){
        set $block_user_agent 1;
     }
     if ($block_user_agent = 1) {
         return 403 ;
   }

2、nginx實現rerurn 404
修改nginx配置檔案在server中加入以下內容,讓訪問sql|bak|zip|tgz|tar.gz的請求返回404

location ~* "\.(sql|bak|zip|tgz|tar.gz)$"{
       return 404;
 }

但是針對於更高層面的功能實現,nginx自帶的模組是實現不了的,例如IP白名單、IP黑名單、Cookie過濾等等。而waf安全防火牆可以實現的功能還是比較多的。
針對waf的介紹,請參考我的部落格
http://blog.csdn.net/m0_37886429/article/details/73178889
今天我再介紹另外一種實現waf功能的方法,即”nginx+lua”

二、編譯nginx的時候載入lua
1、環境準備:Nginx安裝必備的Nginx和PCRE軟體包

[root@linux-node2 ~]# cd /usr/local/src 
[root@linux-node2 src]# wget http://nginx.org/download/nginx-1.9.4.tar.gz
[root@linux-node2 src]# wget https://ftp.pcre.org/pub/pcre/pcre-8.40.tar.gz
其次,下載當前最新的luajit和ngx_devel_kit (NDK)
[root@linux-node2 src]# wget http://luajit.org/download/LuaJIT-2.0.3.tar.gz
[root@linux
-node2 src]# wget https://github.com/simpl/ngx_devel_kit/archive/v0.2.19.tar.gz [root@linux-node2 src]# wget https://github.com/openresty/lua-nginx-module/archive/v0.9.16.tar.gz [root@linux-node2 src]# useradd -s /sbin/nologin -M www #建立Nginx執行的普通使用者

2、解壓NDK和lua-nginx-module

[root@linux-node2 src]# tar -zxvf v0.2.19.tar.gz
[root@linux-node2 src]# tar -zxvf v0.9.16.tar.gz

3、安裝LuaJIT,Luajit是Lua即時編譯器

[root@linux-node2 src]# tar -zxvf LuaJIT-2.0.3.tar.gz 
[root@linux-node2 src]# cd LuaJIT-2.0.3
[root@linux-node2 LuaJIT-2.0.3]# make && make install

4、安裝Nginx並載入模組

[root@linux-node2 src]# tar -zxf pcre-8.40.tar.gz
[root@linux-node2 src]# tar -zxvf nginx-1.9.4.tar.gz 
[root@linux-node2 src]# cd nginx-1.9.4
[root@linux-node2 nginx-1.9.4]# export LUAJIT_LIB=/usr/local/lib
[root@linux-node2 nginx-1.9.4]# export LUAJIT_INC=/usr/local/include/luajit-2.0
[root@linux-node2 nginx-1.9.4]# ./configure --prefix=/usr/local/nginx --user=www --group=www     --with-http_ssl_module --with-http_stub_status_module --with-file-aio --with-http_dav_module --add-module=../ngx_devel_kit-0.2.19/ --add-module=../lua-nginx-module-0.9.16/ --with-pcre=/usr/local/src/pcre-8.40 
[root@linux-node2 nginx-1.5.12]# make -j2 && make install

[[email protected] ~]# ln -s /usr/local/lib/libluajit-5.1.so.2 /lib64/libluajit-5.1.so.2 #一定建立此軟連線,否則報錯
如果不建立符號連結,可能出現以下異常: error while loading shared libraries: libluajit-5.1.so.2: cannot open shared object file: No such file or directory

安裝完畢後,下面可以測試安裝了,修改nginx.conf 增加第一個配置

location /hello {
                default_type 'text/plain';
                content_by_lua 'ngx.say(",lua")';
        }
[root@linux-node2 ~]# /usr/local/nginx-1.9.4/sbin/nginx –t
[root@linux-node2 ~]# /usr/local/nginx-1.9.4/sbin/nginx

測試

相關推薦

WAF安全應用防火牆(nginx+lua)

一、如果使用nginx簡單實現403和404,應該都不難,只需要在配置檔案中的server欄位中新增相應的內容即可 1、nginx實現rerurn 403 修改nginx配置檔案在server中加入以下內容 set $block_user_agent

ngx_lua_waf是一個基於lua-nginx-module(openresty)的web應用防火牆

  https://www.itsvse.com/thread-3416-1-1.html     ngx_lua_waf ngx_lua_waf

Nginx + Lua 搭建網站WAF防火牆

前言 對於專案裡面只是使用代理等常用功能,線上安裝即可,如需制定化模組,則推薦編譯安裝 PS:本文不僅僅包含Nginx相關的知識點,還包含了逆天學習方法(對待新事物的處理) 官方網站:https://nginx.org/ Github:https://github.com/nginx/nginx Ng

使用Nginx+Lua(OpenResty)開發高性能Web應用

class fig eve red rman 這一 普通 ets 詳情 在互聯網公司,Nginx可以說是標配組件,但是主要場景還是負載均衡、反向代理、代理緩存、限流等場景;而把Nginx作為一個Web容器使用的還不是那麽廣泛。Nginx的高性能是大家公認的,而Nginx開發

使用Nginx+Lua實現waf

使用Nginx+Lua實現waf 技術內容來自:https://github.com/loveshell/ngx_lua_waf 軟體包需求: 1 .Nginx相容性【最後測試到1.13.6】 [[email protected] src]# wget http://nginx.org/dow

Web應用防火牆(WAF:Web Application Firewall)簡介

瞭解WAF 1.1 什麼是WAF Web應用防火牆(Web Application Firewall, 簡稱 WAF)基於雲安全大資料能力,用於防禦SQL注入、XSS跨站指令碼、常見Web伺服器外掛漏洞、木馬上傳、非授權核心資源訪問等OWASP常見攻擊,並過濾海量惡意CC攻擊,避免您的網站

打造一款可靠的WAF(Web應用防火牆

之前寫了一篇《WAF防禦能力評測及工具》,是站在安全運維人員選型WAF產品的角度來考慮的(優先從測試角度考慮是前職業病,畢竟當過3年遊戲測試?!)。本篇文章從WAF產品研發的角度來YY如何實現一款可靠的WAF,靈感來自ModSecurity等,感謝開源。 本片文章包

使用Nginx+Lua開發高效能Web應用

幾乎所有網際網路公司,Nginx可以說是標配元件,但是主要場景還是負載均衡、反向代理、代理快取、限流等場景;而把Nginx作為一個Web容器使用的還不是那麼廣泛。Nginx的高效能是大家公認的,而Nginx開發主要是以C/C++模組的形式進行,整體學習和開發成本偏高;如果有一種簡單的語言來實現Web

使用Nginx+Lua(OpenResty)開發高效能Web應用

在網際網路公司,Nginx可以說是標配元件,但是主要場景還是負載均衡、反向代理、代理快取、限流等場景;而把Nginx作為一個Web容器使用的還不是那麼廣泛。Nginx的高效能是大家公認的,而Nginx開發主要是以C/C++模組的形式進行,整體學習和開發成本偏高;如果有一種

nginx lua整合安裝2

lib ldconfig 鏈接 rep jit etc imp github tar 安裝lua JIT 下載 wget http://luajit.org/download/LuaJIT-2.0.4.tar.gz 解壓: tar zxvf LuaJIT-2.

WAF Web應用防火墻

web 實時 損壞 理解 保護 網站 防火墻 丟失 內容 WAF Web應用防火墻 Web應用防火墻是通過執行一系列針對HTTP/HTTPS的安全策略來專門為Web應用提供保護的一款產品。 與傳統防火墻不同,WAF工作在應用層,因此對Web應用防護具有先天的技術優勢

nginx+lua (二)請求分發

product include new fault 腳本 back () file res 比如對產品productId=143這個請求分發 現編寫lua腳本 distrib_product.lua local uri_args = ngx.req.get_uri_ar

nginx+lua+GraphicsMagick生成實時縮略圖-CentOS7

系統 占用 buaa 使用 nginx xxx ali blog 判斷 背景 大多數的系統都會涉及縮略圖的處理,比如新聞系統和電商系統,特別是電商系統,每個商品大圖都會對應一系列尺寸的縮略圖用於不同業務場景的使用。部分系統也會生成不同尺寸的縮略圖以供PC、手機端、ipad

linux iptables:安全應用,防火墻

onf ont wall 如果 source cmp 開源 .sh image iptables:安全應用,防火墻 windows和linux都有防火墻,企業的邊緣會部署防火墻保證企業內部的局域網是安全的。針對個人電腦會有防火墻保證系統是安全的。 防火墻是唯一通道。

nginx + lua 限制訪問

lua nginx local redis = require ‘resty.redis‘ local cache = redis.new() local ok ,err = cache.connect(cache,‘127.0.0.1‘,‘6379‘) cache:set_timeout(600

Nginx + LUA下流量攔截算法

str 支持 CA 購物車結算 Go 人的 bold word als 前言 每逢大促必壓測,每逢大促必限流,這估計是電商人的常態。每次大促期間,業務流量是平時的幾倍十幾倍,大促期間大部分業務都會集中在購物車結算,必須限流,才能保證系統不宕機。 限流算法 限流算法一般有三種

非openresty方式安裝Nginx + Lua + Redis 環境

nginx+lua+redis一、功能實現介紹: 使用Redis做分布式緩存;使用lua API來訪問redis緩存;使用nginx向客戶端提供服務,ngx_lua將lua嵌入到nginx,讓nginx執行lua腳本,高並發,非阻塞的處理各種請求。url請求nginx服務器,然後lua查詢redis,返回js

nginx+lua+redis實現GET請求接口之黑名單(二)

實現GET請求接口之黑名單(二)一、概述 需求:所有訪問/webapi/**的請求必須是GET請求,而且根據請求參數過濾不符合規則的非法請求(黑名單),可以返回具體的http狀態碼,提示客戶端IP被列入黑名單,遭到請求的限制實現思路:通過在Nginx上進行訪問限制,通過Lua來靈活實現業務需求,而Redis用

nginx+lua+redis實現post請求接口之黑名單(一)

實現IP黑名單請求限制一、概述 需求:所有訪問/webapi/**的請求必須是POST請求,而且根據請求參數過濾不符合規則的非法請求(黑名單), 這些請求一律不轉發到後端服務器(Tomcat)實現思路:通過在Nginx上進行訪問限制,通過Lua來靈活實現業務需求,而Redis用於存儲黑名單列表。 二、具體實現

nginx lua模塊安裝 讓nginx支持lua

nginx lua nginx lua模塊 下載相關安裝包 #wget http://luajit.org/download/LuaJIT-2.0.4.tar.gz #wget https://github.com/simpl/ngx_devel_kit/archive/v0.3.0.tar.gz