什么是雷池-WAF

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

目录

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

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

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

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

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

源自 雷池-WAF 演示DEMO

新版

在防护站点里新建一个默认站点,配置如下

  • 域名填写 *
  • 端口号 443 + SSL
  • 上传一张无效证书
  • 填写正确上游服务器

然后开启站点 网站防护 即可

这时查看证书,也没有泄露自己的域名

证书(PEM格式)

-----BEGIN CERTIFICATE-----
MIID2TCCAsGgAwIBAgICQyIwDQYJKoZIhvcNAQELBQAwczELMAkGA1UEBhMCQ04x
EDAOBgNVBAgMB1RpYW5qaW4xEDAOBgNVBAcMB1RpYW5qaW4xFTATBgNVBAoMDENI
SU5BU1NMIEluYzEpMCcGA1UEAwwgQ0hJTkFTU0wgQ2VydGlmaWNhdGlvbiBBdXRo
b3JpdHkwHhcNMjIwNzE2MTQ1MDE0WhcNMjMwNzE2MTQ1MDE0WjB/MQswCQYDVQQG
EwJDTjEQMA4GA1UECAwHdGlhbmppbjEKMAgGA1UECgwBMTELMAkGA1UECwwCaXQx
JjAkBgNVBAMMHXd3dy5kc2dmc2RnZHNnZHNnc2Rnc2Rnc2QuY29tMR0wGwYJKoZI
hvcNAQkBFg4xOTExMDA2QHFxLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
AQoCggEBAL0OnjqcAUkfvH05du4JpelkrGUHWeZgO/iyxf12oOJV1x7YzEYIJLL6
++PMt4yQEO5tApDg4Evi7R+fOmVd8fSY2flUSRrEvY69gnr3EVcQ8xRNqlpnLTU8
klkHgOBC+RbKRvj8Rb8HNQmc8TXQvy4B+QfH8ZGQUyLFCTWfitmdRYKR5WZvPoMn
12MnCInuN4MURGeZf9D+dntRpJhqjchaQvTkXEvbnOCYoQSvUVkO2kyXt5g3G3jf
+VwI3nZxu8Dw71m3asOl4mhruFSk5HJMYizEjOAbAku6eC7vn/ICKCZXAyDgUUJU
FmY93c7EvGKC2gABL52Cec7PhNlBHVkCAwEAAaNrMGkwHwYDVR0jBBgwFoAUXB8j
+sjhITHC2Df2iPzSb8JUQzMwCQYDVR0TBAIwADALBgNVHQ8EBAMCBPAwLgYDVR0R
BCcwJYIJbG9jYWxob3N0ggx3d3cudGVzdC5jb22HBMCoAAGHBH8AAAEwDQYJKoZI
hvcNAQELBQADggEBADk7ccqVNyzyZnJZoP6xz00tvvsMXouJg7KZsjrP7lBFii4o
2QVo9ZVCO28pctiiKY2mYt36963SS+OvSSaXI7UNczPcOCMIxvlLaNFySShjkAAM
D9IkHvuXS6fQ1uUhA69AHdkpr6okXYup1hG1uI3Lu23/FSYclKmgEgW0BD5ycOdV
j4hIpFEyfY49RMQGyNbGIFvVRdCm58NxGkUVKjUQAv9DlkqEE+5dhziBoocXI/aE
TBZDtxtyyWrx46miRyI2zE6wdQy9uhPMgfPoXky9UZ+UuwB3ikbQJQIi1K7hpOfX
EVgzwQ05SusJxs27XofX8H+bYuhfIL62fqMbDWw=
-----END CERTIFICATE-----

密钥(KEY)

