什么是雷池-WAF

依据计算机编译原理和自动机技术,长亭技术团队经过数年努力,开发出智能威胁识别引擎,通过语义分析来解析攻击的行为模式,从而识别并拦截攻击,这便是雷池(SafeLine)的工作原理。

目录

雷池(SafeLine)下一代Web应用防火墙,内置了一个大脑——基于语义分析的非规则智能威胁识别引擎。它颠覆了传统Web应用防火墙(WAF,Web Application Firewall)规则维护的工作原理,成为全球首例发布的下一代Web应用防火墙(NG-WAF,Next Generation Web Application Firewall)。

· 迭代的高标准功能:低误报率、低漏报率、速度快,无需维护规则,可防御未知威胁

· 优良的水平扩展能力:支持多种部署方式、支持大规模部署,弹性扩展,在线动态调整WAF集群规模

· 有效的统一管理平台:可视化、一键式,集成长亭云实时预警、长亭7×24小时人工应急服务

全面提升安全防护能力的同时,雷池(SafeLine)也将管理人员从复杂的安全规则维护和管理中解脱出来,降低了技术操作人员的工作难度,有效杜绝了因为规则配置和管理不当而导致的安全风险。

源自 雷池-WAF 演示DEMO

配置雷池的Tengine

Tengine作为雷池WAF的7层服务器,我们需要在雷池的安装目录 (即第一次使用docker安装雷池时填写的目录)中,找到Tengine (Nginx)的目录,如”/www/safeline/resources/nginx“。找到Nginx目录后,在sites-enabled 下存放着各个站点的配置文件,打开其中一个,如IF_backend_1,在文件最后增加如下的配置文件:

server {
    listen 80 default_server;
    listen [::]:80 default_server;
    listen 443 ssl default_server;
    listen [::]:443 ssl default_server;
 
    ssl_certificate /etc/nginx/certs/de.pem;
    ssl_certificate_key /etc/nginx/certs/de.key;
#此处可更改为444或其他未定义代码,403会返回雷池拦截页面
    location / {
        return 418;
    }
    access_log /etc/nginx/logs/de.log;
}

接下来,你需要确保”/etc/nginx/certs/de.pem“”/etc/nginx/certs/de.key“以及”/etc/nginx/logs“的存在。SafeLine的容器中,”/etc/nginx“ 被映射为安装目录,如”/www/safeline/resources/nginx“,所以你需要在”/www/safeline/resources/nginx“中创建logs目录,并在certs下放入默认证书。一张空的自签名证书示例如下,可以作为默认证书使用。

密钥在前,证书在后

-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQDXyF6m81zOeoOPvfk6nGKtyfczRG6/yeSkcc+66vGvq0s8oB7V
cCzLl1YcNsru3ixelPR2z1zvjKqa9/Aqh8+TvP1kGGbLD/mynjnj8l+0vVzZ+vnz
AH0RN9fpqzlpHmFBHQzQ25AtIAH8pXOL1541YN0TNPRA3kHUCL0FH8CkwwIDAQAB
AoGAQ4ejh6AV5VCWJ8AOZXdXsofIYzUBa+glNAmiNx8b8BwteZWq0KVAf56nBkFn
lQXW4OrA7wXKUfW11rXNZaIHJePJXv1swkN9+Em18Hon6BrtcqnKAwzAbhok3SzY
IVjI/zrgOABH6+ii77xCRBzI1itVPNN88DAUHC7PYLYiaaECQQD7PSoij37+kMc/
wPeEkl9r3vzU0OrsCsjU8Ev714OaoL/SIuAh6nsiRh9rcbUrrpGSSzIcmsk9HMDa
hXBNkNl5AkEA298yQvssaUc4tbEWxAVfd9DsHJdCdbXfgf9Dy5/tpCzYncY7T0du
VVHqKu3jXWoMc5XlesiCOerU/DIlMM8dGwJBANQn7GLO5iC1xWvS2bF7oVSIMtzL
pvW4jaszWBbNAPccc59RkA9T4LMqn/GtTZ4bhhYRpbl+BB21IC3nrNPzU5ECQG8T
Ln0QDruQs2F2eR3F6RjKfr1i3LxCiQtPPZycypzp2vS5tDS0zVRk8XuGehoy/N9X
lnqU2NURgU92tbsWpokCQQDdc9tU3B/OM/YfzUNwvOLmUVwrJX6PFSFsOn+XHrCC
q9LcGEAHyzaf5GEWje84ee4rkv5oaZcwll3dg4IioBnC
-----END RSA PRIVATE KEY-----

