0
点赞
收藏
分享

微信扫一扫

OpenWAF搭建测试

一、openwaf介绍

OpenWAF是第一个全方位开源的Web应用防护系统(WAF),他基于nginx_lua API分析HTTP请求信息。OpenWAF由行为分析引擎和规则引擎两大功能引擎构成。其中规则引擎主要对单个请求进行分析,行为分析引擎主要负责跨请求信息追踪。

规则引擎的启发来自modsecurity及freewaf(lua-resty-waf),将ModSecurity的规则机制用lua实现。基于规则引擎可以进行协议规范,自动工具,注入攻&击,跨站攻&击,信息泄露,异常请求等安全防护,支持动态添加规则,及时修补漏洞。

行为分析引擎包含基于频率的模糊识别,防恶意爬虫,人机识别等防探测模块,防CSRF,防CC,防提权,文件上传防护等防御模块,cookie防篡改,防盗链,自定义响应头,响应页面等防信息泄露模块。

除了两大引擎之外,还包含统计,日志,响应页面,接入规则等基础模块。除了已有的功能模块,OpenWAF还支持动态修改配置, 动态添加第三方模块,使得在不重启引擎中断业务的条件下,升级防护。

OpenWAF支持将上述功能封装为策略,不同的web application应用不同的策略来防护。将来还会打造云平台,策略还可分享供他人参考。


基础模块如下:

静态配置管理器 openwaf_conf

日志 openwaf_log

统计 openwaf_reqstat

核心层 openwaf_core

接入规则 openwaf_access_rule


功能模块如下:

规则引擎 openwaf_rule_engine

响应页面 openwaf_attack_response

API openwaf_api

防恶意爬虫 openwaf_anti_mal_crawler

防CC openwaf_anti_cc


详细配置文档及示例请看上述各模块文档

​​https://gitee.com/miracleqi/OpenWAF​​


二、安装openwaf服务器(10.0.0.77)

1、安装openwaf依赖

cd /opt yum install gcc gcc-c++ wget GeoIP-devel git swig make perl perl-ExtUtils-Embed readline-devel zlib-devel -y wget http://www.over-yonder.net/~fullermd/projects/libcidr/libcidr-1.2.3.tar.xz wget https://ftp.pcre.org/pub/pcre/pcre-8.43.tar.gz wget https://www.openssl.org/source/openssl-1.1.1d.tar.gz wget https://openresty.org/download/openresty-1.15.8.2.tar.gz tar -xvf libcidr-1.2.3.tar.xz tar -zxvf pcre-8.43.tar.gz tar -zxvf openssl-1.1.1d.tar.gz tar -zxvf openresty-1.15.8.2.tar.gz rm -rf pcre-8.43.tar.gz \ openssl-1.1.1d.tar.gz \ openresty-1.15.8.2.tar.gz cd /opt/libcidr-1.2.3 make && make install

2、安装openwaf

cd /opt git clone https://github.com/titansec/OpenWAF.git ##建议采用电信线路 mv /opt/OpenWAF/lib/openresty/ngx_openwaf.conf /etc mv /opt/OpenWAF/lib/openresty/configure /opt/openresty-1.15.8.2 cp -RP /opt/OpenWAF/lib/openresty/* /opt/openresty-1.15.8.2/bundle/ cd /opt/OpenWAF make clean make install ln -s /usr/local/lib/libcidr.so /opt/OpenWAF/lib/resty/libcidr.so

3、编译 openresty

cd /opt/openresty-1.15.8.2/ ./configure --with-pcre-jit --with-ipv6 \ --with-http_stub_status_module \ --with-http_ssl_module \ --with-http_realip_module \ --with-http_sub_module \ --with-http_geoip_module \ --with-openssl=/opt/openssl-1.1.1d \ --with-pcre=/opt/pcre-8.43 make && make install

