readme.md 2.15 KB
Newer Older
liming6's avatar
liming6 committed
1
# Readme
2

liming6's avatar
liming6 committed
3
file-minitor是一个监控sftp和scp上传文件动作并对上传文件进行病毒扫描的工具
4

liming6's avatar
liming6 committed
5
## 工作方式
6

liming6's avatar
liming6 committed
7
(1) 针对sftp,它解析实时sftp日志,识别上传文件行为并使用clamdscan扫描文件
liming6's avatar
liming6 committed
8

liming6's avatar
liming6 committed
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
需要rsyslog和sshd服务同时启用

a. 修改rsyslog配置,将日志发送到unix socket中

```bash
# 写入配置文件
cat > /etc/rsyslog.d/sftp.conf <<EOF
\$ModLoad omuxsock
\$OMUxSockSocket /tmp/rsyslog.sock
authpriv.* :omuxsock:
EOF

# 重启rsyslog服务,启用上述配置
systemctl restart rsyslog
```

b. 修改 sshd_config 配置,让sftp将日志写入rsyslog的AUTHPRIV事件队列中

```
# Subsystem       sftp    /usr/libexec/openssh/sftp-server
Subsystem       sftp    /usr/libexec/openssh/sftp-server -l INFO -f AUTHPRIV
```

重启sshd服务:`systemctl restart sshd`

经过上述配置后,即可在unix socket `/tmp/rsyslog.sock` 监听到sftp日志了


(2) 针对scp,它利用auditd中的审计规则判识别写文件动作,需要系统auditd服务,并添加以下审计规则:

```bash
# 监控scp创建文件动作
-a always,exit -F arch=b64 -S openat -F exe=/usr/bin/scp -F a2&0x40 -F key=scp_create_file
-a always,exit -F arch=b64 -S open -F exe=/usr/bin/scp -F a1&0x40 -F key=scp_create_file
# 监控scp关闭文件动作
-a always,exit -F arch=b64 -S close -F exe=/usr/bin/scp -F key=scp_close_file
```

可以将上述规则写到 `/etc/audit/rules.d/audit.rules` 中并通过 `service auditd reload`命令持久化


一旦上传文件完成,file-monitor会立即修改文件名,添加 `.scanning` 后缀,若扫描到文件,删除文件,否则会恢复文件名
liming6's avatar
liming6 committed
51
52
53
54
55


扫描病毒文件的时间会根据文件类型、文件大小而变化,最长扫描时间为5分钟

同样大小下,`.zip`文件扫描比较慢,建议压缩包格式为 `.tar.gz`
56

liming6's avatar
liming6 committed
57
58
59
60
## 日志

日志会记录在 `/var/log/file-monitor.<启动时间>.log` 文件里

61
62
63
64
65
## todo

添加白名单:

- 用户白名单:不扫描指定用户上传的文件
liming6's avatar
liming6 committed
66
67
68
69
- 路径白名单:不扫描上传到指定路径的文件

增加可识别文件类型功能,对于文本类型,直接跳过扫描
针对压缩包,使用流式扫描以加速扫描