4个版本
0.1.9 | 2020年6月28日 |
---|---|
0.1.8 | 2019年7月16日 |
0.1.7 | 2019年7月15日 |
0.1.6 | 2019年7月13日 |
#1018 in 密码学
105KB
2K SLoC

Le-Guichet
Le-Guichet 是一个消毒站原型,也称为“白色站”,用 Rust 编写,快速、安全且多线程。
不受信任的文件(通过ssh上的rsync)存入入口窗口(内),并由防病毒服务器(clamav-daemon API)自动扫描。如果文件被认为不健康,则将其记录/散列并立即删除。被认为健康的文件也记录并散列(sha256),但通过单向软件二极管(命名管道)发送(带相关散列)到中转窗口,在那里再次记录和散列。使用libyara对文件进行静态分析,如果有规则匹配,则生成报告。最后,中转文件通过另一个软件二极管传输到输出窗口。
安全
-
内存安全
-
线程安全
-
无不安全代码
-
模式2 seccomp(支持x86_64和aarch64)
-
使用cargo audit & Clippy进行测试
-
所有守护进程都以无权限用户运行
-
每个守护进程的系统d保护
- SystemCallFilter=~ptrace(禁用ptrace)
- PrivateDevices=yes(限制对/dev的访问)
- ProtectSystem=full(/usr、/boot和/etc挂载为只读)
- InaccessiblePaths=/proc(/proc无法访问)
- RemoveIPC=true(当单元停止时移除所有POSIX IPC)
- RestrictSUIDSGID=true(禁止SUID/SGID)
- ProtectKernelModules=true(拒绝显式模块加载)
注意: LeGuichet已经与Grsecurity内核补丁进行了测试。它只需要禁用ELF二进制的MPROTECT。
流程图

演示视频
安装
-
下载最新构建工件并解压缩(见下图)
-
安装所需依赖项
apt-get install clamav-daemon clamav-freshclam pkg-config libyara3 git bash acl adduser
-
更新您的freshclam数据库
-
将以下内容添加到 /etc/clamav/clamd.conf 并重新启动守护进程
- TCPSocket 3310
- TCPAddr 127.0.0.1
-
安装(在Debian或基于Debian的系统上测试过,如Ubuntu)
sudo make install
注意: 您可能需要根据您的需求修改LeGuichet的默认参数,方法是通过编辑以下文件
sudo vi /etc/default/leguichet-in
sudo vi /etc/default/leguichet-transit
sudo vi /etc/default/leguichet-out
从源代码安装
- 您必须在系统上安装以下包
- cargo
- rustc
然后安装以下依赖项(Debian Buster)
apt-get install clamav-daemon clamav-freshclam pkg-config libyara3 libyara-dev git bash clang-7 libclang-common-7-dev libclang-7-dev libclang-dev libclang1-7 liblzma-dev liblzma5 llvm-dev libllvm7 llvm
- 将以下内容添加到 /etc/clamav/clamd.conf 并重新启动守护进程
- TCPSocket 3310
- TCPAddr 127.0.0.1
克隆仓库
git clone --depth=1 https://gitlab.com/r3dlight/leguichet.git
- 获取一些帮助
make help
- 审核代码的安全性(在运行cargo install cargo-audit之前)
make audit
- 构建 Le-Guichet 二进制文件
make build
- 安装在 Debian 或基于 Debian 的系统上,如 Ubuntu(未在其他 GNU/Linux 发行版上测试过)
sudo make install
添加您的用户
您可能需要创建属于“leguichet-in”组的用户,以便能够将文件存入 /home/in/,例如
sudo adduser --home /home/in --gid [LEGUICHET-IN_GID] user-in
(其中 LEGUICHET-IN_GID 是“leguichet-in”组的 ID)
您还需要创建属于 leguichet-out 组的新用户,以便能够从 /home/out/ 中检索文件
sudo adduser --home /home/out --gid [LEGUICHET-OUT_GID] user-out
(其中 LEGUICHET-OUT_GID 是“leguichet-out”组的 ID)
用法(客户端)
为了 避免 leguichet-in 守护进程以 root 权限运行,我们利用了 rsync 二进制文件
要将目录发送到 /home/in ,请使用带 --chmod=ug=rwx 选项的 rsync 通过 ssh 发送
rsync -r -e ssh --chmod=ug=rwx /path/MyFolder user-in@IP-in:
发送文件
rsync -e ssh --chmod=ug=rwx /path/MyFile.docx user-in@IP-in:
发送目录中的所有文件
rsync -r -e ssh --chmod=ug=rwx /path/MyFolder/ user-in@IP-in:
user-out 可以简单地通过 ssh 登录来获取文件。
卸载 Le-Guichet
sudo make uninstall
待办事项
- 为传输文件添加熵检测
- 能够读取 config.toml 配置文件
- 通过 Cargo 进行 Debian 打包
依赖项
~24–36MB
~700K SLoC