解决运维痛点,提高运维安全性-雷池 SafeLine WAF新功能身份认证

2025-05-22 18:08:26 0点赞 6收藏 0评论

雷池介绍

使用雷池 SafeLine WAF已经两年多了,在1.5.x版本时就已经开始测试使用,并在推出LTS版本后转入LTS分支。

mayrpcnm.pngmayrpcnm.png

近期雷池 SafeLine WAF重点更新了身份认证功能,并提供了SSO单点登录认证,因此本次对此功能进行深度体验。

业务痛点

在公司运维中,会部署一些独立的自开发运维工具,如MQ消息队列监控工具、JVM虚拟机内存监控工具、交换机巡检备份工具;本次介绍我自己开发使用的MQ消息队列监控工具结合雷池的使用。

MQ消息队列监控工具

整个工具由下面几部分组成
MQ消息队列-Agent采集写入数据库、分析、企业微信webhook告警(python)-企业微信webhook消息配置为PHP网页-PHP网页可视化展示最近的MQ分析数据库

由于开发的工具较多,均没有配置独立的身份认证,即任何人都可以通过连接访问

mays0fj0.pngmays0fj0.png

雷池WAF身份认证

为防止隐私泄露,本次全新安装雷池WAF

雷池WAF安装

安装docker

使用anolis8.10操作系统,关闭防火墙,安装docker

关闭防火墙是为了防止干扰实验结果

1、安装docker

yum install -y yum-utils #阿里云加速源 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum install docker-ce docker-ce-cli containerd.io

2、配置docker网段和加速源

/etc/docker/daemon.json { "bip": "192.168.120.1/24", "registry-mirrors": [ "https://docker.1panel.live" ] }

3、启动服务

systemctl enable --now docker

4、关闭防火墙

systemctl disable --now firewalld

安装雷池

yum install python3 bash -c "$(curl -fsSLk https://waf-ce.chaitin.cn/release/latest/manager.sh)"maysejlr.pngmaysejlr.png

部署完成

maysl5ob.pngmaysl5ob.png

MQ消息队列监控工具部署

部署php环境

yum install httpd php php-mysqli php-json systemctl enable --now httpd

将MQ查询的PHP程序放入/var/www/html/index.php,运行正常

mays0fj0.pngmays0fj0.png

雷池WAF身份认证配置

添加应用防护

mayx30ah.pngmayx30ah.png


可配置基础账号密码认证

mayx44yi.pngmayx44yi.png


也可配置三方账号密码认证,注意个人免费版和收费版可配置项不同

mayx7621.pngmayx7621.png

配置基础身份认证演示

mayx4o28.pngmayx4o28.png

可配置授权访问或直接访问

直接访问效果

mayx5n8w.pngmayx5n8w.png

错误账号密码效果

mayx6956.pngmayx6956.png

通过验证效果

显示正在进入并跳转

mayxa8n8.pngmayxa8n8.png

审批授权效果

配置为审批授权

mayxhwqd.pngmayxhwqd.png


登陆提示未授权

mayxkckt.pngmayxkckt.png


雷池-身份认证 进行授权

mayxlf9n.pngmayxlf9n.pngmayxlmz9.pngmayxlmz9.png


审批通过后,页面自动跳转,访问成功

微信开放平台对接效果

由于微信开放平台需要实名认证,这里无法演示,最终效果为扫码登录

mayxfq19.pngmayxfq19.png

身份认证高级功能-特定条件身份认证

可设置条件、IP范围、地理范围

mayy2xg1.pngmayy2xg1.png

身份认证高级功能-用户认证信息传递

官方文档

如何配置将用户认证信息传递给应用服务器? 用户认证成功后,雷池会重定向到以下地址,其中http://example.com/application是在应用配置的认证回调地址: http://example.com/application?code=123456&redirect_uri=用户原访问地址 在雷池控制台 通用设置-控制台管理 页面找到 API Token ,获取 Token 应用在 认证回调地址 中实现用 code 来请求雷池的/.safeline/auth/api/user接口获取认证用户信息,code 只能使用一次 // 请求: GET http://safeline-console.com/.safeline/auth/api/user?code=123456 X-SLCE-API-TOKEN: safeline-api-token // 响应: Content-Type: application/json { "code": 0, // 0: 成功,非0: 失败 "msg": "错误描述", "data": { "id": 1, "username": "username" } } 应用成功获取到用户信息之后缓存登录信息,用于后续判断当前用户是否登录,然后重定向到 redirect_uri

注意

GET http://safeline-console.com/

这里域名是应用的域名,不是雷池控制台,即

GET http://example.com/.safeline/auth/api/user?code=123456

简单DEMO实现获取雷池身份验证用户名
auth.php

<?php // 打印更多报错信息 error_reporting(E_ALL); ini_set('display_errors', 1); // 判断是否是HTTPS $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://"; // 获取域名和请求URI $currentUrl = $protocol . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; $parsedUrl = parse_url($currentUrl); $queryString = $parsedUrl['query']; parse_str($queryString, $queryParams); $code = isset($queryParams['code']) ? $queryParams['code'] : null; $url = 'http://这里是我的应用域名/.safeline/auth/api/user?code=' . urlencode($code); // 替换为实际API地址 $ch = curl_init(); curl_setopt_array($ch, [ CURLOPT_URL => $url, CURLOPT_HTTPHEADER => [ 'X-SLCE-API-TOKEN: 这里是我的密钥' ], CURLOPT_RETURNTRANSFER => true, CURLOPT_SSL_VERIFYPEER => false, CURLOPT_SSL_VERIFYHOST => false ]); $response = curl_exec($ch); if(curl_errno($ch)){ die('CURL Error: '.curl_error($ch)); } $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); if($httpCode !== 200){ die('HTTP Error: '.$httpCode); } print_r($response); $data = json_decode($response, true); if(json_last_error() !== JSON_ERROR_NONE){ die('JSON解析失败: '.json_last_error_msg()); } print_r($data); curl_close($ch);

配置回调地址

maz333l1.pngmaz333l1.png

登陆测试

登录heihei

maz30aph.pngmaz30aph.png

返回用户名heihei

Array ( [code] => 0 [msg] => [data] => Array ( [id] => 2 [username] => heihei ) )

拿到用户名后,下一步可以写入session或cookie,跳转页面,完成权限认证操作

意见与建议

1、登录界面无法直接回车登录,需要鼠标点击登录,建议改为回车登录
2、身份认证审核信息,建议使用浏览器消息通知机制,直接在标签页弹消息提醒

小结

太强大了!

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

展开 收起
0评论

当前文章无评论,是时候发表评论了
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
6
扫一下,分享更方便,购买更轻松