从0搭建一个超级安全的内网文件存储服务(雷池WAF+cloudreve)
从0搭建一个超级安全的内网文件存储服务(雷池WAF+cloudreve)
雷池WAF是什么?
SafeLine,中文名 "雷池",是一款简单好用, 效果突出的 Web 应用防火墙(WAF),可以保护 Web 服务不受黑客攻击。
雷池通过过滤和监控 Web 应用与互联网之间的 HTTP 流量来保护 Web 服务。可以保护 Web 服务免受 SQL 注入、XSS、 代码注入、命令注入、CRLF 注入、ldap 注入、xpath 注入、RCE、XXE、SSRF、路径遍历、后门、暴力破解、CC、爬虫 等攻击。
WAF是什么?
Web应用防火墙,又称网站应用级入侵防御系统,是通过监控和分析HTTP/HTTPS流量实现Web应用安全防护的技术。其核心功能包括拦截SQL注入、跨站脚本(XSS)、跨站请求伪造(CSRF)等网络攻击,工作于网络应用层并与传统防火墙形成技术互补。WAF采用反向代理模式实现访问控制及安全策略的动态更新,可通过配置文件调整拦截规则 。
什么是cloudreve?
Cloudreve 可以让您快速搭建起公私兼备的网盘系统。Cloudreve 在底层支持不同的云存储平台,用户在实际使用时无须关心物理存储方式。你可以使用 Cloudreve 搭建个人用网盘、文件分享系统,亦或是针对大小团体的公有云系统。
以下服务均使用docker安装,对新手友好,方便管理
合在一起能干嘛?


