Escolar Documentos
Profissional Documentos
Cultura Documentos
www.linuxforce.com.br
Registro de Eventos
Quando temos algum problema com o nosso servidor, o primeiro lugar à consultar
são os logs
São os logs que trazem as informações do que está acontecendo no sistema. Muitas
vezes, só olhando os logs já conseguimos descobrir qual é o problema, e mesmo
se não sabemos qual é o problema, podemos copiar um trecho do log e procurar no
Google. Todos os logs estão no diretório /var/log.
No documento postado no prepara-se para a aula, mostra o que a norma fala sobre
os Logs(registro de eventos). Ela menciona o item 10.10 e 10.10.1, falando sobre o
3
Linux Force – www.linuxforce.com.br
que deve ser registrado. E fala do item 10.10.3 na questão de segurança dos logs.
O Cracker não tem interesse somente no conteúdo dos logs. Ele está mais interes-
sando em destruir os logs, apagar os rastros dele, para ninguém desconfiar que ele
esteve ali.
Quem é o Syslog-NG?
Estrutura do Syslog
• facilidade (facility)
• nível (level)
• destino (destination)
Exem-
plo:
Isso quer dizer que todos os logs de facilidade cron, com nível info, serão gravados
do arquivo /var/log/cron.info.
Estrutura do Syslog-NG
Fora isso, ele permite trabalhar com uma estrutura totalmente personalizada de logs
remotos, no Syslog, os logs de outras máquinas ficam no mesmo arquivo local do
servidor de logs, o que causa uma confusão na hora de pesquisar, o syslog-ng separa
em arquivos e até uma estrutura inteira de diretório para um máquina.
O syslog-ng permite também que se faça logs por palavras, podendo personalizar
ainda mais os logs, conforme a necessidade do administrador.
Instalacão do syslog-NG:
1 # cd / etc / syslog - ng
2 # vim syslog - ng . conf
1 # OPC Õ ES GLOBAIS
2 options { long_hostnames ( off ) ;};
3 #
----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -#
4 # OP ÇÕ ES DE ORIGEM
5 source
6 src
7 {
8 unix - dgram ( " / dev / log " ) ;
9 log_prefix ( " kernel : " ) ) ;};
10 internal () ;
11 file ("/ proc / kmsg "
12 #
----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -#
13 # OPC Õ ES DE FILTRAGEM
14 filter f_authpriv { facility ( auth , authpriv ) ; };
15 filter f_syslog { not facility ( auth , authpriv ) ; };
16 filter f_cron { facility ( cron ) ; };
17 filter f_daemon { facility ( daemon ) ; };
37 # OPC Õ ES DE DESTINO
38
39 destination d_authlog { file ( " / var / log / auth . log " owner ( " root " )
group ( " adm " )
40 perm (0640) ) ; };
41
42 destination d_syslog { file ( " / var / log / syslog " owner ( " root " ) group ( "
adm ")
43 perm (0640) ) ; };
44
45 destination d_cron { file ( " / var / log / cron . log " owner ( " root " ) group ( "
adm ")
46 perm (0640) ) ; };
47
48 destination d_daemon { file ( " / var / log / daemon . log " owner ( " root " )
group ( " adm " )
49 perm (0640) ) ; };
50
51 destination d_kern { file ( " / var / log / kern . log " owner ( " root " ) group ( "
adm ")
52 perm (0640) ) ; };
53
54 destination d_lpr { file ( " / var / log / lpr . log " owner ( " root " ) group ( " adm
")
55 perm (0640) ) ; };
56
57 destination d_mail { file ( " / var / log / mail . log " owner ( " root " ) group ( "
adm ")
58 perm (0640) ) ; };
59
60 destination d_user { file ( " / var / log / user . log " owner ( " root " ) group ( "
adm ")
61 perm (0640) ) ; };
62
63 destination d_uucp { file ( " / var / log / uucp . log " owner ( " root " ) group ( "
adm ")
64 perm (0640) ) ; };
65
66 destination d_mailinfo { file ( " / var / log / mail . info " owner ( " root " )
group ( " adm " )
67 perm (0640) ) ; };
68
69 destination d_mailwarn { file ( " / var / log / mail . warn " owner ( " root " )
group ( " adm " )
70 perm (0640) ) ; };
71
72 destination d_mailerr { file ( " / var / log / mail . err " owner ( " root " ) group
(" adm " )
73 perm (0640) ) ; };
74
75 destination d_newscrit { file ( " / var / log / news / news . crit " owner ( " root "
Nas opções de origem, a palavra source é uma palavra reservada e não pode ser
mudada, o que vem depois dela, no caso do exemplo é src, é um nome que é definido
pelo administrador, pode ser qualquer nome.
Nas opções de filtro, a palavra filter é uma palavra reservada e não pode ser mudada,
o que vem depois dela, é definida pelo administrador. No nosso exemplo, foi colocado
um f_ na frente do nome de cada filtro, para facilitar a visualização dos filtros.
Podemos pegar o exemplo do f_authpriv. Esse filtro diz que ele vai capturar tudo
que tiver facilidade auth e authpriv. Como os níveis não foram especificados, ele vai
capturar essas facilidades em todos os níveis.
Outro exemplo é o f_messages. Esse filtro diz que ele vai capturar tudo que tiver
nível de info até warn, em todas as facilidades que NÃO sejam a auth, authpriv, cron,
daemon, mail e news.
Todos os destinos tem o mesmo formato. Eles dizem qual é o arquivo(file) que
será gravado, quem será o usuário dono(owner) desse arquivo, quem será o grupo
dono(group) do arquivo e qual vai ser a permissão(perm) do arquivo.
Na verdade, até aqui não da para saber, pois até agora, só declaramos as peças, na
próxima parte de LOG é que vamos começar a juntá-las.
Na junção dos logs, nós vamos definir a origem do meu log, quais os filtros eu quero
aplicar e onde ele será gravado.
Um exemplo é que estamos dizendo que tudo que vier de origem local, será aplicado
o filtro f_authpriv e será gravado no destino d_authlog.
1 # ls / var / log
Bom, ainda não existe, mas podemos reiniciar o cron para ver o que acontece:
Isso é uma coisa bacana, pois o Syslog-ng só cria os arquivos sob demanda, só
quando algum evento relacionado acontece, diferente do Syslog que cria um monte
de arquivos em branco.
Para nos ajudar nesse tipo de coisa, podemos trabalhar com a estrutura Cliente e
Servidor. Nessa estrutura, podemos pegar um servidor da rede, para fazer o papel
de Servidor de Logs, e todos os outros servidores enviam os seus Logs para ele, se
algum servidor for prejudicado e não conseguirmos acessar os logs, podemos pegar
os logs que estão gravados no servidor.
Porque o pacote UDP não possuí controle de erros igual ao TCP, ele é um protocolo
menos confiável, mas é um protocolo mais rápido. Imaginem se para toda troca de
arquivos de LOG, ele precisasse estabelecer uma conexão TCP. Inviável
Agora precisamos definir um filtro para a máquina que vai ser o cliente, ou mais de
um filtro se tiverem outras máquinas:
ou
Agora que está tudo certo na parte servidor, precisamos configurar a parte cliente.
A parte cliente é bem mais simples. As configurações também são feitas no arquivo
syslog-ng.conf.
Com isso, todas os logs locais serão enviados para o servidor de Logs.
Olhando os logs, não dá para saber quem criou um arquivo, quem apagou ou quem
digitou determinado comando.
Se vamos fazer uma Auditoria mais aprofundada nos servidores, e precisamos que
os logs contenham usuários que digitaram comandos ou quais foram os comandos
digitados, precisaremos usar outras ferramentas para isso.
Para esse caso, podemos utilizar duas ferramentas para fazer isso. A primeira é um
comando chamado lastcomm, que pertence a um pacote chamado acct.
Para fazer o teste, vocês podem digitar vários comandos com qualquer usuário e
depois podemos analisar o resultado.
1 # lastcomm
1 # lastcomm root
Ou, podemos ver quem foram os últimos usuários que digitaram o comando rm:
1 # lastcomm rm
O Snoopy é uma biblioteca que é carregada sempre que um usuário efetua um login.
Assim, ele registra tudo que é digitado.
Instalem o Snoopy:
Para testar, é necessário fazer o login novamente com um usuário, pode ser o root
ou qualquer outro.