松哥爱吃里脊肉 發表於 2023-11-26 23:10:00

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

<h2 id="说明">说明</h2>
<p>我尝试在 iKuai 上安装单网口旁路由(防火墙)虚拟机,实现内网安全的需求。</p>
<p>在 Github 上找可以安装在 Debian (或者其他系统)上的 WAF 或者 Firewall 程序,看到了 SafeLine 。</p>
<p>进入官网,体验 Demo 后发现:社区版有非常简单的 Web 反向代理和防火墙设置,也没有什么账户绑定。</p>
<p>我决定尝试使用一段时间。</p>
<blockquote>
<p>因为 iKuai 无法正常安装 OPNsense 虚拟机,我遇到了许多困难,但 iKuai 无法进入控制台,我甚至不知道问题出在哪里。可能是双网口配置不支持,但尝试了单网口 lan 配置后改 wan 口仍然无法正常访问后,已经耗费了一天多的时间。放弃了。</p>
</blockquote>
<h2 id="安装雷池-waf">安装雷池 WAF</h2>
<p>官方提供了非常丰富完善的操作指南: 上手指南 | 雷池 WAF 社区版 (chaitin.cn) 。</p>
<p>建议直接去看文档,此处只做记录。</p>
<h3 id="基于-lxc-的-pve-容器">基于 LXC 的 PVE 容器</h3>
<p>在 PVE 创建基于 LXC 的 Docker 容器时,勾选 <code>无特权的容器</code> 和 <code>嵌套</code> 。</p>
<p>否则容器运行卡顿、脚本执行不畅,还会报错:</p>
<pre><code>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
</code></pre>
<h3 id="安装官方脚本">安装官方脚本</h3>
<p><code>apt install curl</code></p>
<p>官网:https://waf-ce.chaitin.cn/docs/guide/install</p>
<pre><code># 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)"
</code></pre>
<p>提示以下信息时,隐式输入 <code>y</code> ,回车。</p>
<pre><code> 缺少 Docker 环境
是否需要自动安装 Docker (Y/n)
</code></pre>
<p>提示以下信息时,隐式输入 <code>y</code> ,回车。</p>
<pre><code>================================================================================

Docker 安装完成
发现 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
Docker 工作状态正常
Docker Compose version v2.21.0
发现 Docker Compose Plugin
雷池安装目录 (留空则为 '/data/safeline'): 目录 '/data/safeline' 当前剩余存储空间为 44G ,雷池至少需要 5G,是否确定 (Y/n)
</code></pre>
<p>安装完成后,提示:</p>
<pre><code>微信扫描上方二维码加入雷池项目讨论组
雷池 WAF 社区版安装成功,请访问以下地址访问控制台
https://0.0.0.0:9443/
root@firewall:/home/firewall#
</code></pre>
<h3 id="检查安装情况">检查安装情况</h3>
<p>检查 Docker 运行情况。</p>
<pre><code>root@firewall:/home/firewall# docker ps -a
</code></pre>
<h2 id="登录">登录</h2>
<p>打开 <code>https://&lt;ip&gt;:9443/</code> ,检查是否正常访问。</p>
<p>下载 Microsoft 移动电话身份验证器应用 ,扫描网页的 QR 码。</p>
<p>绑定成功、获取到动态口令后,完成绑定。</p>
<p>输入动态口令后,即可登录。</p>
<h2 id="配置">配置</h2>
<h3 id="ssl-证书">SSL 证书</h3>
<p>在 <code>通用配置 -&gt; 设置管理</code> 中添加证书。</p>
<h3 id="通用配置---其他">通用配置 -&gt; 其他</h3>
<p>在 <code>通用配置 -&gt; 其他</code> 中:</p>
<ol>
<li>
<p>设置源 IP 获取方式:</p>
<table>
<thead>
<tr>
<th>项目</th>
<th>值</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>从 HTTP Header 中获取</code></td>
<td><code>X-Real-IP</code></td>
<td></td>
</tr>
</tbody>
</table>
</li>
<li>
<p>设置站点通用配置:</p>
<table>
<thead>
<tr>
<th>项目</th>
<th>值</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>强制 HTTPS</td>
<td>不勾选</td>
<td></td>
</tr>
<tr>
<td>使用 HTTP/2</td>
<td>不勾选</td>
<td></td>
</tr>
<tr>
<td>监听 IPv6</td>
<td>勾选</td>
<td></td>
</tr>
<tr>
<td>传递客户端连接的 host 和协议</td>
<td>不勾选</td>
<td></td>
</tr>
</tbody>
</table>
</li>
<li>
<p>设置 <code>雷池控制台证书</code> 为新添加的证书。</p>
</li>
</ol>
<h3 id="防护站点">防护站点</h3>
<p>在 <code>防护站点</code> 中,添加站点:</p>
<table>
<thead>
<tr>
<th>项目</th>
<th>值</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>域名</td>
<td><code>a.example.com</code> <code>*</code></td>
<td></td>
</tr>
<tr>
<td>端口</td>
<td><code>10443</code></td>
<td></td>
</tr>
<tr>
<td>SSL</td>
<td>勾选</td>
<td></td>
</tr>
<tr>
<td>证书</td>
<td></td>
<td>刚刚添加的证书</td>
</tr>
<tr>
<td>上游服务器</td>
<td><code>https://127.0.0.1:9443/</code></td>
<td></td>
</tr>
<tr>
<td>备注</td>
<td>雷池 WAF</td>
<td></td>
</tr>
</tbody>
</table>
<p>点击提交。</p>
<h2 id="定时任务">定时任务</h2>
<h3 id="aliddns">aliddns</h3>
<h4 id="添加脚本文件">添加脚本文件</h4>
<p>运行容器后,创建路径 <code>/home/scripts/aliddns/</code> ,有文件:</p>
<pre><code>aliddns aliddns_run.sh
</code></pre>
<p>其中:</p>
<ul>
<li>
<p><code>aliddns</code> : honwen/aliyun-ddns-cli 可执行程序。</p>
</li>
<li>
<p><code>aliddns_run.sh</code> :</p>
<blockquote>
<p>在 Debian 主机上使用这个脚本。</p>
</blockquote>
<pre><code>#!/bin/bash
/ql/data/shell/aliddns/aliddns --id "xxxxxxxxxxxxxxxxxxxxx" --secret "xxxxxxxxxxxxxxxxxxxxxxxxxxx" --ipv6 auto-update --domain example.com