-----BEGIN PRIVATE KEY-----
MIIEwAIBADANBgkqhkiG9w0BAQEFAASCBKowggSmAgEAAoIBAQC9Dp46nAFJH7x9
OXbuCaXpZKxlB1nmYDv4ssX9dqDiVdce2MxGCCSy+vvjzLeMkBDubQKQ4OBL4u0f
nzplXfH0mNn5VEkaxL2OvYJ69xFXEPMUTapaZy01PJJZB4DgQvkWykb4/EW/BzUJ
nPE10L8uAfkHx/GRkFMixQk1n4rZnUWCkeVmbz6DJ9djJwiJ7jeDFERnmX/Q/nZ7
UaSYao3IWkL05FxL25zgmKEEr1FZDtpMl7eYNxt43/lcCN52cbvA8O9Zt2rDpeJo
a7hUpORyTGIsxIzgGwJLungu75/yAigmVwMg4FFCVBZmPd3OxLxigtoAAS+dgnnO
z4TZQR1ZAgMBAAECggEBAIxoq+k5bdcCI/oY0JQvRDJXm5WY5RKtDD1DgLoi/Y+7
Uv5M40Fr0N3Ae40OwI87e+envE0fRlX13kgq+LLKF+WiE9kR2Q1xapr1ck+i6RTx
uKaum8Nyd2ffaY2HfhaQhvB/IEDRE3exgZl3HsnqE+K2gl5eB7IlLylWjuVtbTD6
TE0+f/MnYjrkjZ7AKi8m/0JjYPbgCp/+uINHVJ1snxSFXogSrSxkMRNJVFVV9Mc3
ydg51H4HoLvtbj6E25AwVBIkexsEj5SOOjcV1py+hcSnKTxMKW9xxp04s44hTh9s
t1k/yKL4pvn/ytNwdBy1rlr8/45KLslrW2rcHCLmzIECgYEA+sQJRi8XP3P343i+
ar0PiP70hxq/wFDMOJCAhOHyER03nT9CCgHCqctVJZtlpU08g7JGQoDJ/OzuKh+r
jq2yGcxuuRYyE1YbebFpeqIdMZSW63LX2abQm676Uk5eThPc/9aGuJ/RAR1+wakL
2yZXZKVs33xasPvRdewh3ejJChECgYEAwQDXpXCqjzEQwr9WyWfmiulzrj70aAHe
n0sVf8UbWk/mb2xHCOLhoHEexar9MnA0A4hj1KNQnmzmz5FCTaCjtp9xQPWJ51ht
/3lfEFdD1N5NtVw9HC+szAMO9s4F6GSzuvhouZ0/7CaAd+yqvHEIwgwT6J/4KO8X
QH7uxWce1skCgYEAzClA17hNOCcFolhSx3pHpKTWlwyrIztlGYRkbku6lj5wYgD3
lkgaobzfBPBA0FVSuHIzi79pNBf+S6NfPJmkECcF2oD8oguP8QMFOoe0NwKf4O+u
VxDedHIAcXRGiVDYtB6HrtbHBh5qbedgtLrBmjqoqkeHWuKahWSLqiz1SNECgYEA
oiGhBhulS/C90buGnl6n7p26TfAYxJ59c3dRsinUloN0Yrmk2rQtMeiVHxxK4uoa
57TVmDUxbkSxiEDQYAHIRYufSiB6HlvM28YLs+B63QF6ahX4SAtMr30KPw5HLDgc
O76dyv9sSWb2mMe5jd+uqcQXnV10zH49HDMFRdMgtvECgYEA9TBOzBTR2Pivh1N5
TAl1+uIv9Vq780+PIHHBKSf7WkZ78ekK7SyDKL0sTDTyy8IUOiatyPH5CSoqLYAz
AGswsXGzdZjxTPiulrDuMIpPIf3Ch06xNe7/1WaHrdqLRZPZp7FQJsFC+U1/gL9a
7Uaq+UQy/JBccdrV6YMFThZYmsc=
-----END PRIVATE KEY-----

以上证书为随意生成的一个无效域名ssl证书,可用于预防ssl证书泄露IP所导致的风险问题,证书过期也可以继续使用,不影响预防IP泄露风险的效果

旧版

配置雷池的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

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