yaraのdaemonを開発中です
yarad
why
無かったor動かなかったので
なんかPythonの奴があった気がするけど、Pythonはなぁという気持ちになったのと、Rustでこういうプログラムを作ってみたくなったのでやっています。
ラボユースの夏合宿の時にガーっと書いたものの、まだ完成とはいい難い状況。
初めたのは2年くらい前ですが、全然進捗が無いのでここで共有して火をつけようという魂胆です。
usage
一応clamd互換のAPIを意識しています。
プロトコルはかなり似せているのでclamdscanでも動くと思います
$ ./target/release/yaradscan --help
Usage: yaradscan [OPTIONS] <COMMAND>
Commands:
ping ping to daemon
version daemon version
reload reload daemon
shutdown shutdown daemon
scan scan
cont-scan Scan the file or directory at the given path (recursively) and don't stop the scanning when a malware found
multi-scan Scan the file or directory at the given path (recursively) using multi thread
instream-scan Scan the file inside stream
help Print this message or the help of the given subcommand(s)
Options:
-r, --report <REPORT> Save scan report in FILE
-h, --help Print help
-V, --version Print version
$ ./target/release/yaradscan scan /bin/ls
OK: /bin/ls
$ nc -U /var/run/yarad/yarad.ctl
nSCAN /bin/ls
OK: /bin/ls
$ sudo RUST_LOG=info ./target/release/yarad -c config_example.yaml --foreground start
[2023-12-21T13:12:45Z INFO yarad] Starting yarad
[2023-12-21T13:12:45Z INFO yarad::daemon] yarad started
[2023-12-21T13:12:45Z INFO yarad::sock] Listening on /var/run/yarad/yarad.ctl, perm 0o666
[2023-12-21T13:12:45Z INFO yarad::daemon] starting main loop
[2023-12-21T13:12:56Z INFO yarad::protocol] Delimiter type: z
[2023-12-21T13:12:56Z INFO yarad::protocol] Parsing command: SCAN /bin/ls
[2023-12-21T13:12:56Z INFO yarad::daemon] received 1 commands
[2023-12-21T13:12:56Z INFO yarad::daemon] Received scan request for /bin/ls
[2023-12-21T13:12:56Z INFO yarad::daemon] OK: /bin/ls
impl
現状実装済みのコマンドは
- PING
- pong
- VERSION
- version
- RELOAD
- ルールの再コンパイル
- SCAN
- 渡されたパスのスキャン
ですが、まずはINSTREAM
みたいな感じでstreamで渡された内容を直接スキャンする機能も作りたいですね。
ディレクトリの再帰的なスキャンも実装したいと思ったらもうしてありました。
つまり通常使用では普通に使えそう。ということです。
もしよかったら使ってみて、フィードバックをください。
おわりに
この記事はn01e0 Advent Calendar 2023の20日目の記事です。
明日はあるかわかりません
また、IPFactory OB Advent Calendar 2023の20日目の記事も兼ねています。
Comments