Como faço para sec ignorar um carimbo de data / hora corretamente

13

Eu tenho uma regra que é configurada assim;

No /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

Deve corresponder a isso (o que acontece de acordo com o meu editor de expressões regulares) 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 tendo um problema com spam porque o carimbo de data e hora estava mudando. Então, eu reescrevi o padrão para corresponder a tudo após o nome do host.

No entanto, isso não parece estar funcionando e sempre que uma "autenticação falha" do usuário, eu ainda recebo um email.

Eu tenho usado 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 mal. É a primeira vez que trabalho com isso! Qualquer ajuda seria muito apreciada. Obrigado!

Ethabelle
fonte

Respostas:

11

Bem, depois de quase um dia puxando o cabelo, finalmente entendi a) como fazê-lo eb) um equívoco que tenho sobre segundos.

Ao ler a página do manual sec e descreve desc = como essencialmente mostrando a correspondência. Então, na minha mente, isso significava que deveria mostrar o que correspondesse ao padrão. Bem, sim, isso é verdade, neste caso a correspondência nesse padrão é a; nome do host, host e usuário.

Então, quando estou fazendo desc = Falha no login: $ 0, estou encerrando a linha inteira. Isso é ruim.

Então, em vez disso, mudei para desativar o nome de usuário e o nome do host, o que faz com que ele adira à regra window = 300, pois o carimbo de data / hora (linha inteira) 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 erro

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 notará o usuário [email protected] e não o reportará, a menos que isso aconteça novamente após 300 segundos, porque desativou [email protected].

Eu testei várias vezes agora, é um 'homem de pele.

Ethabelle
fonte
1
Bom trabalho nisso.
Magellan
4
Escute aqui. +1 de mim por uma excelente, bem escrita, bem pesquisada e com escopo de pergunta, e por retornar e postar uma resposta detalhada após a epifania necessária! Obrigado.
MadHatter