Regex для fail2ban файла конфигурации для соответствия предварительно приветствуют строки в mail.log

Строки в mail.log для соответствия похожи:

May  6 10:06:16 mikes-serverbox postfix/postscreen[15486]: PREGREET 14 after 0.1 from [173.225.99.104]:57130: EHLO ylmf-pc\r\n

May  9 11:36:36 mikes-serverbox postfix/postscreen[14463]: PREGREET 26 after 0 from [71.6.232.5]:49432: EHLO zx1.quadmetrics.com\r\n

Когда я проверяю regex с fail2ban-regex, он правильно соответствует большому количеству строк.

fail2ban-regex /var/log/mail.log "^.*PREGREET \d{1,3} after \d+(\.\d{1,2})? from \[<HOST>\]"

Когда я проверяю fail2ban файл конфигурации, где существует тот же regex, использующий fail2ban-regex,

fail2ban-regex /var/log/mail.log /etc/fail2ban/filter.d/postfix.conf

это соответствует 3 строкам для этого regex

^RCPT from [^[]*\[<HOST>\]%(_port)s: 55[04] 5\.7\.1\s

и ни один для regex я записал:

^.*PREGREET \d{1,3} after \d+(\.\d{1,2})? from \[<HOST>\]

Соответствующий раздел postfix.conf:

prefregex = ^%(__prefix_line)s<mdpr-<mode>> <F-CONTENT>.+</F-CONTENT>$
mdpr-normal = (?:NOQUEUE: reject:|improper command pipelining after \S+)
mdre-normal = ^RCPT from [^[]*\[<HOST>\]%(_port)s: 55[04] 5\.7\.1\s
              ^RCPT from [^[]*\[<HOST>\]%(_port)s: 45[04] 4\.7\.1 (?:Service unavailable\b|Client host rejected: cannot find your (reverse )?hostname\b)
              ^RCPT from [^[]*\[<HOST>\]%(_port)s: 450 4\.7\.1 (<[^>]*>)?: Helo command rejected: Host not found\b
              ^EHLO from [^[]*\[<HOST>\]%(_port)s: 504 5\.5\.2 (<[^>]*>)?: Helo command rejected: need fully-qualified hostname\b
              ^VRFY from [^[]*\[<HOST>\]%(_port)s: 550 5\.1\.1\s
              ^RCPT from [^[]*\[<HOST>\]%(_port)s: 450 4\.1\.8 (<[^>]*>)?: Sender address rejected: Domain not found\b
              ^from [^[]*\[<HOST>\]%(_port)s:?
              ^NOQUEUE: reject: RCPT from \S+\[<HOST>\]: 554 5\.5\.2 .*$
              ^.*PREGREET \d{1,3} after \d+(\.\d{1,2})? from \[<HOST>\]
              ^NOQUEUE: reject: RCPT from \S+\[<HOST>\]: 450 4\.7\.1 : Helo command rejected: Host not found; from=<> to=<> proto=ESMTP helo= *$
              ^NOQUEUE: reject: VRFY from \S+\[<HOST>\]: 550 5\.1\.1 .*$
              ^improper command pipelining after \S+ from [^[]*\[<HOST>\]:?$
              ^NOQUEUE: reject: RCPT from (.*)\[<HOST>\]: 454 4\.7\.1\.*

ВОПРОС: Каков был бы корректный regex для fail2ban файла конфигурации для соответствия вышеупомянутым строкам в mail.log?

0
задан 15 May 2019 в 05:25

1 ответ

Правильное регулярное выражение:

prefregex = ^%(__prefix_line)s<mdpr-<mode>> <F-CONTENT>.+</F-CONTENT>$
mdpr-normal = (?:PREGREET|NOQUEUE: reject:|improper command pipelining after \S+)
mdre-normal = mdre-normal = ^RCPT from [^[]*\[<HOST>\]%(_port)s: 55[04] 5\.7\.1\s
              ^RCPT from [^[]*\[<HOST>\]%(_port)s: 45[04] 4\.7\.1 (?:Service unavailable\b|Client host rejected: cannot find your (reverse )?hostname\b)
              ^RCPT from [^[]*\[<HOST>\]%(_port)s: 450 4\.7\.1 (<[^>]*>)?: Helo command rejected: Host not found\b
              ^EHLO from [^[]*\[<HOST>\]%(_port)s: 504 5\.5\.2 (<[^>]*>)?: Helo command rejected: need fully-qualified hostname\b
              ^VRFY from [^[]*\[<HOST>\]%(_port)s: 550 5\.1\.1\s
              ^RCPT from [^[]*\[<HOST>\]%(_port)s: 450 4\.1\.8 (<[^>]*>)?: Sender address rejected: Domain not found\b
              ^from [^[]*\[<HOST>\]%(_port)s:?
              ^NOQUEUE: reject: RCPT from \S+\[<HOST>\]: 554 5\.5\.2 .*$
              ^\d{1,3} after \d+(\.\d{1,2})? from [^[]*\[<HOST>\]%(_port)s:?
              ^NOQUEUE: reject: RCPT from \S+\[<HOST>\]: 450 4\.7\.1 : Helo command rejected: Host not found; from=<> to=<> proto=ESMTP helo= *$
              ^NOQUEUE: reject: VRFY from \S+\[<HOST>\]: 550 5\.1\.1 .*$
              ^improper command pipelining after \S+ from [^[]*\[<HOST>\]:?$
              ^NOQUEUE: reject: RCPT from (.*)\[<HOST>\]: 454 4\.7\.1\.*
0
ответ дан 15 May 2019 в 05:25

Другие вопросы по тегам:

Похожие вопросы: