Como faço para fazer ignorar um timestamp corretamente

13

Eu tenho uma regra que é configurada assim:

Em /etc/sec/rules.d eu tenho;

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

Então, se isso veio através do 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

Ele deve corresponder a isso (o que, de acordo com o meu editor de regex), de acordo com o padrão;

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

Estávamos com um problema com spam porque o registro de data e hora estava mudando. Então eu reescrevi o padrão para combinar com tudo depois do nome do host.

No entanto, isso não parece estar funcionando e toda vez que um usuário "falha na autenticação", eu ainda recebo um e-mail.

Estou usando o seguinte para testar;

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

Alguma ideia? Eu poderia estar apenas entendendo errado. Esta é a primeira vez que estou trabalhando com isso! Qualquer ajuda seria muito apreciada. Obrigado!

    
por Ethabelle 21.11.2014 / 20:45

1 resposta

11

Bem, depois de quase um dia puxando o cabelo, eu finalmente entendi a) como fazer isso eb) um equívoco que tenho sobre sec.

Na leitura da página de manual e descreve desc = essencialmente mostrando a correspondência. Então, em minha mente, isso significava que deveria mostrar o que estava combinado no padrão. Bem, sim, isso é verdade, neste caso a correspondência nesse padrão é a; hostname, rhost e usuário.

Então, quando eu estou fazendo desc = Falha no Login: $ 0, estou fechando toda a linha. Isso é ruim.

Então, em vez disso, eu o alterei para desativar o nome de usuário e o nome do host, o que faz com que ele adira à regra window = 300, pois o timestamp (toda a linha) não estava mudando; aka, o seguinte resumo;

/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

Linha de erros

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

Ele irá notar o usuário [email protected] e não irá reportar sobre ele, a menos que aconteça novamente após 300 segundos, porque ele foi desativado [email protected].

Eu testei várias vezes agora, é um 'werkin'.

    
por 22.11.2014 / 00:39