¿Cómo hago para que se ignore una marca de tiempo correctamente?

13

Tengo una regla que está configurada así;

En /etc/sec/rules.d tengo;

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

Entonces, si esto llegó a través 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

Debería coincidir con esto (que lo hace de acuerdo con mi editor de expresiones regulares) de acuerdo con el patrón;

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

Estábamos teniendo un problema con el spam porque la marca de tiempo estaba cambiando. Así que reescribí el patrón para que coincida con todo después del nombre de host.

Sin embargo, esto no parece funcionar y cada vez que un usuario "falla en la autenticación", sigo recibiendo un correo electrónico.

He estado usando lo siguiente para probar;

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

¿Algunas ideas? Podría estar malentendido seg. ¡Es la primera vez que trabajo con él! Cualquier ayuda sería muy apreciada. ¡Gracias!

Ethabelle
fuente

Respuestas:

11

Bueno, después de casi un día de arrancarse el cabello, finalmente entiendo a) cómo hacerlo yb) una idea errónea que tengo sobre el segundo.

Al leer la página de manual de sec y describe desc = como esencialmente mostrando la coincidencia. Entonces, en mi opinión, eso significaba que debería mostrar lo que coincidía con el patrón. Bueno, sí, eso es cierto, en este caso la coincidencia en ese patrón es el; nombre de host, rhost y usuario.

Entonces, cuando estoy haciendo desc = Error de inicio de sesión: $ 0, estoy borrando toda la línea. Eso es malo.

Entonces, en cambio, lo cambié para quitar el nombre de usuario y el nombre de host, lo que hace que se adhiera a la regla window = 300 ya que la marca de tiempo (toda la línea) no estaba cambiando; aka, el siguiente resumen;

/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

Línea de error

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

Notará al usuario [email protected] y no informará sobre ello a menos que vuelva a suceder después de 300 segundos, porque desconectó [email protected].

Lo he probado varias veces, es un werkin.

Ethabelle
fuente
1
Buen trabajo en eso.
Magellan
44
Escuchar aquí. ¡+1 de mi parte tanto por una pregunta excelente, bien escrita, bien investigada y de alcance, como por volver y publicar una respuesta detallada después de haber tenido la epifanía necesaria! Gracias.
MadHatter