|
1 | 1 | onsuccess: next_stage
|
2 | 2 | pattern_syntax:
|
3 |
| - SFTPGO_TIME: '%{YEAR}-%{MONTHNUM}-%{MONTHDAY}T%{HOUR}:%{MINUTE}:%{SECOND}\.%{NUMBER}' |
4 |
| - SFTPGO_FAILED: '\{"level":"%{WORD:log_level}","time":"%{SFTPGO_TIME:evt_time}","sender":"connection_failed","client_ip":"%{IPV4:client_ip}","username":"%{DATA:username}","login_type":"%{DATA:login_type}","protocol":"%{WORD:protocol}","error":"%{GREEDYDATA:error}"\}' |
5 |
| -filter: evt.Parsed.program == 'sftpgo' |
| 3 | + SFTPGO_TIME: '%{YEAR}-%{MONTHNUM}-%{MONTHDAY}T%{HOUR}:%{MINUTE}:%{SECOND}(\.%{NUMBER})?Z' |
| 4 | + SFTPGO_JSON: '\{%{GREEDYDATA:json_data}\}' |
6 | 5 | nodes:
|
7 | 6 | - grok:
|
8 |
| - name: SFTPGO_FAILED |
| 7 | + name: SFTPGO_JSON |
9 | 8 | apply_on: message
|
| 9 | + condition: 'evt.Parsed.json_data =~ "connection_failed"' |
10 | 10 | statics:
|
11 | 11 | - meta: log_type
|
12 | 12 | value: sftpgo_auth
|
13 | 13 | - meta: source_ip
|
14 |
| - expression: evt.Parsed.client_ip |
| 14 | + expression: 'parse_json(evt.Parsed.json_data).client_ip' |
15 | 15 | - meta: target_user
|
16 |
| - expression: evt.Parsed.username |
| 16 | + expression: 'parse_json(evt.Parsed.json_data).username' |
17 | 17 | - meta: protocol
|
18 |
| - expression: evt.Parsed.protocol |
| 18 | + expression: 'parse_json(evt.Parsed.json_data).protocol' |
19 | 19 | - meta: login_type
|
20 |
| - expression: evt.Parsed.login_type |
| 20 | + expression: 'parse_json(evt.Parsed.json_data).login_type' |
21 | 21 | - meta: error
|
22 |
| - expression: evt.Parsed.error |
| 22 | + expression: 'parse_json(evt.Parsed.json_data).error' |
23 | 23 | - meta: is_failed_login
|
24 | 24 | value: true
|
25 | 25 | - target: evt.StrTime
|
26 |
| - expression: evt.Parsed.evt_time |
| 26 | + expression: 'parse_json(evt.Parsed.json_data).time' |
27 | 27 | - meta: service
|
28 | 28 | value: sftpgo
|
29 |
| -description: Parse SFTPGo authentication logs (failed attempts only) |
| 29 | + - grok: |
| 30 | + name: SFTPGO_JSON |
| 31 | + apply_on: message |
| 32 | + condition: 'evt.Parsed.json_data =~ "login"' |
| 33 | + statics: |
| 34 | + - meta: log_type |
| 35 | + value: sftpgo_auth |
| 36 | + - meta: source_ip |
| 37 | + expression: 'parse_json(evt.Parsed.json_data).remote_address' |
| 38 | + - meta: target_user |
| 39 | + expression: 'parse_json(evt.Parsed.json_data).username' |
| 40 | + - meta: protocol |
| 41 | + expression: 'parse_json(evt.Parsed.json_data).protocol' |
| 42 | + - meta: status |
| 43 | + expression: 'parse_json(evt.Parsed.json_data).status' |
| 44 | + - target: evt.StrTime |
| 45 | + expression: 'parse_json(evt.Parsed.json_data).time' |
| 46 | + - meta: service |
| 47 | + value: sftpgo |
| 48 | +description: Parse SFTPGo authentication logs (failed and successful attempts) |
| 49 | +name: Azlaroc/sftpgo-logs |
0 commit comments