Wie kann ich dafür sorgen, dass sec einen Zeitstempel richtig ignoriert?

13

Ich habe eine Regel, die so aufgebaut ist;

In /etc/sec/rules.d habe ich;

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

Also, wenn dies durch Syslog kam;

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

Es sollte dem Muster entsprechen (was laut meinem Regex-Editor der Fall ist).

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

Wir hatten ein Problem mit Spam, weil sich der Zeitstempel geändert hat. Also habe ich das Muster so umgeschrieben, dass es mit allem nach dem Hostnamen übereinstimmt.

Dies scheint jedoch nicht zu funktionieren und jedes Mal, wenn eine Benutzerauthentifizierung fehlschlägt, erhalte ich eine E-Mail.

Ich habe Folgendes zum Testen verwendet.

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

Irgendwelche Ideen? Ich könnte nur ein Missverständnis sein, sek. Dies ist das erste Mal, dass ich damit arbeite! Jede Hilfe wäre sehr dankbar. Vielen Dank!

Ethabelle
quelle

Antworten:

11

Nun, nach fast einem Tag des Haarziehens verstehe ich endlich a) wie es geht und b) ein Missverständnis, das ich über sek habe.

Beim Lesen der sec-Manpage beschreibt und beschreibt desc = im Wesentlichen die Übereinstimmung. In meinen Augen bedeutete das, dass es alles zeigen sollte, was im Muster übereinstimmte. Nun ja, das ist wahr, in diesem Fall ist die Übereinstimmung in diesem Muster die; Hostname, Rhost und Benutzer.

Wenn ich also desc = Login Failure: $ 0 mache, tippe ich die gesamte Zeile ab. Das ist schlecht.

Stattdessen habe ich den Benutzernamen und den Hostnamen abgeändert, sodass die window = 300-Regel eingehalten wird, da sich der Zeitstempel (die gesamte Zeile) nicht geändert hat. aka, der folgende Überblick;

/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

Fehlerzeile

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

Es wird den Benutzer [email protected] bemerken und erst dann darüber berichten, wenn es nach 300 Sekunden erneut auftritt, da [email protected] abgeschaltet wurde.

Ich habe es jetzt schon mehrmals getestet, es ist ein Werkin.

Ethabelle
quelle
1
Gute Arbeit daran.
Magellan
4
Hören Sie hier. +1 von mir sowohl für eine ausgezeichnete, gut geschriebene, gut recherchierte und aussagekräftige Frage als auch für das Zurückkommen und Senden einer detaillierten Antwort, nachdem Sie die erforderliche Offenbarung hatten! Vielen Dank.
MadHatter