把雷池WAF和cloudreve结合在一起能搭建出一个非常非常安全的个人存储网盘,用雷池WAF个人版来弥补cloudreve免费版的安全性不足问题。
话不多说上操作:
安装docker:
[root@localhost ~]# sudo yum install -y yum-utils
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@localhost ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@localhost ~]# sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
[root@localhost ~]# sudo systemctl enable --now docker.service
配置镜像加速:
sudo tee /etc/docker/daemon.json <<EOF
{
"registry-mirrors": [
"https://docker.1ms.run",
"https://mirror.ccs.tencentyun.com"
]
}
EOF
安装cloudreve:
[root@localhost ~]# docker run -d --name cloudreve \
> -p 5212:5212 \
> -p 6888:6888 \
> -p 6888:6888/udp \
> -v ~/cloudreve/data:/cloudreve/data \
> cloudreve/cloudreve:latest
其中:
> -v ~/cloudreve/data:自己想存哪里存哪里 \
[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6c6bc99a0ef6 cloudreve/cloudreve:latest "sh ./entrypoint.sh" About a minute ago Up About a minute 0.0.0.0:5212->5212/tcp, :::5212->5212/tcp, 443/tcp, 0.0.0.0:6888->6888/tcp, :::6888->6888/tcp, 0.0.0.0:6888->6888/udp, :::6888->6888/udp cloudreve
接下来访问5212端口,注册的第一个用户默认就是管理员


安装雷池WAF:
[root@localhost ~]# bash -c "$(curl -fsSLk https://waf-ce.chaitin.cn/release/latest/manager.sh)"
Python3 is not installed. Would you like to install it automatically? (y/n) y
Python3 is not installed. Attempting to install...
CentOS-8.5.2111 - Base - mirrors.aliyun.com 1.9 MB/s | 4.6 MB 00:02
CentOS-8.5.2111 - Extras - mirrors.aliyun.com 49 kB/s | 10 kB 00:00
CentOS-8.5.2111 - AppStream - mirrors.aliyun.com 1.3 MB/s | 8.4 MB 00:06
Docker CE Stable - x86_64 145 kB/s | 66 kB 00:00
Extra Packages for Enterprise Linux 8 - x86_64 840 kB/s | 14 MB 00:17
依赖关系解决。
================================================================================================
软件包 架构 版本 仓库 大小
================================================================================================
安装:
python36 x86_64 3.6.8-38.module_el8.5.0+895+a459eca8 AppStream 19 k
升级:
chkconfig x86_64 1.19.1-1.el8 base 198 k
platform-python-pip noarch 9.0.3-20.el8 base 1.7 M
安装依赖关系:
python3-pip noarch 9.0.3-20.el8 AppStream 20 k
python3-setuptools noarch 39.2.0-6.el8 base 163 k
启用模块流:
python36 3.6
事务概要
================================================================================================
安装 3 软件包
升级 2 软件包
总下载:2.1 M
下载软件包:
(1/5): python36-3.6.8-38.module_el8.5.0+895+a459eca8.x86_64.rpm 185 kB/s | 19 kB 00:00
(2/5): python3-pip-9.0.3-20.el8.noarch.rpm 186 kB/s | 20 kB 00:00
(3/5): python3-setuptools-39.2.0-6.el8.noarch.rpm 977 kB/s | 163 kB 00:00
(4/5): chkconfig-1.19.1-1.el8.x86_64.rpm 1.8 MB/s | 198 kB 00:00
(5/5): platform-python-pip-9.0.3-20.el8.noarch.rpm 1.0 MB/s | 1.7 MB 00:01
------------------------------------------------------------------------------------------------
总计 1.1 MB/s | 2.1 MB 00:01
运行事务检查
事务检查成功。
运行事务测试
事务测试成功。
运行事务
准备中 : 1/1
升级 : platform-python-pip-9.0.3-20.el8.noarch 1/7
升级 : chkconfig-1.19.1-1.el8.x86_64 2/7
安装 : python3-setuptools-39.2.0-6.el8.noarch 3/7
安装 : python3-pip-9.0.3-20.el8.noarch 4/7
安装 : python36-3.6.8-38.module_el8.5.0+895+a459eca8.x86_64 5/7
运行脚本: python36-3.6.8-38.module_el8.5.0+895+a459eca8.x86_64 5/7
清理 : platform-python-pip-9.0.3-18.el8.noarch 6/7
清理 : chkconfig-1.13-2.el8.x86_64 7/7
运行脚本: chkconfig-1.13-2.el8.x86_64 7/7
验证 : python3-setuptools-39.2.0-6.el8.noarch 1/7
验证 : python3-pip-9.0.3-20.el8.noarch 2/7
验证 : python36-3.6.8-38.module_el8.5.0+895+a459eca8.x86_64 3/7
验证 : chkconfig-1.19.1-1.el8.x86_64 4/7
验证 : chkconfig-1.13-2.el8.x86_64 5/7
验证 : platform-python-pip-9.0.3-20.el8.noarch 6/7
验证 : platform-python-pip-9.0.3-18.el8.noarch 7/7
Installed products updated.
已升级:
chkconfig-1.19.1-1.el8.x86_64 platform-python-pip-9.0.3-20.el8.noarch
已安装:
python3-pip-9.0.3-20.el8.noarch python3-setuptools-39.2.0-6.el8.noarch
python36-3.6.8-38.module_el8.5.0+895+a459eca8.x86_64
完毕!
______ ___ _____ _ ____ ____ _ ________
.' ____ \ .' ..] |_ _| (_) |_ _| |_ _| / \ |_ __ |
| (___ \_| ,--. _| |_ .---. | | __ _ .--. .---. \ \ /\ / / / _ \ | |_ \_|
_.____`. `'_\ : '-| |-' / /__\\ | | _ [ | [ `.-. | / /__\\ \ \/ \/ / / ___ \ | _|
| \____) | // | |, | | | \__., _| |__/ | | | | | | | | \__., \ /\ / _/ / \ \_ _| |_
\______.' \'-;__/ [___] '.__.' |________| [___] [___||__] '.__.' \/ \/ |____| |____| |_____|
[INFO 11:14:15]: SafeLine,中文名 "雷池",是一款简单好用, 效果突出的 Web 应用防火墙(WAF),可以保护 Web 服务不受黑客攻击。
[INFO 11:14:15]: 雷池通过过滤和监控 Web 应用与互 联网之间的 HTTP 流量来保护 Web 服务。可以保护 Web 服务免受 SQL 注入、XSS 、 代码注入、命令注入、CRLF 注入、ldap 注入、xpath 注入、RCE、XXE、SSRF、路径遍历、后门、暴力破解、CC、爬虫 等攻击。
选择你要执行的动作 [ 1.安装 2.升级 3.卸载 4.修复 5.重启 ] (1/2/3/4/5): 选择你要执行的动作 [ 1.安装 2.升级 3.卸载 4.修复 5.重启 ] (1/2/3/4/5): 1
[INFO 11:14:22]: 即将为您安装雷池 WAF
[INFO 11:14:22]: 检查 docker 版本
[INFO 11:14:22]: 检查 docker compose 版本
/etc/resolv.conf 文件中存在 ipv6 地址包含区域 ID,是否删除包含区域 ID 的 ipv6 nameserver [ y.是 n.否 ] (y/n): y
[INFO 11:14:32]: 检查安装环境已完成
请输入雷池 WAF 的安装目录 (留空则为默认值 /data/safeline):
[INFO 11:14:33]: 正在初始化挂载目录
[INFO 11:14:33]: 挂载目录初始化完成
[INFO 11:14:33]: "/data/safeline" 路径有 46.76 GB 的空间可用
[INFO 11:14:33]: 正在下载 docker-compose.yaml 文件
[INFO 11:14:33]: 正在更新 .env 配置文件
[INFO 11:14:35]: 正在获取雷池 WAF 最新版本
[INFO 11:14:35]: 目标版本:9.3.9
[INFO 11:14:35]: 正在拉取 Docker 镜像
[+] Pulling 71/7
✔ luigi Pulled 17.5s
✔ mgt Pulled 7.0s
✔ detect Pulled 11.8s
✔ fvm Pulled 15.9s
✔ chaos Pulled 5.0s
✔ postgres Pulled 18.6s
✔ tengine Pulled 12.0s
[INFO 11:14:54]: 正在启动 Docker 容器
[INFO 11:14:57]: 雷池 WAF 安装完成
[INFO 11:14:57]: 等待 mgt 启动
[INFO 11:15:02]: 等待 mgt 启动
[INFO 11:15:07]: 等待 mgt 启动
[INFO 11:15:12]: 等待 mgt 启动
[INFO 11:15:17]: 等待 mgt 启动
[INFO 11:15:22]: 等待 mgt 启动
[INFO 11:15:27]: 设置 admin
[INFO 11:15:30]:
[INFO] Initial username:admin
[INFO] Initial password:JLRF7oD9
[INFO] Done
[INFO 11:15:30]: 雷池 WAF 管理面板: https://192.168.2.52:9443/
[INFO 11:15:30]: 雷池 WAF 管理面板: https://0.0.0.0:9443/
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
█ ▄▄▄▄▄ █▀ █▀▀██▀▄▀▀▄▀▄▀▄██ ▄▄▄▄▄ █
█ █ █ █▀ ▄ █▀▄▄▀▀ ▄█▄ ▀█ █ █ █
█ █▄▄▄█ █▀█ █▄█▄▀▀▄▀▄ ▀▀▄▄█ █▄▄▄█ █
█▄▄▄▄▄▄▄█▄█▄█ █▄▀ █ ▀▄▀ █▄█▄▄▄▄▄▄▄█
█▄ ▄▄ █▄▄ ▄█▄▄▄▄▀▄▀▀▄██ ▄▄▀▄█▄▀ ▀█
█▄ ▄▀▄ ▄▀▄ ▀ ▄█▀ ▀▄ █▀▀ ▀█▀▄██▄▀▄██
██ ▀▄█ ▄ ▄▄▀▄▀▀█▄▀▄▄▀▄▀▄ ▄ ▀▄▄▄█▀▀█
█ █▀▄▀ ▄▀▄▄▀█▀ ▄▄ █▄█▀▀▄▀▀█▄█▄█▀▄██
█ █ ▀ ▄▀▀ ██▄█▄▄▄▄▄▀▄▀▀▀▄▄▀█▄▀█ ▀█
█ █ ▀▄ ▄██▀▀ ▄█▀ ▀███▄ ▀▄▀▄▄ ▄▀▄██
█▀▄▄█ ▄▀▄▀ ▄▀▀▀▄▀▄▀ ▄▀▄ ▄▀ ▄▀█ ▀█
█ █ █ █▄▀ █▄█▀ ▄▄███▀▀▀▄█▀▄ ▀ ▀▄██
█▄███▄█▄▄▀▄ █▄█▄▄▄▄▀▀▄█▀▀ ▄▄▄ ▀█ █
█ ▄▄▄▄▄ █▄▀█ ▄█▀▄ █▀█▄ ▀ █▄█ ▀▄▀█
█ █ █ █ █▄▀▀▀▄▄▄▀▀▀▀▀▀ ▄▄ ▀█ █
█ █▄▄▄█ █ ▀█▀ ▄▄▄▄ ▀█ ▀▀▄▀ ▀▀ ▀███
█▄▄▄▄▄▄▄█▄▄██▄█▄▄█▄██▄██▄▄█▄▄█▄█▄██
微信扫描上方二维码加入雷池项目讨论组
像上面这样雷池就安装成功了,但是我建议保存一下安装信息,其中
[INFO] Initial username:admin
[INFO] Initial password:JLRF7oD9
[INFO] Done
[INFO 11:15:30]: 雷池 WAF 管理面板: https://192.168.2.52:9443/
[INFO 11:15:30]: 雷池 WAF 管理面板: https://0.0.0.0:9443/
这一段是需要保存的信息,里面提供了账号:admin 密码:JLRF7oD9 以及访问的地址和端口https://192.168.2.52:9443/
让雷池起作用:

