看我如何搭建一款方便易用的云WAF
前言
当前市面上各种云WAF,主要作用有两个一个是CDN加速,另一个就是做云防护,原理大概就是把域名IP解析权移交WAF提供商,通过他们访问回目标服务器ip,可以隐藏服务器的真实IP。
环境:
Ubuntu 16.04.1 LTSMysqlNgnix
我们使用的是这款云WAF
下载与安装
直接且到root用户下执行命令
安装openrestyapt-get update
apt-get install libreadline-dev libncurses5-dev libpcre3-dev libssl-dev perl make build-essentialsudo ln -s /sbin/ldconfig /usr/bin/ldconfigwget tar -zxvf openresty-1.9.15.1.tar.gzcd openresty-1.9.15.1./configuremake && 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 mkdir vhosts
备份nginx原配置文件
cp nginx.conf nginx.conf.bak
rm nginx.confvim 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
浏览器访问
安装后台
git上作者提供的教程需要使用go编译,我这里直接提供一个编译好的包。
创建mysql数据库
mysql -u root -p
Create Database waf;
配置后台
tar -xvf x-waf-admin0.1-linux-amd64.tar.gz
cd x-waf-admincd confvim app.ini
修改数据库帐号密码,以及API_SERVERS
启动后台,x-waf-admin目录中启动server
./server
默认帐号admin,密码为:x@xsec.io
配置反向代理
新增一个后端节点保存返回,然后选择同步全部后端配置,出现如下提示则配置正确。
修改hosts指向vim /etc/hosts
这里我就直接修改hosts文件指向本地,就不修改域名解析了。
测试访问
添加恶意参数查看是否拦截规则的添加与删除在web后台直接可以操作
总结
编写参考。