说明
我尝试在 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 证书
在 通用配置 -> 设置管理 中添加证书。
通用配置 -> 其他
在 通用配置 -> 其他 中:
-
设置源 IP 获取方式:
| 项目 |
值 |
说明 |
从 HTTP Header 中获取 |
X-Real-IP |
|
-
设置站点通用配置:
| 项目 |
值 |
说明 |
| 强制 HTTPS |
不勾选 |
|
| 使用 HTTP/2 |
不勾选 |
|
| 监听 IPv6 |
勾选 |
|
| 传递客户端连接的 host 和协议 |
不勾选 |
|
-
设置 雷池控制台证书 为新添加的证书。
防护站点
在 防护站点 中,添加站点:
| 项目 |
值 |
说明 |
| 域名 |
a.example.com * |
|
| 端口 |
10443 |
|
| SSL |
勾选 |
|
| 证书 |
|
刚刚添加的证书 |
| 上游服务器 |
https://127.0.0.1:9443/ |
|
| 备注 |
雷池 WAF |
|
点击提交。
定时任务
aliddns
添加脚本文件
运行容器后,创建路径 /home/scripts/aliddns/ ,有文件:
aliddns aliddns_run.sh
其中:
-
aliddns : honwen/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
其中:
执行:
-
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
其中:
执行:
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/ |
|
| 备注 |
青龙 |
|
点击提交。
来源:https://www.cnblogs.com/Yogile/p/17858198.html |