咱们得想办法把雷池放在最外层,让它挡在前面,再想办法把咱们里面的东西藏起来,让外面只能看到雷池,除了雷池公布的80和443端口外,其它的都看不到,最好是禁ping,接下来开始操作
登录,下图是主页面:

咱们先添加一个证书,我这里的证书是自己自签名的证书,会弹出不安全的标识,但是够咱们内网用了

添加我们上面搭建的cloudreve到雷池里

域名可填可不填,不填就是*
端口默认80和443,这样咱们访问的时候直接敲IP地址或者域名就能直接访问,不用在后面带端口号,方便很多
证书选择刚刚咱们添加进去的
选择代理到已有应用
上游服务器咱写http://127.0.0.1:5212 其中需要注意的是后面要带cloudreve的端口号,如果雷池和cloudreve不在一个服务器上那么这里就需要填写cloudreve服务器的地址

添加完成(如果弹出无法添加,大概率就是端口号被占用了,就需要手动排查是那个服务把80和443占了,给他kill掉或者让占用的使用别的端口去):

接下来就是完善配置,跟着操作来就行



接下来让防火墙允许外面的设备访问80和443端口
[root@localhost ~]# firewall-cmd --add-rich-rule 'rule family=ipv4 source address=0.0.0.0/0 port port=80 protocol=tcp ac
cept' --permanent
success
[root@localhost ~]# firewall-cmd --add-rich-rule 'rule family=ipv4 source address=0.0.0.0/0 port port=443 protocol=tcp a
ccept' --permanent
success
[root@localhost ~]# firewall
firewall-cmd firewalld firewall-offline-cmd
[root@localhost ~]# firewall-cmd --reload
success
开始隐藏咱们的真实端口,让别人找不到,要么丢弃包要么拒绝包,我这里是拒绝,最好是丢弃,这样看起来更正常
[root@localhost ~]# firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='0.0.0.0/0' port protoco
l='tcp' port='5212' reject"
[root@localhost ~]# firewall-cmd --reload
到这里就差不多了,咱们浏览器的搜索栏里直接输入IP地址,什么都不加192.168.2.52,就会跳转到这个页面

简简单单咱们来测试一下最简单的sql注入:

成功拦截,并在控制台看到拦截记录

这边雷池有三个模式,还是挺好用的

第一格防护模式就是正常的那种带拦截的可以保护WEB应用安全
第二个是观察模式,如果是自己要上传某个文件,自己确定是安全的,但是雷池一直在拦截,肯定这文件有问题,但是咱们想忽略风险继续上传的话,可以切换到这个模式,就只会记录操作,不会拦截
第三个是维护模式,比如我WEB服务要升级了,小站咱们是小站,咱们就返回这个页面,不给对面看到的机会


继续配置让雷池更好用:























以上是个人的简单心得,文内还有很多不足,总之一句话,放开该有的权限,尽最大可能的去缩小权限,本人在省委党校搭建的这个服务已通过渗透测试和基线核查,下次讲怎么把服务器做到尽可能的安全,不足之处还请批评指正!谢谢!

浙公网安备 33010602011771号