Debian 安装雷池 WAF(SafeLine)+计划+DDNS

说明

我尝试在 iKuai 上安装单网口旁路由(防火墙)虚拟机,实现内网安全的需求。

在 Github 上找可以安装在 Debian (或者其他系统)上的 WAF 或者 Firewall 程序,看到了 SafeLine 。

进入官网,体验 Demo 后发现:社区版有非常简单的 Web 反向代理和防火墙设置,也没有什么账户绑定。

我决定尝试使用一段时间。

因为 iKuai 无法正常安装 OPNsense 虚拟机,我遇到了许多困难,但 iKuai 无法进入控制台,我甚至不知道问题出在哪里。可能是双网口配置不支持,但尝试了单网口 lan 配置后改 wan 口仍然无法正常访问后,已经耗费了一天多的时间。放弃了。

安装雷池 WAF

官方提供了非常丰富完善的操作指南: 上手指南 | 雷池 WAF 社区版 (chaitin.cn)

建议直接去看文档,此处只做记录。

基于 LXC 的 PVE 容器

在 PVE 创建基于 LXC 的 Docker 容器时,勾选 无特权的容器嵌套

否则容器运行卡顿、脚本执行不畅,还会报错:

Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: error mounting "proc" to rootfs at "/proc": mount proc:/proc (via /proc/self/fd/6), flags: 0xe: permission denied: unknown

安装官方脚本

apt install curl

官网:https://waf-ce.chaitin.cn/docs/guide/install

# su
密码:
root@firewall:/home/firewall# apt install curl ca-certificates curl gnupg
root@firewall:/home/firewall# install -m 0755 -d /etc/apt/keyrings
root@firewall:/home/firewall# bash -c "$(curl -fsSLk https://waf-ce.chaitin.cn/release/latest/setup.sh)"

提示以下信息时,隐式输入 y ,回车。

[SafeLine] 缺少 Docker 环境
[SafeLine] 是否需要自动安装 Docker (Y/n)

提示以下信息时,隐式输入 y ,回车。

================================================================================

[SafeLine] Docker 安装完成
[SafeLine] 发现 Docker 环境: '/usr/bin/docker'
Synchronizing state of docker.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable docker
[SafeLine] Docker 工作状态正常
Docker Compose version v2.21.0
[SafeLine] 发现 Docker Compose Plugin
[SafeLine] 雷池安装目录 (留空则为 '/data/safeline'): [SafeLine] 目录 '/data/safeline' 当前剩余存储空间为 44G ,雷池至少需要 5G,是否确定 (Y/n)

安装完成后,提示:

微信扫描上方二维码加入雷池项目讨论组
[SafeLine] 雷池 WAF 社区版安装成功,请访问以下地址访问控制台
[SafeLine] https://0.0.0.0:9443/
root@firewall:/home/firewall#

检查安装情况

检查 Docker 运行情况。

root@firewall:/home/firewall# docker ps -a

登录

打开 https://<ip>:9443/ ,检查是否正常访问。

下载 Microsoft 移动电话身份验证器应用 ,扫描网页的 QR 码。

绑定成功、获取到动态口令后,完成绑定。

输入动态口令后,即可登录。

配置

SSL 证书

通用配置 -> 设置管理 中添加证书。

通用配置 -> 其他

通用配置 -> 其他 中:

  1. 设置源 IP 获取方式:

    项目 说明
    从 HTTP Header 中获取 X-Real-IP
  2. 设置站点通用配置:

    项目 说明
    强制 HTTPS 不勾选
    使用 HTTP/2 不勾选
    监听 IPv6 勾选
    传递客户端连接的 host 和协议 不勾选
  3. 设置 雷池控制台证书 为新添加的证书。

防护站点

防护站点 中,添加站点:

项目 说明
域名 a.example.com *
端口 10443
SSL 勾选
证书 刚刚添加的证书
上游服务器 https://127.0.0.1:9443/
备注 雷池 WAF

点击提交。

定时任务

aliddns

添加脚本文件

运行容器后,创建路径 /home/scripts/aliddns/ ,有文件:

aliddns aliddns_run.sh

其中:

  • aliddnshonwen/aliyun-ddns-cli 可执行程序。

  • aliddns_run.sh

    在 Debian 主机上使用这个脚本。

    #!/bin/bash
    /ql/data/shell/aliddns/aliddns --id "xxxxxxxxxxxxxxxxxxxxx" --secret "xxxxxxxxxxxxxxxxxxxxxxxxxxx" --ipv6 auto-update --domain example.com
    
    echo '[Docker]' `date` "\taliddns\t" `ip addr show ens3 | grep 'inet6 2409' | grep '<IPv6固定后缀64位>' | awk '{print $2}' | sed 's/.\{3\}$//'`  >> /ql/data/shell/aliddns/aliddns.log
    
  • 赋予执行权限:

    chmod + x aliddns aliddns_run.sh
    

crontab 配置

crontab -e

填写:

*/15 * * * * /bin/sh /home/scripts/aliddns/aliddns_run.sh

liteip

添加脚本文件

运行容器后,创建路径 /home/scripts/liteip ,有文件:

liteip_main_debug.sh

其中:

  • /home/docker/qinglong/data/shell/liteip 对应容器内: /ql/data/shell/liteip .

  • liteipliteip | gitee.com 可执行程序。

执行:

  • python3 liteip_main_debug.sh
    
  • 修改 config.ini 配置文件

    [COMMAND]
    command = ip addr show ens3 | grep 'inet6 2409' | grep '<IPv6固定后缀64位>' | awk '{print $2}' | head -1
    
    [MAIL_SENDER]
    usermail = example@qq.com
    password = xxxxxxxxxxxxxxxx
    server = smtp.qq.com
    port = 465
    username = example
    
    [MAIL_RECEIVER]
    usermail = example@qq.com
    username = example
    
    [MAIL_BODY]
    mail_body = Firewall 数据变更通知
    
    [MAIL_AHERF]
    mail_aherf = <a href='https://example.com/' target='_blank' class='amber'>[雷池 WAF]</a>  。
    

crontab 配置

crontab -e

填写:

*/10 * * * * python3 /home/scripts/liteip/liteip_main_debug.py

ping_subprocess

添加脚本文件

运行容器后,创建路径 /home/scripts/ping_subprocess ,有文件:

ping3  ping_subprocess.py

其中:

执行:

  • python3 liteip_main_debug.sh
    
  • 修改 config.ini 配置文件

    [HOST]
    host = 10.0.1.4
    
    [PORT]
    port = 80
    
    [RESULT]
    result = False
    
    [COMMAND]
    command = wg-quick up firewall
    

crontab 配置

crontab -e

填写:

*/10 * * * * python3 /home/scripts/ping_subprocess/ping_subprocess.py

统合任务脚本

crontab -e 添加:

# per 10 mins
*/10 * * * * python3 /home/scripts/ping_subprocess/ping_subprocess.py

# per 10 mins
*/10 * * * * python3 /home/scripts/liteip/liteip_main_debug.py

# per 15 mins
*/15 * * * * /bin/sh /home/scripts/aliddns/aliddns_run.sh

防护站点

在雷池 WAF 防护站点 中,添加站点:

项目 说明
域名 a.example.com *
端口 10001
SSL 勾选
证书 刚刚添加的证书
上游服务器 http://127.0.0.1:10001/
备注 青龙

点击提交。

posted @ 2023-11-26 23:10  Yogile  阅读(638)  评论(0编辑  收藏  举报