Come faccio a fare in modo che ignori correttamente un timestamp


13

Ho una regola che è impostata in questo modo;

In /etc/sec/rules.d ho;

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" team@team.com
window=300

Quindi se questo è arrivato attraverso 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

Dovrebbe corrispondere a questo (cosa che fa secondo il mio editor regex) secondo lo schema;

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

Abbiamo riscontrato un problema con lo spam perché il timestamp stava cambiando. Quindi ho riscritto il modello in modo che corrisponda a tutto dopo il nome host.

Tuttavia, questo non sembra funzionare e ogni volta che un utente "autenticazione fallisce", ricevo ancora una e-mail.

Ho usato il seguente per testare;

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

Qualche idea? Potrei solo essere frainteso sec. Questa è la prima volta che ci lavoro! Qualsiasi aiuto sarebbe molto apprezzato. Grazie!

Risposte:


11

Bene, dopo quasi una giornata passata a tirare i capelli, finalmente capisco a) come farlo eb) un malinteso che ho circa sec.

Nel leggere la seconda pagina man e descrive desc = come essenzialmente mostra la corrispondenza. Quindi, nella mia mente, ciò significava che doveva mostrare qualunque cosa corrispondesse allo schema. Bene, sì, è vero, in questo caso la corrispondenza in quel modello è la; nome host, rhost e utente.

Quindi quando sto facendo desc = Login Failure: $ 0, sto cancellando l'intera riga. Questo è male.

Così invece l'ho cambiato per cancellare il nome utente e il nome host, il che quindi fa aderire alla regola window = 300 poiché il timestamp (intera riga) non stava cambiando; aka, la seguente carrellata;

/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@email.com
window=300

Riga di errore

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

Noterà l'utente kloggins@test.test.com e non riferirà su di esso a meno che non si ripeta dopo 300 secondi, perché ha eliminato kloggins@test.test.com.

L'ho testato più volte ora, è un po 'strano.


1
Bel lavoro su questo.
Magellan,

4
Ascolta qui. +1 da parte mia sia per una domanda eccellente, ben scritta, ben studiata e mirata, sia per il ritorno e l'invio di una risposta dettagliata dopo aver avuto l'epifania necessaria! Grazie.
MadHatter,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.