发布于 8 天前
发布于 8 天前
爱吃麦当劳
更新于 8 天前
1
0
尊敬的雷池WAF团队:
您好!
我是贵公司雷池WAF产品的一名用户,首先感谢您们提供了这样一款强大且可靠的安全防护产品。由于业务需求,我经常需要向NAS设备上传各种工具或脚本文件,包括shell脚本和py脚本等。然而,在使用过程中,我发现一个较为困扰的问题:在上传这些明文脚本时,大约有50%的概率会被WAF误判为恶意请求而被拦截。尽管了解这是为了保障系统的安全性,但对于日常工作的效率产生了一定影响。
针对这一情况,我想提出一个关于“临时白名单”机制的建议,旨在不牺牲安全性的前提下,提高用户体验和工作效率。具体设想如下:
再次感谢您的阅读与考虑!
爱吃麦当劳
更新于 8 天前
0
0
补充一下,可能每次访问时IP会变化,国内很少会有固定的IP地址,比如手机热点这种,很难使用白名单机制,直接加白,或者内网中使用了随机的内网地址转换
雷池 - 小小
更新于 8 天前
0
0
您好,首先感谢您对雷池 WAF 的支持,不过按照描述来说这个需求并不普遍,暂时不会考虑做到产品里面。但是我给你写了一个脚本来完成这个事情,大致的效果为
检测到的 IP 地址:
内网 IP: 10.xx.xx.xx
公网 IP: 36.xx.xx.xx
是否确认添加这些 IP 到白名单?(y/n)
y
正在添加白名单规则...
白名单添加成功,规则 ID: 7
请完成操作后输入 'y' 删除白名单规则...
y
正在删除白名单规则...
白名单规则已删除
#!/bin/bash
# 检查参数
if [ $# -ne 2 ]; then
echo "使用方法: $0 <域名> <Token>"
echo "示例: $0 https://xxx.waf.com:9443 your_token"
exit 1
fi
DOMAIN=$1
TOKEN=$2
API_URL="$DOMAIN/api/open/policy"
# 获取内网 IP
INTERNAL_IP=$(ipconfig getifaddr en0 || ip addr show | grep -E "inet .* brd" | awk '{print $2}' | cut -d'/' -f1 | head -n 1)
# 获取公网 IP(尝试多个服务)
PUBLIC_IP=""
for service in "https://api.ipify.org" "https://ifconfig.me" "https://ipinfo.io/ip" "https://icanhazip.com"; do
PUBLIC_IP=$(curl -s -k --connect-timeout 5 $service)
if [ -n "$PUBLIC_IP" ]; then
break
fi
done
if [ -z "$PUBLIC_IP" ]; then
echo "警告:无法获取公网 IP,将只使用内网 IP"
IP_LIST="[\"$INTERNAL_IP\"]"
else
IP_LIST="[\"$INTERNAL_IP\",\"$PUBLIC_IP\"]"
fi
echo "检测到的 IP 地址:"
echo "内网 IP: $INTERNAL_IP"
if [ -n "$PUBLIC_IP" ]; then
echo "公网 IP: $PUBLIC_IP"
fi
echo ""
echo "是否确认添加这些 IP 到白名单?(y/n)"
read -r confirm
if [ "$confirm" != "y" ]; then
echo "已取消添加白名单"
exit 0
fi
# 添加白名单规则
echo "正在添加白名单规则..."
RESPONSE=$(curl -s -k -X POST "$API_URL" \
-H "accept: */*" \
-H "content-type: application/json" \
-H "X-SLCE-API-TOKEN: $TOKEN" \
--data "{\"name\":\"临时白名单\",\"is_enabled\":true,\"pattern\":[[{\"k\":\"src_ip\",\"op\":\"eq\",\"v\":$IP_LIST,\"sub_k\":\"\"}]],\"auth_source_ids\":[],\"action\":0,\"log\":false}" 2>&1)
# 提取规则 ID
RULE_ID=$(echo $RESPONSE | grep -o '"data":[0-9]*' | cut -d':' -f2)
if [ -z "$RULE_ID" ]; then
echo "添加白名单失败,错误信息:"
echo "$RESPONSE"
exit 1
fi
echo "白名单添加成功,规则 ID: $RULE_ID"
echo "请完成操作后输入 'y' 删除白名单规则..."
# 等待用户输入
read -r input
if [ "$input" = "y" ]; then
echo "正在删除白名单规则..."
DELETE_RESPONSE=$(curl -s -v -k -X DELETE "$API_URL" \
-H "accept: */*" \
-H "content-type: application/json" \
-H "X-SLCE-API-TOKEN: $TOKEN" \
--data "{\"id\":$RULE_ID}" 2>&1)
if echo "$DELETE_RESPONSE" | grep -q '"err":null'; then
echo "白名单规则已删除"
else
echo "删除白名单规则失败,错误信息:"
echo "$DELETE_RESPONSE"
fi
else
echo "未删除白名单规则,请手动删除规则 ID: $RULE_ID"
fi
bash add_whitelist.sh https://waf地址:9443 api_token