Comment puis-je faire en sorte que sec ignore correctement un horodatage

13

J'ai une règle qui est établie comme ça;

Dans /etc/sec/rules.d j'ai;

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

Donc, si cela venait de 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

Il devrait correspondre à cela (ce qui est le cas selon mon éditeur d'expressions régulières) en fonction du modèle;

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

Nous avions un problème avec le spam car l'horodatage changeait. J'ai donc réécrit le modèle pour qu'il corresponde à tout après le nom d'hôte.

Cependant, cela ne semble pas fonctionner et chaque fois qu'un utilisateur "échoue à l'authentification", je reçois toujours un e-mail.

J'ai utilisé ce qui suit pour tester;

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

Des idées? Je pourrais juste être mal compris sec. C'est la première fois que j'y travaille! Toute aide serait grandement appréciée. Merci!

Ethabelle
la source

Réponses:

11

Eh bien, après presque une journée de cheveux tirés, je comprends enfin a) comment le faire et b) une idée fausse que j'ai à propos de sec.

En lisant la page de manuel sec et elle décrit desc = comme montrant essentiellement la correspondance. Donc, dans mon esprit, cela signifiait que cela devrait montrer tout ce qui correspondait au motif. Eh bien, oui, c'est vrai, dans ce cas, la correspondance dans ce modèle est le; nom d'hôte, rhost et utilisateur.

Donc, lorsque je fais desc = Échec de la connexion: 0 $, je coupe la ligne entière. C'est mauvais.

Donc, à la place, je l'ai changé pour désactiver le nom d'utilisateur et le nom d'hôte, ce qui le fait ensuite adhérer à la règle window = 300 puisque l'horodatage (ligne entière) ne changeait pas; aka, le récapitulatif suivant;

/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

Ligne d'erreur

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

Il remarquera l'utilisateur [email protected] et n'en rendra compte que s'il se reproduit après 300 secondes, car il a désactivé [email protected].

Je l'ai testé plusieurs fois maintenant, c'est un 'werkin'.

Ethabelle
la source
1
Beau travail là-dessus.
Magellan
4
Écoutez ici. +1 de moi à la fois pour une excellente question bien rédigée et bien documentée, et pour revenir et poster une réponse détaillée après avoir eu l'épiphanie nécessaire! Je vous remercie.
MadHatter