首發(fā):看我如何搭建一款方便易用的云WAF
前言
當前市面上各種云WAF,主要作用有兩個一個是CDN加速奢讨,另一個就是做云防護蔚鸥,原理大概就是把域名IP解析權(quán)移交WAF提供商,通過他們訪問回目標服務器ip捧弃,可以隱藏服務器的真實IP赠叼。感謝菜菜指導擦囊。
環(huán)境:
Ubuntu 16.04.1 LTS
Mysql
Ngnix
我們使用的是這款云WAF
https://waf.xsec.io/
https://github.com/xsec-lab
下載與安裝
直接且到root用戶下執(zhí)行命令
安裝openresty
apt-get update
apt-get install libreadline-dev libncurses5-dev libpcre3-dev libssl-dev perl make build-essential
sudo ln -s /sbin/ldconfig /usr/bin/ldconfig
wget https://openresty.org/download/openresty-1.9.15.1.tar.gz
tar -zxvf openresty-1.9.15.1.tar.gz
cd openresty-1.9.15.1
./configure
make && sudo make install
如果出現(xiàn)如下錯誤提示
解決方法
rm /var/cache/apt/archives/lock
rm /var/lib/dpkg/lock
安裝 git
apt-get install git
安裝mysql
apt-get install mysql-server
安裝vim
apt-get install vim
配置root密碼,我這里直接寫123456了嘴办,后面還會在重復填寫一次瞬场。
waf部署與配置
將x-waf的代碼目錄放置到openresty的/usr/local/openresty/nginx/conf目錄下,然后在openresty的conf的目錄下新建vhosts目錄
cd /usr/local/openresty/nginx/conf/
git clone https://github.com/xsec-lab/x-waf.git
mkdir vhosts
備份nginx原配置文件
cp nginx.conf nginx.conf.bak
rm nginx.conf
vim nginx.conf
復制下面的代碼涧郊,粘貼進去,粘貼進去后保存贯被,然后使用cat命令查看下第一行粘貼是否完整,有的時候第一行會漏掉幾個字符妆艘,造成nginx報錯彤灶。
################user nginx;
worker_processes auto;
worker_cpu_affinity auto;
#error_log logs/error.log;
#error_log logs/error.log debug;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 409600;
}
http {
include mime.types;
lua_package_path "/usr/local/openresty/nginx/conf/x-waf/?.lua;/usr/local/lib/lua/?.lua;;";
lua_shared_dict limit 100m;
lua_shared_dict badGuys 100m;
default_type application/octet-stream;
#開啟lua代碼緩存功能
lua_code_cache on;
init_by_lua_file /usr/local/openresty/nginx/conf/x-waf/init.lua;
access_by_lua_file /usr/local/openresty/nginx/conf/x-waf/access.lua;
#log_format shield_access '$remote_addr - $http_host - "$request" - "$http_cookie"';
#access_log pipe:/usr/local/shield/redisclient shield_access;
#ssl on;
#ssl_certificate certs/cert_chain.crt;
#ssl_certificate_key certs/server.key;
ssl_session_timeout 5m;
ssl_protocols SSLv2 SSLv3 TLSv1;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
include vhosts/*.conf;
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
}
}
新建nginx日志目錄
cd /var/log/
mkdir nginx
測試nginx配置是否正確
/usr/local/openresty/nginx/sbin/nginx -t
出現(xiàn)如下提示則配置正確
啟動waf
/usr/local/openresty/nginx/sbin/nginx
使用命令訪問
瀏覽器訪問
安裝后臺
git上作者提供的教程需要使用go編譯,我這里直接提供一個編譯好的包批旺。
創(chuàng)建mysql數(shù)據(jù)庫
mysql -u root -p
Create Database waf;
配置后臺
tar -xvf x-waf-admin0.1-linux-amd64.tar.gz
cd x-waf-admin
cd conf
vim app.ini
修改數(shù)據(jù)庫帳號密碼幌陕,以及API_SERVERS
啟動后臺,x-waf-admin目錄中啟動server
./server
默認帳號admin,密碼為:x@xsec.io
配置反向代理
新增一個后端節(jié)點朱沃,我這里直接用我的博客http://kongdewei.cn
這里的151.101.72.133直接ping自己的域名就可以獲得
保存返回苞轿,然后選擇同步全部后端配置,出現(xiàn)如下提示則配置正確逗物。
修改hosts指向
vim /etc/hosts
這里我就直接修改hosts文件指向本地搬卒,就不修改域名解析了。
測試訪問
添加惡意參數(shù)查看是否攔截
規(guī)則的添加與刪除在web后臺直接可以操作
總結(jié)
編寫參考https://waf.xsec.io/docs
最初安裝配置的時候走了一些彎路翎卓,在菜菜的指導最終配置成功契邀,關(guān)于waf的規(guī)則需要自己慢慢收集,最近有人逆向了阿里云waf失暴,有逆向功底的小伙伴可以嘗試對成熟的產(chǎn)品進行逆向坯门,挖掘一下他們的規(guī)則,添加進去逗扒,逆向waf就和他們的一樣好用了古戴。