参考资料:​​https://github.com/titansec/OpenWAF/blob/master/doc/%E8%BD%BB%E6%9D%BE%E7%8E%A9%E8%BD%ACOpenWAF%E4%B9%8B%E5%AE%89%E8%A3%85%E7%AF%87.md​​


三、安装web服务器(10.0.0.88)

1.创建统一用户

groupadd www -g 666

useradd www -u 666 -g 666 -M -s /sbin/nologin

id www

tail -1 /etc/passwd


2.Nginx安装部署

- 使用官方源YUM安装Nginx最新版本

[root@web01 ~]# cat /etc/yum.repos.d/nginx.repo

[nginx-stable]

name=nginx stable repo

baseurl=http://nginx.org/packages/centos/$releasever/$basearch/

gpgcheck=1

enabled=1

gpgkey=https://nginx.org/keys/nginx_signing.key


[nginx-mainline]

name=nginx mainline repo

baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/

gpgcheck=1

enabled=0

gpgkey=https://nginx.org/keys/nginx_signing.key


- 安装nginx并启动

yum makecache fast

yum install nginx

systemctl start nginx


- 修改运行用户为www并重启

sed -i '/^user/s#nginx#www#g' /etc/nginx/nginx.conf

systemctl restart nginx


3.PHP安装部署

- 使用第三方源YUM安装PHP7.1

yum remove php-mysql-5.4 php php-fpm php-common

rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm


- 安装部署php

yum makecache fast

yum -y install php71w php71w-cli php71w-common php71w-devel php71w-embedded php71w-gd php71w-mcrypt php71w-mbstring php71w-pdo php71w-xml php71w-fpm php71w-mysqlnd php71w-opcache php71w-pecl-redis php71w-pecl-mongodb


- 修改运行用户为PHP

sed -i '/^user/c user = www' /etc/php-fpm.d/www.conf

sed -i '/^group/c group = www' /etc/php-fpm.d/www.conf


- 启动检查

systemctl start php-fpm

ps -ef|grep php-fpm

4.Mysql安装部署

- YUM安装mariadb

yum install mariadb mariadb-server -y

systemctl start mariadb


- 安全初始化配置

mysql_secure_installation

mysql -uroot -p


四、调试web服务器(10.0.0.88)

[root@web01 code]# cat /etc/nginx/conf.d/php.conf

server {

server_name www.hand123.com;

listen 80;

root /code;

index index.php index.html;


location ~ \.php$ {

root /code;

fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

include fastcgi_params;

}

}


- 检查语法并重启nginx

nginx -t

systemctl restart nginx


- 创建站点目录

mkdir /code -p


- 创建php测试页面

[root@web01 code]# cat index.php

<?php

phpinfo();

?>


- windows访问测试

绑定hosts并ping测试

web访问: www.hand123.com


五、调试openwaf服务器(10.0.0.77)

1、修改openwaf提供的nginx配置文件

如果用 OpenWAF 默认的 /etc/ngx_openwaf.conf 配置文件(默认监听 80 端口)

修改 /opt/OpenWAF/conf/twaf_access_rule.json 文件中第一条接入规则的"forward_addr"值

OpenWAF搭建测试_nginx

2、启动nginx

启动nginx命令 /usr/local/openresty/nginx/sbin/nginx -c /etc/ngx_openwaf.conf

停止nginx命令 /usr/local/openresty/nginx/sbin/nginx -c /etc/ngx_openwaf.conf -s stop

参考资料:​​https://github.com/titansec/Openwaf/tree/master/doc​​


六、访问验证

1、修改hosts文件

10.0.0.77 www.hand123.com

2、正常访问

OpenWAF搭建测试_php_02

3、功能验证

游览器输入http://www.hand123.com/?name=test AND 1=1

触发的事件类型: attack.injection.sql.libinjection

OpenWAF搭建测试_nginx_03

游览器输入http://www.hand123.com/?a=1 order by 1

触发的事件类型: attack.injection.sql.libinjection

OpenWAF搭建测试_php_04

举报

相关推荐

0 条评论