1

Тема: regexp що робить?

Прихований текст

На одному російському ресурсі знайшов код для утиліти fail2ban

failregex = ^%(pid)s %(host_info)ssender verify fail for <\S+>: (?:Unknown user|Unrouteable address|all relevant MX records point to non-existent hosts)\s*$
             ^%(pid)s \w+ authenticator failed for (\S+ )?\(\S+\) \[<HOST>\](:\d+)?( I=\[\S+\](:\d+)?)?: 535 Incorrect authentication data( \(set_id=.*\)|: \d+ Time\(s$
             ^%(pid)s %(host_info)sF=(<>|[^@]+@\S+) rejected RCPT [^@]+@\S+: (relay not permitted|Sender verify failed|Unknown user)\s*$
             ^%(pid)s SMTP protocol synchronization error \([^)]*\): rejected (connection from|"\S+") %(host_info)s(next )?input=".*"\s*$
             ^%(pid)s SMTP call from \S+ \[<HOST>\](:\d+)? (I=\[\S+\](:\d+)? )?dropped: too many nonmail commands \(last was "\S+"\)\s*$
ignoreregex =

на іншому знайшов логи, подібні до тих шо дав пан

2010-03-09 08:17:06 H=localhost (92.243.84.201) [127.0.0.1] sender verify fail for <admin@tuniga.ru>: Unrouteable address
2010-03-09 08:17:06 H=localhost (92.243.84.201) [127.0.0.1] F=<admin@tuniga.ru> rejected RCPT <admin@tuniga.ru>: Sender verify failed
2010-03-09 08:17:06 unexpected disconnection while reading SMTP command from localhost (92.243.84.201) [127.0.0.1]
2010-03-09 08:45:39 Start queue run: pid=30439
2010-03-09 08:45:39 End queue run: pid=30439
2010-03-09 08:59:36 H=localhost (92.243.84.201) [127.0.0.1] sender verify fail for <admin@tuniga.ru>: Unrouteable address
2010-03-09 08:59:36 H=localhost (92.243.84.201) [127.0.0.1] F=<admin@tuniga.ru> rejected RCPT <admin@tuniga.ru>: Sender verify failed
2010-03-09 08:59:36 unexpected disconnection while reading SMTP command from localhost (92.243.84.201) [127.0.0.1]
2010-03-09 09:10:47 H=smtp-out.wplus.net (relay2.wplus.net) [195.131.104.143] F=<lex@2-park.ru> rejected RCPT <admin@tuniga.ru>: Unrouteable address
2010-03-09 09:15:39 Start queue run: pid=30617
2010-03-09 09:15:39 End queue run: pid=30617
2010-03-09 09:45:39 Start queue run: pid=30673
2010-03-09 09:45:39 End queue run: pid=30673
2010-03-09 10:15:39 Start queue run: pid=30710
2010-03-09 10:15:39 End queue run: pid=30710 

Пан сказав мені, шо я маю якось так зробити regexp, шоби реагував на "rejected RCPT" чи "Unrouteable address"  без іншого.
Чи правильно я розумію, що знайдене мною НЕ вирішить цю проблему?
-------
Питання
1)

failregex = ^%(pid)s %(host_info)ssender verify fail for <\S+>: (?:Unknown user|Unrouteable address|all relevant MX records point to non-existent hosts)\s*$

цікавить чому

(host_info)ssender

а не

(host_info)sender

ця зайва "s" означає множину (не інфо одного хоста а кількох) чи що?
2) Така переробка піде? "всліпу"

failregex = ^%(pid)s %(host_info)s <\S+>: (?:rejected RCPT)\s*$
^%<\S+>: (?:Unrouteable address)\s*$

--------
Результат має реагувати на типу:

<admin@tuniga.ru>: Unrouteable address
2010-03-09 08:59:36 H=localhost (92.243.84.201) [127.0.0.1] F=<admin@tuniga.ru> rejected RCPT <admin@tuniga.ru>: 

тобто без "sender verify fail for" чи "Sender verify failed"
--------
І чи правильно я розумію, що таким чином можна забанити всі IP, якщо досити серв із піднімінами IP??? (IP-forwarding Attack), адже адреса типу "92.243.84.201" береться із надісланих клієнтом даних?
Тобто, що fail2ban насправді допомагає хакерам, а не жертвам?