看我如何搭建一款方便易用的云WAF

首发:看我如何搭建一款方便易用的云WAF

前言

当前市面上各种云WAF,主要作用有两个一个是CDN加速,另一个就是做云防护,原理大概就是把域名IP解析权移交WAF提供商,通过他们访问回目标服务器ip,可以隐藏服务器的真实IP。感谢菜菜指导。

环境:
Ubuntu 16.04.1 LTS
Mysql
Ngnix

我们使用的是这款云WAF
https://waf.xsec.io/
https://github.com/xsec-lab

下载与安装

直接且到root用户下执行命令


安装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

如果出现如下错误提示



解决方法

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

出现如下提示则配置正确


启动waf

/usr/local/openresty/nginx/sbin/nginx

使用命令访问

curl http://127.0.0.1/?id=1%20union%20select%201,2,3

浏览器访问

安装后台

git上作者提供的教程需要使用go编译,我这里直接提供一个编译好的包。

http://download.csdn.net/download/dad9988/9929074

创建mysql数据库

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

修改数据库帐号密码,以及API_SERVERS

启动后台,x-waf-admin目录中启动server

./server

默认帐号admin,密码为:x@xsec.io

配置反向代理


新增一个后端节点,我这里直接用我的博客http://kongdewei.cn
这里的151.101.72.133直接ping自己的域名就可以获得

保存返回,然后选择同步全部后端配置,出现如下提示则配置正确。



修改hosts指向

vim /etc/hosts

这里我就直接修改hosts文件指向本地,就不修改域名解析了。

测试访问



添加恶意参数查看是否拦截

规则的添加与删除在web后台直接可以操作

总结

编写参考https://waf.xsec.io/docs
最初安装配置的时候走了一些弯路,在菜菜的指导最终配置成功,关于waf的规则需要自己慢慢收集,最近有人逆向了阿里云waf,有逆向功底的小伙伴可以尝试对成熟的产品进行逆向,挖掘一下他们的规则,添加进去,逆向waf就和他们的一样好用了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,569评论 4 363
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,499评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,271评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,087评论 0 209
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,474评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,670评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,911评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,636评论 0 202
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,397评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,607评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,093评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,418评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,074评论 3 237
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,092评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,865评论 0 196
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,726评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,627评论 2 270

推荐阅读更多精彩内容