Crates.io | leguichet-in |
lib.rs | leguichet-in |
version | 0.1.6 |
source | src |
created_at | 2019-07-13 17:11:39.413702 |
updated_at | 2019-07-13 17:11:39.413702 |
description | One way diode with antiviral scanning |
homepage | https://gitlab.com/r3dlight/leguichet |
repository | https://gitlab.com/r3dlight/leguichet |
max_upload_size | |
id | 148818 |
size | 309,902 |
Le-Guichet is a prototype of a decontamination station aka "white station" written in Rust, fast, secure and multithreaded.
Untrusted files are deposited (via a chrooted sftp) in the entry window (in) and scanned by an antivirus server (clamd API). If a file is considered unhealthy, it is logged and immediately deleted. Files considered as healthy are logged and hashed (sha512) and sent to the transit window through a unidirectional software diode (named pipe) where they are logged and hashed again. Finally, files in transit are transfered to the output window through another software diode.
Memory-safe
Thread-safe
No unsafe block
Tested with cargo audit & Clippy
Systemd protections:
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)
git clone https://gitlab.com/r3dlight/leguichet.git
make help
make test
make audit
make build
sudo make install
To uninstall Le-Guichet:
sudo make uninstall
Create bindings for yara / static analysis
Switch from fifo to posix mqueues
Be able to read a config.toml
Debian packaging via Cargo
Namespaces / cgroups