Existe uma maneira fácil de não registrar um evento sshd específico?

6

A ferramenta de monitoramento do meu hoster está fazendo conexões regulares com o ssh na porta 22 para ver ou o serviço está funcionando.

Isso está sobrecarregando minhas / var / log / messages com esse tipo de mensagem:

Dec 13 22:20:17  sshd[29487]: Did not receive identification string from 80.xx.xx.xx

Existe uma maneira fácil de silenciar esta mensagem "Não recebeu uma string de identificação de" para esse ip específico?

    
por Peter Smit 13.12.2011 / 21:23

3 respostas

1

Acho que não há como fazer isso facilmente com sshd .

Eu suspeito que esta é uma escolha de design por parte dos autores (o pessoal do OpenBSD, geralmente) porque eles quase sempre "erram" do lado da segurança - neste caso, por não fornecer um botão para nós que poderia suprimir mensagens importantes.

Você disse "facilmente", então essa pode ser a resposta que você precisa.

Mas se você estiver pensando em opções menos fáceis, meu conselho é: não faça isso , e aqui está o motivo.

Se você é como eu, sua motivação subjacente para essa pergunta é fazer com que itens acionáveis se destaquem em seus registros e reduzam o ruído. Você não está sozinho. :-)

Na prática, muitos tipos de mensagens são:

  • bem conhecido,
  • difícil de desativar e
  • nunca acionável

... o que você realmente quer é filtrar . Faça isso em vez disso.

Por exemplo, eu escrevi um script que filtra itens "não interessantes" nos registros do meu dia anterior e me envia um relatório diário. Você tem que ser muito cuidadoso com seus filtros, mas se for feito da maneira certa, é uma economia de tempo real - e isso fará com que as coisas que realmente precisam de sua atenção se destaquem .

Eu ocasionalmente reviso meus logs brutos, é claro, e tenho outros métodos para pegar coisas realmente urgentes. Mas não há horas suficientes no dia para examinar seus registros manualmente todos os dias, especialmente quando você tem várias caixas para rebanho, mas você não é uma loja grande o suficiente para garantir o processamento de registros em grande escala.

Tudo o que foi dito, caso você tenha um motivo realmente convincente para fazer isso (e a solução da MaxMackie não corresponde ao seu caso de uso, de modo que você realmente precisa fazer com que essas mensagens desapareçam before eles chegam ao syslog), eu acho que você tem duas opções:

.1. Modifique a fonte.

Mas não faça isso, . Muito sobrecarga e risco - muito atraso entre o anúncio de uma vulnerabilidade e sua capacidade de atualização.

.2. Faça sshd enviar sua saída para outro lugar e envie-a para o syslog.

O FreeBSD permite que você especifique quais parâmetros devem ser passados para sshd na inicialização em /etc/rc.conf ou /etc/rc.conf.local , usando o valor sshd_flags . Diga a sshd para executar com a opção -d (debug) e a opção -e (registre para o erro padrão):

sshd_flags="-d -e"

Você pode enviar a saída para logger ou Sys::Syslog (com um invólucro para limpar qualquer esquisitice) de Perl. Isso não é trivial, já que dizer a um daemon que não é daemon significa que você precisa recriar muito dessa funcionalidade. Eu posso fornecer mais detalhes, se necessário.

Mas sua melhor aposta é filtrar.

    
por 14.12.2011 / 07:19
3

Sem escrever um script para analisar /var/log/messages e remover essas linhas (o que é uma possibilidade, você pode até mesmo executá-lo através de cron ), você estará desabilitando ou redirecionando toda a saída de ssh . Essa não é a melhor ideia, já que você pode obter alguns registros relevantes que deseja ver.

O que eu faria é escrever algo assim:

#! /bin/bash
sed "/$search/d" /var/log/messages >/var/log/tmp
mv /var/log/tmp /var/log/messages

Guarde-o em algum lugar seguro e execute cron todos os dias. Não sei a frequência com que seu provedor executa sshd para que você possa ajustar o tempo de execução para atender às suas necessidades. Para mais informações sobre como adicionar uma regra ao cron (cronjob), veja este tutorial muito bom .

Por outro lado, se você tiver acesso ao script que inicia ssh (o que duvido que você faça) e possa editá-lo (o que duvido que possa), você pode invocar ssh usando ssh -q . O argumento q faz com que ssh seja executado "silenciosamente", o que significa que nada é registrado. Isso é arriscado e deve ser evitado. Se você conseguir editar o arquivo, eu verificaria com seu provedor de hospedagem para verificar se ele está em seu contrato.

Como alternativa, você pode entrar em contato com seu provedor, explicar seu problema e perguntar se há algo que ele possa fazer (ou permitir) para modificar o daemon ssh .

TL; DR Até onde eu saiba, não é possível interromper apenas uma mensagem de ssh . No entanto, você pode analisar seu arquivo de mensagens em intervalos específicos para limpar essas linhas ou, se conseguir localizar o local em que o provedor lança sshd , pode enviar o comando silencioso.

    
por 13.12.2011 / 22:45
3

Você examinou a documentação ?

Existe um LogLevel QUIET|FATAL|ERROR|INFO cujo padrão é info.

LogLevel ERROR desativou essas mensagens de login com spam.

    
por 28.05.2016 / 02:36