echo '' `date` "\taliddns\t" `ip addr show ens3 | grep 'inet6 2409' | grep '&lt;IPv6固定后缀64位&gt;' | awk '{print $2}' | sed 's/.\{3\}$//'`&gt;&gt; /ql/data/shell/aliddns/aliddns.log
</code></pre>
</li>
<li>
<p>赋予执行权限:</p>
<pre><code>chmod + x aliddns aliddns_run.sh
</code></pre>
</li>
</ul>
<h4 id="crontab-配置">crontab 配置</h4>
<pre><code>crontab -e
</code></pre>
<p>填写:</p>
<pre><code>*/15 * * * * /bin/sh /home/scripts/aliddns/aliddns_run.sh
</code></pre>
<h3 id="liteip">liteip</h3>
<h4 id="添加脚本文件-1">添加脚本文件</h4>
<p>运行容器后,创建路径 <code>/home/scripts/liteip</code> ,有文件:</p>
<pre><code>liteip_main_debug.sh
</code></pre>
<p>其中:</p>
<ul>
<li>
<p><code>/home/docker/qinglong/data/shell/liteip</code> 对应容器内: <code>/ql/data/shell/liteip</code> .</p>
</li>
<li>
<p><code>liteip</code> : liteip | gitee.com 可执行程序。</p>
</li>
</ul>
<p>执行:</p>
<ul>
<li>
<pre><code>python3 liteip_main_debug.sh
</code></pre>
</li>
<li>
<p>修改 <code>config.ini</code> 配置文件</p>
<pre><code>
command = ip addr show ens3 | grep 'inet6 2409' | grep '&lt;IPv6固定后缀64位&gt;' | awk '{print $2}' | head -1


usermail = example@qq.com
password = xxxxxxxxxxxxxxxx
server = smtp.qq.com
port = 465
username = example


usermail = example@qq.com
username = example


mail_body = Firewall 数据变更通知


mail_aherf = &lt;a href='https://example.com/' target='_blank' class='amber'&gt;[雷池 WAF]&lt;/a&gt;。
</code></pre>
</li>
</ul>
<h4 id="crontab-配置-1">crontab 配置</h4>
<pre><code>crontab -e
</code></pre>
<p>填写:</p>
<pre><code>*/10 * * * * python3 /home/scripts/liteip/liteip_main_debug.py
</code></pre>
<h3 id="ping_subprocess">ping_subprocess</h3>
<h4 id="添加脚本文件-2">添加脚本文件</h4>
<p>运行容器后,创建路径 <code>/home/scripts/ping_subprocess</code> ,有文件:</p>
<pre><code>ping3ping_subprocess.py
</code></pre>
<p>其中:</p>
<ul>
<li>
<p><code>ping3</code>: python ping命令工具包。</p>
</li>
<li>
<p><code>ping_subprocess.py</code> : opnsense_tools | gitee.com 可执行程序。</p>
</li>
</ul>
<p>执行:</p>
<ul>
<li>
<pre><code>python3 liteip_main_debug.sh
</code></pre>
</li>
<li>
<p>修改 <code>config.ini</code> 配置文件</p>
<pre><code>
host = 10.0.1.4


port = 80


result = False


command = wg-quick up firewall
</code></pre>
</li>
</ul>
<h4 id="crontab-配置-2">crontab 配置</h4>
<pre><code>crontab -e
</code></pre>
<p>填写:</p>
<pre><code>*/10 * * * * python3 /home/scripts/ping_subprocess/ping_subprocess.py
</code></pre>
<h3 id="统合任务脚本">统合任务脚本</h3>
<p><code>crontab -e</code> 添加:</p>
<pre><code># 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
</code></pre>
<h3 id="防护站点-1">防护站点</h3>
<p>在雷池 WAF <code>防护站点</code> 中,添加站点:</p>
<table>
<thead>
<tr>
<th>项目</th>
<th>值</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>域名</td>
<td><code>a.example.com</code> <code>*</code></td>
<td></td>
</tr>
<tr>
<td>端口</td>
<td><code>10001</code></td>
<td></td>
</tr>
<tr>
<td>SSL</td>
<td>勾选</td>
<td></td>
</tr>
<tr>
<td>证书</td>
<td></td>
<td>刚刚添加的证书</td>
</tr>
<tr>
<td>上游服务器</td>
<td><code>http://127.0.0.1:10001/</code></td>
<td></td>
</tr>
<tr>
<td>备注</td>
<td>青龙</td>
<td></td>
</tr>
</tbody>
</table>
<p>点击提交。</p><br><br>
来源:https://www.cnblogs.com/Yogile/p/17858198.html
頁: [1]
查看完整版本: Debian 安装雷池 WAF(SafeLine)+计划+DDNS