Jak sprawić, aby sekunda prawidłowo ignorowała znacznik czasu

13

Mam taką zasadę;

W /etc/sec/rules.d mam;

type=SingleWithSuppress
ptype=regexp
pattern=(\S+) sshd\[\d+\]: PAM \d+ more authentication failures\; logname=.* uid=.* euid=.* tty=ssh ruser=.* rhost=(.*) user=(.*)
desc=Login Failure: $0
action=pipe '%s ' /bin/mail -s "login failure $2 to $3@$1" [email protected]
window=300

Więc jeśli przyszło to przez syslog;

Nov 21 11:24:10 servername.server.com sshd[26846]: PAM 2 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost= user=kloggins

Powinien pasować do tego (co robi zgodnie z moim edytorem wyrażeń regularnych) zgodnie ze wzorcem;

servername.server.com sshd[26846]: PAM 2 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost= user=kloggins

Wystąpił problem ze spamem, ponieważ zmieniał się znacznik czasu. Przepisałem więc wzorzec, aby dopasować wszystko po nazwie hosta.

Nie wydaje się to jednak działać i za każdym razem, gdy „uwierzytelnienie użytkownika nie powiedzie się”, nadal otrzymuję wiadomość e-mail.

Użyłem następujących do przetestowania;

logger -p syslog.err 'sshd[26846]: PAM 2 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost= user='

Jakieś pomysły? Być może po prostu źle zrozumiałem. Po raz pierwszy z tym pracuję! Każda pomoc byłaby bardzo mile widziana. Dzięki!

Ethabelle
źródło

Odpowiedzi:

11

Cóż, po prawie dniu ciągnięcia włosów w końcu rozumiem a) jak to zrobić i b) nieporozumienie, które mam na temat sek.

Podczas czytania drugiej strony man opisuje desc = jako zasadniczo pokazujące dopasowanie. Moim zdaniem oznaczało to, że powinien pokazywać wszystko, co pasowało do wzoru. Cóż, tak, to prawda, w tym przypadku dopasowaniem w tym wzorze jest; nazwa hosta, rhost i użytkownik.

Więc kiedy robię desc = Błąd logowania: 0 $, odpinam całą linię. To źle.

Zamiast tego zmieniłem go, aby wyłączyć nazwę użytkownika i nazwę hosta, co powoduje, że jest on zgodny z regułą window = 300, ponieważ znacznik czasu (cała linia) się nie zmienia; alias, następujący podsumowanie;

/etc/sec/rules.d/ssh.sec

type=SingleWithSuppress
ptype=regexp
pattern=(\S+) sshd\[\d+\]: PAM \d+ more authentication failures\; logname=.* uid=.* euid=.* tty=ssh ruser=.* rhost=(.*) user=(.*)
desc=Login Failure: $3@$1
action=pipe '%s $0' /bin/mail -s "Login Failure: $3@$1" [email protected]
window=300

Linia błędu

Nov 21 01:58:10 test.test.com sshd[26846]: PAM 2 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost=test.test.com user=kloggins

Zauważy użytkownika [email protected] i nie zgłosi tego, chyba że powtórzy się to po 300 sekundach, ponieważ wyłączył [email protected].

Testowałem to już kilka razy, to dziwactwo.

Ethabelle
źródło
1
Dobra robota.
Magellan,
4
Słuchaj tutaj. Daj ode mnie +1 zarówno za doskonałe, dobrze napisane, dobrze zbadane i zakrojone na miarę pytanie, jak i za powrót i opublikowanie szczegółowej odpowiedzi po otrzymaniu potrzebnego objawienia! Dziękuję Ci.
MadHatter