Uma solução geral simples e eficaz é usar o logcheck .
sudo apt-get install logcheck
[edit /etc/logcheck/logcheck.conf to your liking]
o logcheck verifica periodicamente todos os logs com eficiência (começando de onde parou na última vez), filtra o que vê para eliminar qualquer coisa considerada normal e, opcionalmente, envia alertas por email com algo que não corresponda aos padrões normais / de rotina.
A idéia principal é observar a aparência de entradas sérias nos arquivos de log, todas elas, o tempo todo, para que você não precise.
logcheck é altamente configurável (man logcheck
). Você pode configurar tudo, incluindo:
- frequência de verificações
- quais arquivos de log são verificados
- o que é considerado normal vs não
- para onde enviar os alertas (eventos anormais) para
e mais. Seus padrões de ignorar (normal / rotina) residem em vários arquivos em /etc/logcheck/ignore.d.* e você pode personalizá-los de acordo com suas necessidades; principalmente você pode querer adicionar seus próprios padrões para ignorar. O pacote padrão do Ubuntu já vem com um extenso conjunto de arquivos com padrões de ignorar para muitos serviços, então não há muito a acrescentar, a menos que seu sistema seja incomum no que é executado. Existem 3 conjuntos de perfis de arquivos ignorar pré-configurados: ignore.d.workstation , ignore.d.server e ignore.d.paranoid, dos quais você pode escolher.
A principal idéia por trás do logcheck é que os vários serviços executados em um sistema já registram eventos anormais. Por exemplo, sshd ou pam já registram falhas na autenticação. Portanto, os principais componentes ausentes são:
- filtrando o que é normal
- O serviço de alerta
Ambos são fornecidos por verificação de log em um pacote conveniente. Você pode combinar logcheck com qualquer outro registro. Por exemplo, o iptables pode ser configurado para syslog quaisquer tentativas de conexão de rede que não sejam explicitamente permitidas adicionando as regras:
iptables -A input -j LOG
iptables -A input -j DROP
imediatamente após todas as regras de permissão.
Acho que o logcheck é muito mais útil que o logwatch (sugerido em outras respostas) porque ele vem pré-empacotado com um número muito grande de regras para ignorar o que é considerado atividade normal. O resultado é uma relação sinal / ruído muito mais alta nos alertas que envia por e-mail. YMMV.
Outra vantagem do logcheck é que ele é ortogonal a qualquer serviço que faça logon, portanto não há duplicação de função. Sempre que você adiciona um novo serviço que usa syslog
para registrar eventos, anormais ou não, em qualquer arquivo em que /var/log
você começa a receber alertas automaticamente.
COMO:
Como logcheck
já vem pré-configurado, duas linhas na parte superior desta resposta cobrem basicamente tudo o que você precisa para começar. Basta instalá-lo e passar por cima do arquivo de configuração superior:
/etc/logcheck/logcheck.conf
para alterar seu endereço de e-mail para que os logcheck
alertas sejam enviados por e- mail .
Aqui está uma referência amigável, abordando o segundo passo com mais detalhes . Como o Ubuntu é baseado no Debian, essas instruções também devem funcionar no Ubuntu.
Aqui está outra boa referência .
Após a instalação, o processo de melhoria contínua é iniciado. Com o tempo, você refina suas regras para ignorar tudo o que você já conhece e sente que não deveria ser motivo de preocupação. Esse processo de refinamento é tão simples quanto adicionar linhas de texto a um arquivo no seu editor de texto favorito.
Cada linha em um arquivo ignorar é uma expressão regular estendida (consulte man 7 regex
), mas você pode usar cadeias simples, desde que correspondam à linha de log que deseja ignorar. Basta lembrar que personagens como *
, ?
'+', []
, ()
são especiais em uma expressão regular, por isso, se eles realmente aparecem nas linhas de log, você teria que escapar deles com uma barra invertida \
na arquivos ignorar.
Em outras palavras: se você receber um alerta que não deseja receber, observe a linha de log que foi enviada por e-mail e adicione um padrão que corresponda a ele, como uma linha para qualquer arquivo de ignorância de sua escolha. Eu sugiro usar
/etc/logcheck/ignore.d.<yourloglevel>/my-ignores
como seu arquivo de ignorado pessoal. Onde <yourloglevel>
está um dos paranoid
,, server
ou
workstation
(como você já selecionou no arquivo de configuração principal:) /etc/logcheck/logcheck.conf
. Veja os exemplos em outros arquivos ignorados para ver como contabilizar o texto que muda o tempo todo, como IDs de processo ou carimbos de data / hora. Existem muitos exemplos existentes para aprender.
Uma última dica: logcheck
vem com um pequeno utilitário útil chamado logcheck-test
que é muito útil para testar novas regras. man logcheck-test
para detalhes.