#file #window #security #rsync #ssh #output #secure

app leguichet

带有抗病毒和yara扫描的单向二极管

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 密码学

GPL-3.0 许可证

105KB
2K SLoC

Dependency Status Build Status License: GPL v3 codecov

LeGuichet RER

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。

流程图

LeGuichet schema

演示视频

Le-Guichet demo video

安装

  • 下载最新构建工件并解压缩(见下图) 下载

  • 安装所需依赖项

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