OpenResty
First you need OpenResty (Nginx with LUA support):
Installation
Official guide for installation
Openresty module for Coraza WAF
Installation
libcoraza-nginx
apt install g++ autoconf automake libtool make
clone the repository:
git clone https://github.com/potats0/coraza.git
Build the source && Installation
cd coraza ./build.sh ./configure make make install
Note: libcoraza.so will be installed at /usr/local/lib
lua-resty-coraza
opm get potats0/lua-resty-coraza
Configuring OpenResty
Downloading rules & Configuration
Configuration:
curl https://cdn.malware.expert/coraza.conf > /usr/local/openresty/nginx/conf/coraza.conf
Edit what needed, like path’s etc …
nano -w /usr/local/openresty/nginx/conf/coraza.conf
Installing rules
curl https://cdn.malware.expert/malware_expert.lua > /usr/local/openresty/nginx/conf/malware_expert.lua
Change subscription key:
nano -w /usr/local/openresty/nginx/conf/malware_expert.lua
Default OpenResty Nginx configuration file found:
nano -w /usr/local/openresty/nginx/conf/nginx.conf
Add http header content:
http { # Download malware.expert rules on server start/restart init_by_lua_file /usr/local/openresty/nginx/conf/malware_expert.lua; init_worker_by_lua_block { coraza = require "resty.coraza" waf = coraza.create_waf() -- Default ModSecurity setting - Modify suitable coraza.rules_add_file(waf, "/usr/local/openresty/nginx/conf/coraza.conf") -- Malware.Expert rules adding coraza.rules_add(waf, "Include /usr/local/openresty/nginx/conf/malware_expert.conf") }
Activation rules in nginx location directive:
location / { access_by_lua_block { coraza.do_create_transaction(waf) coraza.do_access_filter() coraza.do_interrupt() } #content_by_lua_block { # ngx.say("passed") #} header_filter_by_lua_block{ coraza.do_header_filter() coraza.do_interrupt() } body_filter_by_lua_block{ coraza.do_body_filter() } log_by_lua_block{ coraza.do_log() coraza.do_free_transaction() } root html; index index.html index.htm; } }
service openresty restart
More details:
– https://coraza.io
– https://github.com/corazawaf/coraza