1 个不稳定版本
0.1.6 | 2019年7月13日 |
---|
#7 in #white
240KB
1K SLoC
Le-Guichet
Le-Guichet 是一个使用 Rust 编写的消毒站(即“白站”)的原型,速度快、安全且多线程。
不受信任的文件通过(通过 chrooted sftp)存入入口窗口(内)并由防病毒服务器(clam API)扫描。如果文件被认为不健康,则会记录并立即删除。被认为健康的文件将被记录并散列(sha512),并通过单向软件二极管(命名管道)发送到中转窗口,在那里它们再次记录和散列。最后,中转的文件将通过另一个软件二极管转移到输出窗口。
安全
-
内存安全
-
线程安全
-
无不安全块
-
已用 cargo audit & Clippy 进行测试
-
Systemd 保护
- SystemCallFilter=~ptrace(禁用 ptrace)
- PrivateDevices=yes(限制对 /dev 的访问)
- ProtectSystem=full(/usr、/boot 和 /etc 以只读方式挂载)
- InaccessiblePaths=/proc(/proc 简单地不可访问)
- RemoveIPC=true(当单元停止时删除所有 POSIX IPC)
- RestrictSUIDSGID=true(禁止 SUID/SGID)
- ProtectKernelModules=true(拒绝显式模块加载)
网络流量图
graph LR
A(Untrusted files) -- sftp --> B
B[Guichet-In] -- Scan --> C((Clamd))
C -- Ok/Suppress --> B
B -- Write only access --> E{Diode}
F[Guichet-Transit] -- Read only access --> E
F -- Write only access --> G{Diode}
H[Guichet-Out] -- Read only access --> G
H -- sftp --> I(Trusted files + sha512)
演示视频
安装
- 您必须已经安装了 cargo 和 rustc。
git clone https://gitlab.com/r3dlight/leguichet.git
- 获取帮助
make help
- 测试代码
make test
- 审计代码(运行 cargo install cargo-audit 之前)
make audit
- 构建 Le-Guichet 二进制文件
make build
- 在 Debian/Ubuntu 上安装(未在其他 GNU/Linux 发行版上测试)
sudo make install
卸载 Le-Guichet
sudo make uninstall
待办事项
-
为 yara / 静态分析创建绑定
-
从 fifo 切换到 posix mqueues
-
能够读取 config.toml
-
通过 Cargo 进行 Debian 打包
-
命名空间 / cgroups
依赖项
~19–28MB
~546K SLoC