#named-pipe #sha-512 #station #sftp #white #le-guichet #diode

app leguichet-in

具有抗病毒扫描的单向二极管

1 个不稳定版本

0.1.6 2019年7月13日

#7 in #white

BSD-3-Clause

240KB
1K SLoC

codecov

LeGuichet RER

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(拒绝显式模块加载)

网络流量图

LeGuichet schema

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)

演示视频

Le-Guichet demo video

安装

  • 您必须已经安装了 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