Hi all,

I'd appreciate some help with a regex on dovecot that I can't seem to get
right. Config is ...

patform: slackware 15 64bit
fail2ban: v0.9.4

dovecot.conf:

[INCLUDES]

before = common.conf

[Definition]

_daemon = (auth|dovecot(-auth)?|auth-worker)

failregex =
^%(__prefix_line)s(%(__pam_auth)s(\(dovecot:auth\))?:)?\s+authentication
failure; logname=\S* uid=\S* euid=\S* tty=dovecot ruser=\S*
rhost=<HOST>(\s+user=\S*)?\s*$
           ^%(__prefix_line)s(pop3|imap)-login: (Info: )?(Aborted
login|Disconnected)(: Inactivity)? \(((auth failed, \d+ attempts)( in \d+
secs)?|tried to use (disabled|disallowed) \S+ auth)\):( user=<\S*>,)?(
method=\S+,)? rip=<HOST>
           ^%(__prefix_line)s(Info|dovecot:
auth\(default\)|auth-worker\(\d+\)): pam\(\S+,<HOST>\):
pam_authenticate\(\) failed: (User not known to the underlying
authentication module: \d+ Time\(s\)|Authentication failure \(password m
           ^%(__prefix_line)s(auth|auth-worker\(\d+\)):
(pam|passwd-file)\(\S+,<HOST>\): unknown user\s*$
#       ^%(__prefix_line)s(auth|auth-worker\(\d+\)):
(pam|passwd-file)\(\S+,<HOST>\): unknown user\s*$
       ^conn unix:auth-worker \([^)]*\): auth-worker<\d+>:
passwd\(\S+,<HOST>\): unknown user\b
       ^%(__prefix_line)s(?:auth|auth-worker\(\d+\)): passwd\(\S+,<HOST>\):
unknown user\s*$
       ^%(__prefix_line)s(auth-worker\(\d+\)): passwd\(\S+,<HOST>,\S+\):
unknown user\b
       ^%(__prefix_line)s passwd\(\S+,<HOST>,\S+\): unknown user\s*$
       ^%(__prefix_line)spasswd\(.*\,<HOST>\)\: (unknown user|Password
mismatch)\s$

ignoreregex =

[Init]

# journalmatch = _SYSTEMD_UNIT=dovecot.service

Per above, I've tried a number of variations on the regex (the last 5
regex's) but no matches. The matched entry should be found in the log:

Jan 24 22:32:11 xxx dovecot: auth-worker(1755): conn unix:auth-worker
(pid=1754,uid=94): auth-worker<35>:
passwd(aaronn,41.193.245.243,<hAkXaQjzKO0pwfXz>): unknown user
Jan 24 22:32:11 xxx dovecot: auth: Error:
passwd(aaronn,41.193.245.243,<hAkXaQjzKO0pwfXz>): user not found from userdb
Jan 24 22:32:11 xxx dovecot: imap(1804): Error: auth-master: login: request
[1420820481]: Login auth request failed: Authenticated user not found from
userdb, auth lookup id=1420820481 (auth connected 0 msecs ago, request took
0 msecs, client-pid=1802 client-id=1)
Jan 24 22:32:11 xxx dovecot: imap-login: Disconnected: Internal login
failure (pid=1802 id=1): user=<aaronn>, method=PLAIN, rip=41.193.245.243,
lip=172.16.64.253, mpid=1804, TLS, session=<hAkXaQjzKO0pwfXz>

More specifically I"m trying to match on the first line ending in "unknown
user".

My general config for dovecot:

[dovecot]

enabled = true

port    = pop3,pop3s,imap,imaps,submission,465,sieve
#logpath = %(dovecot_log)s
logpath = /var/log/maillog
#backend = %(dovecot_backend)s
backend = polling

Note I've also trieds the default backend of gamin.

Regex test:

fail2ban-regex /var/log/maillog /etc/fail2ban/filter.d/dovecot.conf
--print-all-matched

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

Use   failregex filter file : dovecot, basedir: /etc/fail2ban
Use         log file : /var/log/maillog
Use         encoding : UTF-8


Results
=======

Failregex: 1 total
|-  #) [# of hits] regular expression
|   2) [1] ^\s*(<[^.]+\.[^.]+>)?\s*(?:\S+ )?(?:kernel: \[ *\d+\.\d+\]
)?(?:@vserver_\S+
)?(?:(?:\[\d+\])?:\s+[\[\(]?(auth|dovecot(-auth)?|auth-worker)(?:\(\S+\))?[\]\)]?:?|[\[\(]?(auth|dovecot(-auth)?|auth-worker)(?:\(\S+\))?[\]\)]?:?(?
:\[\d+\])?:?)?\s(?:\[ID \d+ \S+\])?\s*(pop3|imap)-login: (Info: )?(Aborted
login|Disconnected)(: Inactivity)? \(((auth failed, \d+ attempts)( in \d+
secs)?|tried to use (disabled|disallowed) \S+ auth)\):( user=<\S*>,)?(
method=\S+,)? ri
p=<HOST>(, lip=(\d{1,3}\.){3}\d{1,3})?(, TLS( handshaking(: SSL_accept\(\)
failed: error:[\dA-F]+:SSL routines:[TLS\d]+_GET_CLIENT_HELLO:unknown
protocol)?)?(: Disconnected)?)?(, session=<\S+>)?\s*$
`-

Ignoreregex: 0 total

Date template hits:
|- [# of hits] date format
|  [170366] (?:DAY )?MON Day 24hour:Minute:Second(?:\.Microseconds)?(?:
Year)?
`-

Lines: 170366 lines, 0 ignored, 1 matched, 170365 missed
[processed in 54.97 sec]

|- Matched line(s):
|  Jan 23 09:53:21 xxx dovecot: pop3-login: Disconnected: Inactivity (auth
failed, 1 attempts in 0 secs): user=<r...@surgcare.co.za>,
rip=45.82.65.138, lip=172.16.64.253, session=<bA23punyMLMtUkGK>
`-
Missed line(s): too many to print.  Use --print-all-missed to print all
170365 lines

So not matching on any of my regex's. I've tried regextester with:

passwd\(\S+,,\S+\): unknown user\s*$

And that matches (I removed the IP as fail2ban with substitute with <HOST>)
on the following log:

Jan 24 22:32:11 xxx dovecot: auth-worker(1755): conn unix:auth-worker
(pid=1754,uid=94): auth-worker<35>: *passwd(aaronn,,<hAkXaQjzKO0pwfXz>):
unknown user*

But the same regex (my 2nd last entry) in fail2ban doesn't work. Not sure
where to go from here. Any help is appreciated.


-- 
Robby
_______________________________________________
Fail2ban-users mailing list
Fail2ban-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/fail2ban-users

Reply via email to