-----BEGIN CERTIFICATE-----
MIIBkjCB/AIJAI3bCYqa39hiMA0GCSqGSIb3DQEBBQUAMA0xCzAJBgNVBAYTAiAg
MCAXDTE4MTEyNDA5MDMzOFoYDzIwOTkxMjMxMDkwMzM4WjANMQswCQYDVQQGEwIg
IDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA18hepvNcznqDj735Opxircn3
M0Ruv8nkpHHPuurxr6tLPKAe1XAsy5dWHDbK7t4sXpT0ds9c74yqmvfwKofPk7z9
ZBhmyw/5sp454/JftL1c2fr58wB9ETfX6as5aR5hQR0M0NuQLSAB/KVzi9eeNWDd
EzT0QN5B1Ai9BR/ApMMCAwEAATANBgkqhkiG9w0BAQUFAAOBgQBiqHZsuVP09ubT
GzBSlAFEoqbM63sU51nwQpzkVObgGm9v9nnxS8Atid4be0THsz8nVjWcDym3Tydp
lznrhoSrHyqAAlK3/WSMwyuPnDCNM5g1RdsV40TjZXk9/md8xWxGJ6n1MoBdlK8T
H6h2ROkf59bb096TttB8lxXiT0uiDQ==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIBkjCB/AIJAI3bCYqa39hiMA0GCSqGSIb3DQEBBQUAMA0xCzAJBgNVBAYTAiAg
MCAXDTE4MTEyNDA5MDMzOFoYDzIwOTkxMjMxMDkwMzM4WjANMQswCQYDVQQGEwIg
IDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA18hepvNcznqDj735Opxircn3
M0Ruv8nkpHHPuurxr6tLPKAe1XAsy5dWHDbK7t4sXpT0ds9c74yqmvfwKofPk7z9
ZBhmyw/5sp454/JftL1c2fr58wB9ETfX6as5aR5hQR0M0NuQLSAB/KVzi9eeNWDd
EzT0QN5B1Ai9BR/ApMMCAwEAATANBgkqhkiG9w0BAQUFAAOBgQBiqHZsuVP09ubT
GzBSlAFEoqbM63sU51nwQpzkVObgGm9v9nnxS8Atid4be0THsz8nVjWcDym3Tydp
lznrhoSrHyqAAlK3/WSMwyuPnDCNM5g1RdsV40TjZXk9/md8xWxGJ6n1MoBdlK8T
H6h2ROkf59bb096TttB8lxXiT0uiDQ==
-----END CERTIFICATE-----

[可选] 配置替换真实IP请求头

注:该配置需要在CDN处配置连接IP header为connect-ip,不同cdn配置方式不同,如Cloudflare在托管转换中配置动态字段,具体请参考CDN官方文档。

为了防止假IP欺骗,除了可以在CDN处hide掉有关于IP的header,也可以使用自定义请求头记录IP(雷池控制台内设置connect-ip)。考虑到雷池后应用兼容性,可以把标准IP header覆盖替换。

在Tengine配置文件开始后插入:

#设置真实IP
map $http_connect_ip $custom_x_forwarded_for {
    default $proxy_add_x_forwarded_for;
    "~^(\d+\.\d+\.\d+\.\d+)$" $1;
    "~^([0-9A-Fa-f:]+)$" $1;
}
 
map $http_connect_ip $custom_x_real_ip {
    default $remote_addr;
    "~^(\d+\.\d+\.\d+\.\d+)$" $1;
    "~^([0-9A-Fa-f:]+)$" $1;
}

这段配置文件意思是,如果有connect-ip,则用connect-ip的值,如果没有,则用原来的header的值。

location ^~ / { }块中,替换修改相关header的值

 proxy_set_header X-Real-IP $custom_x_real_ip;
 proxy_set_header X-Forwarded-For $custom_x_forwarded_for;
 proxy_set_header REMOTE-HOST $custom_x_real_ip;

完成配置后,你需要重启Tengine使配置生效,值得注意的是,雷池的Tengine配置文件在容器重启后或更改了站点配置,会重新生成新的配置文件并覆盖,所以需要在雷池容器内[safeline-tengine]执行nginx -t,检查无误后执行nginx -s reload命令重启nginx。建议备份配置文件至其他目录,在重启服务器、容器,或更改了站点配置后,需要重新覆盖配置文件并在容器内重启nginx。

配置完毕后,直接访问IP地址或不存在的网站,则会返回一个空证书,并且拦截返回418状态码。

本文转载来源:孤影墨香
本文原始链接: https://www.iloli.xin/3951.html

© 版权声明
本站所有文章禁止转载!