「免费WAF」雷池社区版离线一键安装、升级及配置

ge03131年前 ⋅ 4280 阅读

原文地址:长亭科技-雷池waf离线一键安装和升级,以及配置

背景

前阵子公司多个项目,参与攻防演练。服务器没做什么安全配置。就一个nginx做一些拦截不规则请求,防盗链,限制IP的配置,完全是被攻击后才加上去的限制规则,又不是做安全出身,对攻击行为了解有限。做不到自动化,很有必要用安全工具来防护。

调研

综合对比下相关waf工具,发现雷池的生态比较齐全,有免费版和商业版,而且持续维护更新(这点很重要)(有很多免费开源的waf已经近几年不更新了,类似httpwaf)。

雷池社区版

长亭雷池 WAF 社区版官方网址

长亭科技官网

长亭科技 - 下一代应用安全领导者

雷池社区版是长亭科技根据企业版雷池 Web 应用防护系统提炼而来,核心检测能力由长亭首创的智能语义分析算法驱动。项目开源了语义分析算法的核心引擎和相关安全插件,控制台未开源。防护效果好,项目迭代快,界面清爽好用,虽然功能上比企业版本少,但完全满足 WAF 的基本需求。

有需求的金主还是建议上企业版,企业版防护功能更加丰富,让你的系统真正不让黑客越雷池半步。

  • 防护效果:对通用漏洞和非通用漏洞的防护效果都不错,误报少。
  • 技术先进性:核心技术是语义分析算法,相比正则规则的可对抗性更高、性能更好
  • 项目质量:具备 WAF 各项基础能力,项目未完全开源,文档相对完善,有讨论组群解答各种问题(群里的工作人员相对活跃,回复很及时)
  • 社区认可度:2800+ star,装机量 12000+
  • 社区活跃度:持续有更新(社区版计划每周更新一版本)(企业版的服务会更好)

    安装

    雷池waf有三种安装方式供选择:
  • 在线安装 : 推荐安装方式
  • 离线安装 : 服务器无法连接 Docker Hub 时选择
  • 一键安装 : 最简单的安装方式

我选择离线安装,适用各种无外网环境。

下载docker镜像包

下载编排脚本

根据官网文档安装教程,编写安装脚本,实现离线一键安装。

编写一键安装脚本。

#!/bin/bash
echo 加载镜像
cat image.tar.gz | gzip -d | docker load

echo 创建安装目录
DIR=/data/docker/safeline/
mkdir -p $DIR

echo 复制编排文件
cp -f compose.yaml $DIR

cd ..
rm -rf waf/

echo 添加配置
cat >> ${DIR}.env << EOF
SAFELINE_DIR=${DIR}
IMAGE_TAG=latest
MGT_PORT=9443
POSTGRES_PASSWORD=$(LC_ALL=C tr -dc A-Za-z0-9 </dev/urandom | head -c 32)
REDIS_PASSWORD=$(LC_ALL=C tr -dc A-Za-z0-9 </dev/urandom | head -c 32)
SUBNET_PREFIX=169.254.0
EOF

cat ${DIR}.env

echo 启动镜像
docker-compose -f ${DIR}compose.yaml up -d

echo 安装成功
echo 访问:http://ip:9443,登录雷池控制台

将镜像包、编排文件、安装脚本,上传到服务器:

执行脚本一键安装:
chmod +x install.sh && ./install.sh

安装成功,访问雷池控制台:

配置

原来的部署架构

现在需要把雷池waf放在第一层,做安全防护,无效的请求直接拦截

配置雷池waf后的部署架构

第一步:

  修改原来的nginx

  将80端口改为81端口,443端口注释掉

  重启nginx

第二步:

  配置雷池waf

  添加防护站点

  配置80端口

配置443端口

http自动跳转到https

修改雷池waf的nginx配置,将80请求重定向到443,雷池预留了自定义配置参数

安装路径下,safeline/resources/nginx/custom_params

添加以下配置

return 307 https://www.waf.com$request_uri;

重启雷池waf的nginx

docker exec safeline-tengine nginx -t

还有很多好用的功能,小伙伴们就自行研究了。

类似:站点维护,黑白名单,人机验证。这都是很实用的功能。完全免费。长亭科技大大滴良心。

ps:自定义页面

很多小伙伴想自定义,403页面、维护页面,但是雷池waf默认是不允许修改的,每分钟会定时覆盖掉。

这里给你们提供一个自定义的思路,因为这些页面是通过nginx容器来代理跳转的,nginx里面修改配置就行了,然后重启,所以你懂的吧。

但还是提醒下免费版默认不允许商用的,这些自定义页面属于个人行为,小伙伴们研究研究自己玩玩就好。

雷池社区版许可证

升级

最近雷池waf发布了2.5.0版本,新增了频繁请求拦截功能

离线版没有一键升级怎么行

官网下载最新镜像包编排文件

编写更新脚本

#!/bin/bash
#雷池waf安装目录
DIR=/data/docker/safeline/

echo 备份yaml
mv ${DIR}compose.yaml ${DIR}compose.yaml.old

cp -f compose.yaml ${DIR}

echo 加载镜像
docker load -i image.tar.gz

cd $DIR

echo 添加配置

sed -i "s/IMAGE_TAG=.*/IMAGE_TAG=latest/g" ".env"

grep "SAFELINE_DIR" ".env" > /dev/null || echo "SAFELINE_DIR=$(pwd)" >> ".env"
grep "IMAGE_TAG" ".env" > /dev/null || echo "IMAGE_TAG=latest" >> ".env"
grep "MGT_PORT" ".env" > /dev/null || echo "MGT_PORT=9443" >> ".env"
grep "POSTGRES_PASSWORD" ".env" > /dev/null || echo "POSTGRES_PASSWORD=$(LC_ALL=C tr -dc A-Za-z0-9 </dev/urandom | head -c 32)" >> ".env"
grep "REDIS_PASSWORD" ".env" > /dev/null || echo "REDIS_PASSWORD=$(LC_ALL=C tr -dc A-Za-z0-9 </dev/urandom | head -c 32)" >> ".env"
grep "SUBNET_PREFIX" ".env" > /dev/null || echo "SUBNET_PREFIX=172.22.222" >> ".env"

echo 删除旧容器
docker-compose down
echo 启动新容器
docker-compose up -d

echo 更新成功

将镜像包、编排脚本、更新脚本,上传到服务器

执行更新

chmod +x update.sh && ./update.sh

更新成功

全部评论: 0

    相关推荐