Docker安装OpenWAF
官方GitHub地址
介绍
OpenWAF(Web Application Firewall)是一个开源的Web应用防火墙,用于保护Web应用程序免受各种网络攻击。它通过与Web服务器集成,监控和过滤对Web应用程序的流量,识别和阻止潜在的攻击和恶意行为。
OpenWAF拥有一系列强大的安全功能,旨在提供全面的保护,包括以下方面:
-
攻击防护:OpenWAF能够检测和阻止常见的Web攻击,如跨站脚本(XSS)、SQL注入、命令注入、跨站请求伪造(CSRF)和路径遍历等。它分析输入和输出的数据,通过识别恶意的请求和特定的攻击模式来防止攻击的发生。
-
访问控制:OpenWAF可以根据配置的规则对流量进行筛选和控制,允许合法的请求通过,并阻止潜在的恶意请求。你可以设置IP白名单和黑名单,限制特定的访问来源或阻止已知的恶意IP地址。
-
会话保护:通过OpenWAF,你可以保护Web应用程序的会话机制,防止会话劫持和会话固定攻击。它可以验证会话的合法性、检测异常活动并阻止恶意的会话操作。
-
热点防护:OpenWAF可以对网站中的热点资源进行保护,防止因频繁请求而导致的资源滥用和服务不可用。它可以限制特定资源的访问频率,并对异常的访问行为进行监测和阻止。
-
日志和监控:OpenWAF提供了日志记录和监控功能,记录每个请求的详细信息,包括访问来源、请求的URL、攻击尝试和阻止的恶意行为等。通过分析日志数据,可以及时发现潜在的安全隐患和异常行为。
OpenWAF作为开源项目,具有灵活性和可定制性,你可以根据自己的需要对其进行配置和扩展。它与常见的Web服务器(如Nginx和Apache)兼容,并提供了丰富的插件和扩展库,以满足不同的安全需求。
总的来说,OpenWAF是保护Web应用程序安全的重要工具,可以帮助你减少潜在的攻击威胁,保护用户数据的安全性。如果你运营着一个Web应用程序,并且关注安全性,不妨考虑使用OpenWAF来增加你的应用程序的防护能力。
希望这个简介能给你对OpenWAF有一个初步的了解。如果你还有其他问题,我随时都能为你提供帮助!保护你的Web应用程序,让黑客无从下手!
新建文件挂载目录
# 新建配置目录
mkdir /opt/openwaf/conf
# 新建日志目录
mkdir /opt/openwaf/log
拉取OpenWAF镜像
docker pull titansec/openwaf
创建OpenWAF配置文件
创建Nginx配置文件
vim /opt/openwaf/conf/ngx_openwaf.conf;
粘贴下面内容
user root;
worker_processes auto;
worker_cpu_affinity auto;
pid /var/run/openwaf.pid;
pcre_jit on;
error_log /var/log/openwaf_error.log;
events {
worker_connections 10000;
multi_accept on;
}
http {
include /usr/local/openresty/nginx/conf/mime.types;
include /opt/OpenWAF/conf/twaf_main.conf;
include /opt/OpenWAF/conf/twaf_api.conf;
default_type text/html;
tcp_nopush on;
sendfile on;
keepalive_requests 100;
keepalive_timeout 60 60;
client_body_buffer_size 100m;
lua_regex_match_limit 1500;
proxy_redirect http://$http_host/ /;
proxy_pass_header Server;
upstream test {
server 0.0.0.1; #just an invalid address as a place holder
balancer_by_lua_file /opt/OpenWAF/app/twaf_balancer.lua;
keepalive 16;
}
server {
listen 80;
listen [::]:80 ipv6only=on;
listen 443 ssl;
listen [::]:443 ssl ipv6only=on;
server_name _;
ssl_certificate /opt/OpenWAF/conf/ssl/nginx.crt;
ssl_certificate_key /opt/OpenWAF/conf/ssl/nginx.key;
ssl_protocols TLSv1.1 TLSv1.2;
include /opt/OpenWAF/conf/twaf_server.conf;
ssl_certificate_by_lua_file /opt/OpenWAF/app/twaf_ssl_cert.lua;
location / {
proxy_set_header Accept-Encoding identity;
proxy_set_header Host $http_host;
proxy_set_header X-Server-IP $server_addr;
proxy_set_header X-Server-PORT $server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Real-PORT $remote_port;
proxy_set_header X-Forwarded-For $http_x_forwarded_for;
proxy_set_header Connection $connection_upgrade;
proxy_set_header Upgrade $http_upgrade;
proxy_http_version 1.1;
proxy_pass $twaf_upstream_server;
}
}
}
创建规则配置文件
vim /opt/openwaf/conf/twaf_access_rule.json;
粘贴下面内容
{
"twaf_access_rule": {
"state": true,
"log_state":true,
"rules":[
{
"host":"^.*$",
"forward":"test",
"forward_addr":"1.1.1.1",
"uuid":"test_uuid1",
"policy": "twaf_policy_conf"
},
{
"host":"qj.com",
"port":81,
"path":"/admin/",
"forward":"test",
"forward_addr": "1.1.1.2",
"forward_port": 82,
"uuid":"test_uuid2",
"policy": "twaf_policy_conf"
},
{
"host":"jq.com",
"ngx_ssl": true,
"ngx_ssl_cert": "/opt/OpenWAF/conf/ssl/nginx.crt",
"ngx_ssl_key": "/opt/OpenWAF/conf/ssl/nginx.key",
"forward":"test",
"forward_addr": "1.1.1.3",
"uuid":"test_uuid3",
"policy": "twaf_policy_conf"
}
]
}
}
创建日志文件
touch /opt/openwaf/log/openwaf_error.log
查看文件是否创建成功
启动OpenWAF容器
docker run -d --name openwaf \
-p 80:80 -p 443:443 \
-v /opt/openwaf/conf/ngx_openwaf.conf:/etc/ngx_openwaf.conf \
-v /opt/openwaf/conf/twaf_access_rule.json:/opt/OpenWAF/conf/twaf_access_rule.json \
-v /opt/openwaf/log/openwaf_error.log:/var/log/openwaf_error.log \
titansec/openwaf
- 挂载配置文件和日志
将配置文件保留在宿主机中,更新OpenWAF
只需更新Docker
镜像即可
1.1 挂载nginx
配置文件
如,事先将ngx_openwaf.conf
放在宿主机/opt/openwaf/conf/
目录下,然后启动 docker 容器时添加参数如下:
-v /opt/openwaf/conf/ngx_openwaf.conf:/etc/ngx_openwaf.conf
1.2 挂载twaf_access_rule.json
接入规则配置文件
如,事先将twaf_access_rule.json
放在宿主机/opt/openwaf/conf/
目录下,然后启动 docker 容器时添加参数如下:
-v /opt/openwaf/conf/twaf_access_rule.json:/opt/OpenWAF/conf/twaf_access_rule.json
1.3 挂载 nginx 错误日志
-v /opt/openwaf/log/openwaf_error.log:/var/log/openwaf_error.log - 修改宿主机中的配置文件后,执行 docker restart openwaf(容器名称) 即可