Fail2ban 不会禁止任何使用 vsftpd 的 IP 地址

Fail2ban 不会禁止任何使用 vsftpd 的 IP 地址

Fail2ban 启动正常。它与我的 sshd 过滤器配合使用,并按要求禁止 IP 地址。但使用 vsftpd 时,当我运行以下命令时,它不会记录失败的登录:

fail2ban-client status vsftpd

我尝试了 auth.log 和 vsftpd.log。出于安全原因,文件路径与我实际拥有的路径不同,实际上不是 /path/to/thelog.log

vsftpd.log

Status for the jail: vsftpd
|- filter
|  |- File list:    /path/to/vsftpd.log 
|  |- Currently failed: 0
|  `- Total failed: 0
`- action
   |- Currently banned: 0
   |  `- IP list:   
   `- Total banned: 0

auth.log

Status for the jail: vsftpd
|- filter
|  |- File list:    /path/to/auth.log 
|  |- Currently failed: 0
|  `- Total failed: 0
`- action
   |- Currently banned: 0
   |  `- IP list:   
   `- Total banned: 0

但是使用 fail2ban-regex 它可以捕获失败的登录。

vsftpd.log

Running tests
=============

Use   failregex file : /etc/fail2ban/filter.d/vsftpd.conf
Use         log file : /path/to/vsftpd.log


Results
=======

Failregex: 16 total
|-  #) [# of hits] regular expression
|   2) [16] ^ \[pid \d+\] \[.+\] FAIL LOGIN: Client "<HOST>"\s*$
`-

Ignoreregex: 0 total

Date template hits:
|- [# of hits] date format
|  [806] WEEKDAY MONTH Day Hour:Minute:Second Year
`-

Lines: 806 lines, 0 ignored, 16 matched, 790 missed
Missed line(s): too many to print.  Use --print-all-missed to print all 790 lines

auth.log

Running tests
=============

Use   failregex file : /etc/fail2ban/filter.d/vsftpd.conf
Use         log file : /path/to/auth.log


Results
=======

Failregex: 16 total
|-  #) [# of hits] regular expression
|   1) [16] ^\s*(<[^.]+\.[^.]+>)?\s*(?:\S+ )?(?:kernel: \[ *\d+\.\d+\])?(?:@vserver_\S+ )?(?:(?:\[\d+\])?:\s+[\[\(]?vsftpd(?:\(\S+\))?[\]\)]?:?|[\[\(]?vsftpd(?:\(\S+\))?[\]\)]?:?(?:\[\d+\])?:?)?\s(?:\[ID \d+ \S+\])?\s*\(?pam_unix(?:\(\S+\))?\)?:?\s+authentication failure; logname=\S* uid=\S* euid=\S* tty=(ftp)? ruser=\S* rhost=<HOST>(?:\s+user=.*)?\s*$
`-

Ignoreregex: 0 total

Date template hits:
|- [# of hits] date format
|  [9174] MONTH Day Hour:Minute:Second
`-

Lines: 9174 lines, 0 ignored, 16 matched, 9158 missed
Missed line(s): too many to print.  Use --print-all-missed to print all 9158 lines

我已经测试过无法使用正确的密码登录(即使用错误的密码登录:))并且fail2ban-regex数字不断上升,但监狱的状态仍然为 0,并且三次登录失败不会触发禁令。

jail.local

[vsftpd]
enable     = true
filter     = vsftpd
action     = iptables-multiport[name=vsftpd, port="20, 21, 10204, 10205"]
logpath    = /path/to/auth.log
bantime   = 60
maxretry   = 3

bantime 60 秒仅在测试期间。

知道为什么它不起作用吗?

答案1

vsftpd.log拒绝日志如下所示:

Wed Jun 29 14:57:37 2016 [pid 2517] [username] FTP response: Client "::ffff:192.168.0.100", "530 Permission denied."

默认的 failregex 在 fail2ban 配置文件中不起作用,位于“ /etc/fail2ban/filter.d/vsftpd.conf” ,如下所示

failregex = ^%(__prefix_line)s%(__pam_re)s\s+authentication failure; logname=\S* uid=\S* euid=\S* tty=(ftp)? ruser=\S* rhost=<HOST>(?:\s+user=.*)?\s*$
            ^ \[pid \d+\] \[.+\] FAIL LOGIN: Client "<HOST>"\s*$

所以你需要改变failregex按照以下步骤操作,使其与 vsftpd 一起工作

failregex = ^%(__prefix_line)s%(__pam_re)s\s+Permission denied; logname=\S* uid=\S* euid=\S* tty=(ftp)? ruser=\S* rhost=<HOST>(?:\s+user=.*)?\s*$
            ^ \[pid \d+\] \[.+\]\s+FTP response: Client "::ffff:<HOST>",\s*"530 Permission denied\."\s*$

在 Ubuntu 上使用 vsftpd 检查:版本 3.0.3

答案2

我认为您的 中有拼写错误。jail.local不是。enabled = trueenable

您应该检查您的fail2ban.log内容是否包含类似以下的行:

INFO    Jail 'vsftpd' started

答案3

您的日志文件存储在哪里?

它们在 /scripts/logs/vsftpd.log 和 /scripts/logs/auth.log 中吗?fail2ban 守护进程会根据您的 jail.local 在这些位置寻找它们。

因为在您的 fail2ban-regex 输出粘贴中,它说它正在使用 /path/to/vsftpd.log 和 /path/to/auth.log。

您是否只是从 fail2ban-regex 输出中剪切出 /scripts/logs/ 并粘贴到 /path/to/ 占位符中?或者您的日志实际上在 /path/to/ 中?

答案4

dual_log_enable=YES

此设置启用 DNS 和 IP 搜索

相关内容