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

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

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

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

liming6's avatar
liming6 committed
9
需要rsyslog和sshd服务同时启用
liming6's avatar
liming6 committed
10

liming6's avatar
liming6 committed
11
a. 修改rsyslog配置,将日志发送到unix socket中
liming6's avatar
liming6 committed
12

liming6's avatar
liming6 committed
13
14
15
16
17
18
19
```bash
# 写入配置文件
cat > /etc/rsyslog.d/sftp.conf <<EOF
\$ModLoad omuxsock
\$OMUxSockSocket /tmp/rsyslog.sock
authpriv.* :omuxsock:
EOF
liming6's avatar
liming6 committed
20

liming6's avatar
liming6 committed
21
22
23
# 重启rsyslog服务,启用上述配置
systemctl restart rsyslog
```
liming6's avatar
liming6 committed
24

liming6's avatar
liming6 committed
25
b. 修改 sshd_config 配置,让sftp将日志写入rsyslog的AUTHPRIV事件队列中
liming6's avatar
liming6 committed
26

liming6's avatar
liming6 committed
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
```
# 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`命令持久化
liming6's avatar
liming6 committed
48
49


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


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

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

## 日志

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

## todo
62

liming6's avatar
liming6 committed
63
添加白名单:
64

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

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