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" team@team.com
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!

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@email.com
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 kloggins@test.test.com et n'en rendra compte que s'il se reproduit après 300 secondes, car il a désactivé kloggins@test.test.com.

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


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.