Uma solução geral simples e eficaz é usar logcheck .
sudo apt-get install logcheck
[edit /etc/logcheck/logcheck.conf to your liking]
logcheck varre periodicamente todos os logs de forma eficiente (começando de onde parou da última vez), filtra o que vê para eliminar qualquer coisa considerada normal e, opcionalmente, envia e-mails com qualquer coisa que não corresponde aos padrões normais / de rotina.
A idéia principal é observar a aparência de qualquer entrada séria em seus arquivos de log, todos eles, o tempo todo, então você não tem para.
logcheck é altamente configurável ( man logcheck
). Você pode configurar tudo, incluindo:
- frequência de cheques
- quais arquivos de log estão marcados
- o que é considerado normal vs não
- para onde enviar os alertas por e-mail (eventos anormais) para
e mais. Seus padrões de ignorados (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 vem com um extenso conjunto de arquivos com padrões de ignorar para muitos serviços já, então não há muito a adicionar a menos que seu sistema seja incomum no que é executado. Existem 3 conjuntos de perfis de arquivos ignorados pré-configurados: ignore.d.workstation , ignore.d.server e ignore.d.paranoid que você pode escolher.
A ideia principal 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á registra falhas de autenticação. Portanto, os principais componentes ausentes são:
- filtrando o que é normal
- O serviço de alerta
Ambos são fornecidos por logcheck em um pacote conveniente. Você pode combinar logcheck com qualquer outro registro. Por exemplo, iptables pode ser configurado para syslog qualquer tentativa de conexão de rede que não seja explicitamente permitida pela adição das regras:
iptables -A input -j LOG
iptables -A input -j DROP
imediatamente após todas as regras de permissão.
Eu acho que logcheck é muito mais útil do que logwatch (sugerido em outras respostas) porque é pré-embalados 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 ele envia por e-mail. YMMV.
Outra vantagem do logcheck é que ele é ortogonal para qualquer serviço que registra, portanto não há duplicação de função. Sempre que você adicionar um novo serviço que use syslog
para registrar eventos, anormais ou não, em qualquer arquivo em /var/log
, você começará a receber alertas automaticamente.
HOWTO:
Since
logcheck
already comes preconfigured, two lines at the top of this answer essentially cover all you need to get started. Just install it, and go over the top configuration file:/etc/logcheck/logcheck.conf
to change your email address sologcheck
emails alerts to you.Here's a friendly reference going over the second step in more detail. Since Ubuntu is based on Debian, these instructions should work on Ubuntu too. Here is another good reference.
Once you install, the continuous improvement process starts. Over time, you refine your rules to ignore anything that you already know about and feel shouldn't be of concern. This refinement process is as simple as adding text lines to a file in your favorite text editor.
Each line in an ignore file is an extended regular expression (see
man 7 regex
), but you may use simple strings as long as they match the log line you want to ignore. Just remember that characters like*
,?
, '+',[]
,()
are special in a regular expression, so if they actually appear in the log lines, you would have to escape them with a backslash\
in the ignore files.In other words: if you get an alert you don't want to get, look at the log line that was emailed to you, and add a pattern that matches it, as one line to any ignore file of your choice. I suggest using
/etc/logcheck/ignore.d.<yourloglevel>/my-ignores
as your personal ignore file. Where<yourloglevel>
is one ofparanoid
,server
, orworkstation
(as you've already selected in the main config file:/etc/logcheck/logcheck.conf
). Look at the examples in other ignore files to see how to account for text that changes all the time like process-IDs, or time-stamps. There are lots of existing examples to learn from.
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.