Monitoramento
18 de abril de 2007
Sumário
I Sobre essa Apostila 2
II Informações Básicas 4
III Monitoramento 9
1 O que é? 10
2 Plano de ensino 11
2.1 Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2 Público Alvo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.3 Pré-requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.4 Descrição . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.5 Metodologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.6 Cronograma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.7 Programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.8 Avaliação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.9 Bibliografia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3 Introdução 14
3.1 Porque monitorar? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.2 Onde monitorar? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4 TCPDUMP 15
4.1 NOME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
4.2 SINOPSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
4.3 DESCRIÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
4.4 OPÇÕES: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
4.5 expressão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.6 ether multicast . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
5 Nagios 29
5.1 O que é o Nagios? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
5.2 Como Nagios Monitora as Máquinas? . . . . . . . . . . . . . . . . . . . . . . . . . . 29
5.3 O que o Nagios pode fazer? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
5.4 Porque utilizar o Nagios? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
5.5 Considerações finais sobre o Nagios . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
1
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
6 MRTG 31
6.1 MRTG - Multi-router traffic grapher . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
6.2 Características gerais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
6.3 História . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
6.3.1 Leia mais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
6.3.2 Autor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
7 Cacti 33
8 Arquivos de log 35
8.1 Follow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
8.2 Arquivos e daemons de Log . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
8.3 Formato do arquivo de log . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
8.4 syslogd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
8.5 Arquivo de configuração syslog.conf . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
8.6 klogd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
8.6.1 opções . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
8.7 Programas úteis para monitoração e gerenciamento de arquivos de logs . . . . . . . 41
8.7.1 logcheck . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
2
Parte I
Sobre essa Apostila
3
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
Conteúdo
O conteúdo dessa apostila é fruto da compilação de diversos materiais livres publicados na in-
ternet, disponíveis em diversos sites ou originalmente produzido no CDTC em http://www.cdtc.org.br.
O formato original deste material bem como sua atualização está disponível dentro da licença
GNU Free Documentation License, cujo teor integral encontra-se aqui reproduzido na seção de
mesmo nome, tendo inclusive uma versão traduzida (não oficial).
A revisão e alteração vem sendo realizada pelo CDTC (suporte@cdtc.org.br) desde outubro
de 2006. Críticas e sugestões construtivas são bem-vindas a qualquer tempo.
Autores
A autoria deste é de responsabilidade de André Marra G. Araujo (andremarra@cdtc.org.br) .
O texto original faz parte do projeto Centro de Difusão de Tecnologia e Conhecimento, que
vem sendo realizado pelo ITI (Instituto Nacional de Tecnologia da Informação) em conjunto com
outros parceiros institucionais, atuando em conjunto com as universidades federais brasileiras
que tem produzido e utilizado Software Livre, apoiando inclusive a comunidade Free Software
junto a outras entidades no país.
Informações adicionais podem ser obtidas através do email ouvidoria@cdtc.org.br, ou da
home page da entidade, através da URL http://www.cdtc.org.br.
Garantias
O material contido nesta apostila é isento de garantias e o seu uso é de inteira responsabi-
lidade do usuário/leitor. Os autores, bem como o ITI e seus parceiros, não se responsabilizam
direta ou indiretamente por qualquer prejuízo oriundo da utilização do material aqui contido.
Licença
Copyright ©2006, Instituto Nacional de Tecnologia da Informação (cdtc@iti.gov.br) .
Permission is granted to copy, distribute and/or modify this document under the terms
of the GNU Free Documentation License, Version 1.1 or any later version published by
the Free Software Foundation; with the Invariant Chapter being SOBRE ESSA APOS-
TILA. A copy of the license is included in the section entitled GNU Free Documentation
License.
4
Parte II
Informações Básicas
5
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
Sobre o CDTC
Objetivo Geral
O Projeto CDTC visa a promoção e o desenvolvimento de ações que incentivem a dissemina-
ção de soluções que utilizem padrões abertos e não proprietários de tecnologia, em proveito do
desenvolvimento social, cultural, político, tecnológico e econômico da sociedade brasileira.
Objetivo Específico
Auxiliar o Governo Federal na implantação do plano nacional de software não-proprietário e
de código fonte aberto, identificando e mobilizando grupos de formadores de opinião dentre os
servidores públicos e agentes políticos da União Federal, estimulando e incentivando o mercado
nacional a adotar novos modelos de negócio da tecnologia da informação e de novos negócios
de comunicação com base em software não-proprietário e de código fonte aberto, oferecendo
treinamento específico para técnicos, profissionais de suporte e funcionários públicos usuários,
criando grupos de funcionários públicos que irão treinar outros funcionários públicos e atuar como
incentivadores e defensores de produtos de software não proprietários e código fonte aberto, ofe-
recendo conteúdo técnico on-line para serviços de suporte, ferramentas para desenvolvimento de
produtos de software não proprietários e de seu código fonte livre, articulando redes de terceiros
(dentro e fora do governo) fornecedoras de educação, pesquisa, desenvolvimento e teste de pro-
dutos de software livre.
Guia do aluno
Neste guia, você terá reunidas uma série de informações importantes para que você comece
seu curso. São elas:
• Licenças para cópia de material disponível
• Os 10 mandamentos do aluno de Educação a Distância
• Como participar dos foruns e da wikipédia
• Primeiros passos
É muito importante que você entre em contato com TODAS estas informações, seguindo o
roteiro acima.
Licença
Copyright ©2006, Instituto Nacional de Tecnologia da Informação (cdtc@iti.gov.br).
6
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
É dada permissão para copiar, distribuir e/ou modificar este documento sob os termos
da Licença de Documentação Livre GNU, Versão 1.1 ou qualquer versão posterior
públicada pela Free Software Foundation; com o Capitulo Invariante SOBRE ESSA
APOSTILA. Uma cópia da licença está inclusa na seção entitulada "Licença de Docu-
mentação Livre GNU".
Os 10 mandamentos do aluno de educação online
• 1. Acesso à Internet: ter endereço eletrônico, um provedor e um equipamento adequado é
pré-requisito para a participação nos cursos a distância.
• 2. Habilidade e disposição para operar programas: ter conhecimentos básicos de Informá-
tica é necessário para poder executar as tarefas.
• 3. Vontade para aprender colaborativamente: interagir, ser participativo no ensino a distân-
cia conta muitos pontos, pois irá colaborar para o processo ensino-aprendizagem pessoal,
dos colegas e dos professores.
• 4. Comportamentos compatíveis com a etiqueta: mostrar-se interessado em conhecer seus
colegas de turma respeitando-os e fazendo ser respeitado pelo mesmo.
• 5. Organização pessoal: planejar e organizar tudo é fundamental para facilitar a sua revisão
e a sua recuperação de materiais.
• 6. Vontade para realizar as atividades no tempo correto: anotar todas as suas obrigações e
realizá-las em tempo real.
• 7. Curiosidade e abertura para inovações: aceitar novas idéias e inovar sempre.
• 8. Flexibilidade e adaptação: requisitos necessário à mudança tecnológica, aprendizagens
e descobertas.
• 9. Objetividade em sua comunicação: comunicar-se de forma clara, breve e transparente é
ponto - chave na comunicação pela Internet.
• 10. Responsabilidade: ser responsável por seu próprio aprendizado. O ambiente virtual não
controla a sua dedicação, mas reflete os resultados do seu esforço e da sua colaboração.
Como participar dos fóruns e Wikipédia
Você tem um problema e precisa de ajuda?
Podemos te ajudar de 2 formas:
A primeira é o uso dos fóruns de notícias e de dúvidas gerais que se distinguem pelo uso:
. O fórum de notícias tem por objetivo disponibilizar um meio de acesso rápido a informações
que sejam pertinentes ao curso (avisos, notícias). As mensagens postadas nele são enviadas a
7
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
todos participantes. Assim, se o monitor ou algum outro participante tiver uma informação que
interesse ao grupo, favor postá-la aqui.
Porém, se o que você deseja é resolver alguma dúvida ou discutir algum tópico específico do
curso. É recomendado que você faça uso do Forum de dúvidas gerais que lhe dá recursos mais
efetivos para esta prática.
. O fórum de dúvidas gerais tem por objetivo disponibilizar um meio fácil, rápido e interativo
para solucionar suas dúvidas e trocar experiências. As mensagens postadas nele são enviadas
a todos participantes do curso. Assim, fica muito mais fácil obter respostas, já que todos podem
ajudar.
Se você receber uma mensagem com algum tópico que saiba responder, não se preocupe com a
formalização ou a gramática. Responda! E não se esqueça de que antes de abrir um novo tópico
é recomendável ver se a sua pergunta já foi feita por outro participante.
A segunda forma se dá pelas Wikis:
. Uma wiki é uma página web que pode ser editada colaborativamente, ou seja, qualquer par-
ticipante pode inserir, editar, apagar textos. As versões antigas vão sendo arquivadas e podem
ser recuperadas a qualquer momento que um dos participantes o desejar. Assim, ela oferece um
ótimo suporte a processos de aprendizagem colaborativa. A maior wiki na web é o site "Wikipé-
dia", uma experiência grandiosa de construção de uma enciclopédia de forma colaborativa, por
pessoas de todas as partes do mundo. Acesse-a em português pelos links:
• Página principal da Wiki - http://pt.wikipedia.org/wiki/
Agradecemos antecipadamente a sua colaboração com a aprendizagem do grupo!
Primeiros Passos
Para uma melhor aprendizagem é recomendável que você siga os seguintes passos:
• Ler o Plano de Ensino e entender a que seu curso se dispõe a ensinar;
• Ler a Ambientação do Moodle para aprender a navegar neste ambiente e se utilizar das
ferramentas básicas do mesmo;
• Entrar nas lições seguindo a seqüência descrita no Plano de Ensino;
• Qualquer dúvida, reporte ao Fórum de Dúvidas Gerais.
Perfil do Tutor
Segue-se uma descrição do tutor ideal, baseada no feedback de alunos e de tutores.
O tutor ideal é um modelo de excelência: é consistente, justo e profissional nos respectivos
valores e atitudes, incentiva mas é honesto, imparcial, amável, positivo, respeitador, aceita as
idéias dos estudantes, é paciente, pessoal, tolerante, apreciativo, compreensivo e pronto a ajudar.
8
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
A classificação por um tutor desta natureza proporciona o melhor feedback possível, é crucial, e,
para a maior parte dos alunos, constitui o ponto central do processo de aprendizagem.’ Este tutor
ou instrutor:
• fornece explicações claras acerca do que ele espera, e do estilo de classificação que irá
utilizar;
• gosta que lhe façam perguntas adicionais;
• identifica as nossas falhas, mas corrige-as amavelmente’, diz um estudante, ’e explica por-
que motivo a classificação foi ou não foi atribuída’;
• tece comentários completos e construtivos, mas de forma agradável (em contraste com um
reparo de um estudante: ’os comentários deixam-nos com uma sensação de crítica, de
ameaça e de nervossismo’)
• dá uma ajuda complementar para encorajar um estudante em dificuldade;
• esclarece pontos que não foram entendidos, ou corretamente aprendidos anteriormente;
• ajuda o estudante a alcançar os seus objetivos;
• é flexível quando necessário;
• mostra um interesse genuíno em motivar os alunos (mesmo os principiantes e, por isso,
talvez numa fase menos interessante para o tutor);
• escreve todas as correções de forma legível e com um nível de pormenorização adequado;
• acima de tudo, devolve os trabalhos rapidamente;
9
Parte III
Monitoramento
10
Capítulo 1
O que é?
Hoje em dia, há muitas aplicações de monitoramento. Monitoramento de rede, local, aplicações
que geram gráficos de disponibilidade, sniffers, geradores de relatórios, arquivos de log, monito-
ramento de performance e etc. Estamos numa era em que uma informação é importante e, mais
do que isso, cara e até sigilosa. Este curso visará mostrar algumas ferramentas e caminhos que
ajudam no monitoramento de um PC ou uma rede.
11
Capítulo 2
Plano de ensino
2.1 Objetivo
Qualificar usuários básicos a monitorar PC’s para a segurança dos seus dados.
2.2 Público Alvo
Usuários finais, técnicos e trogramadores que desejam trabalhar com monitoramento em am-
biente GNU/Linux
2.3 Pré-requisitos
Os usuários deverão ser, necessariamente, funcionários públicos e ter conhecimentos básicos
para operar um computador.
2.4 Descrição
O curso de Monitoramento será realizado na modalidade EAD e utilizará a plataforma Moodle
como ferramenta de aprendizagem. Ele é composto de um módulo de aprendizado que será dado
na primeira semana e um módulo de avaliação que será dado na segunda semana. O material
didático estará disponível on-line de acordo com as datas pré-estabelecidas no calendário.
2.5 Metodologia
O curso está dividido da seguinte maneira:
2.6 Cronograma
• Lição 1 - Introdução
• Lição 2 - tcpdump
12
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
• Lição 3 - Nagios
• Lição 4 - MRTG
• Lição 5 - Cacti
• Lição 6 - Arquivos de log
• Avaliação de aprendizagem
• Avaliação do curso
As lições contém o contéudo principal. Elas poderão ser acessadas quantas vezes forem neces-
sárias, desde que esteja dentro da semana programada. Ao final de uma lição, você receberá
uma nota de acordo com o seu desempenho. Responda com atenção às perguntas de cada lição,
pois elas serão consideradas na sua nota final. Caso sua nota numa determinada lição for menor
do que 6.0, sugerimos que você faça novamente esta lição.
Ao final do curso será disponibilizada a avaliação referente ao curso. Tanto as notas das lições
quanto a da avaliação serão consideradas para a nota final. Todos os módulos ficarão visíveis
para que possam ser consultados durante a avaliação final.
Aconselhamos a leitura da "Ambientação do Moodle"para que você conheça a plataforma de En-
sino a Distância, evitando dificuldades advindas do "desconhecimento"sobre a mesma.
Os instrutores estarão a sua disposição ao longo de todo curso. Qualquer dúvida deverá ser
enviada no fórum. Diariamente os monitores darão respostas e esclarecimentos.
2.7 Programa
O curso de CVS oferecerá o seguinte conteúdo:
• Introdução sobre o que monitorar
• tcpdump
• Nagios
• MRTG
• Cacti
• Arquivos de log
2.8 Avaliação
Toda a avaliação será feita on-line.
Aspectos a serem considerados na avaliação:
• Iniciativa e autonomia no processo de aprendizagem e de produção de conhecimento;
• Capacidade de pesquisa e abordagem criativa na solução dos problemas apresentados.
Instrumentos de avaliação:
13
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
• Participação ativa nas atividades programadas.
• Avaliação ao final do curso.
• O participante fará várias avaliações referente ao conteúdo do curso. Para a aprovação e
obtenção do certificado o participante deverá obter nota final maior ou igual a 6.0 de acordo
com a fórmula abaixo:
• Nota Final = ((ML x 7) + (AF x 3)) / 10 = Média aritmética das lições
• AF = Avaliações
2.9 Bibliografia
Sites recomendados:
• http://www.slackware-brasil.com.br/web_site/artigos/artigo_completo.php?aid=122
• http://listas.cipsga.org.br/pipermail/linux-sbo/2004-December/000403.html
• http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=595
• http://focalinux.cipsga.org.br/guia/avancado/index.html
14
Capítulo 3
Introdução
3.1 Porque monitorar?
Quando se trabalha numa empresa na área de segurança da informação, é necessário se ter
à mão algumas ferramentas que ajudam e facilitam o nosso trabalho. Há muitas pessoas que
vivem invadindo nossos computadores e podem até "pegar"informações sigilosas como senha de
banco, senha de login, senha da rede wireless e etc.
Quando se trabalha com servidores, é preciso verificar como o computador está reagindo aos
acessos, verificar o processamento, se tem memória suficiente, verificar invasões e etc.
Em ambiente GNU/Linux hã vãrios softwares que podem nos ajudar a ter informações impor-
tantes sobre o nosso micro. Neste curso veremos algumas ferramentas e o que elas fazem. O
CDTC tem curso de muitas ferramentas que veremos. Este curso focará apenas uma introdução
a elas devido a isso. Podemos citar:
• Cacti
• MRTG
• Nagios
• 1Kismet
• etc.
3.2 Onde monitorar?
Neste curso, todas as ferramentas são nativas ao sistema GNU/Linux. Em todos os nossos
cursos usamos a distribuição Debian como base. E, por isso, recomendamos também que as
ferramentas tratadas neste curso sejam usadas em Debian.
1
O Kismet monitora redes wireless. Porém não será tratado neste curso.
15
Capítulo 4
TCPDUMP
4.1 NOME
tcpdump - captura o tráfego em uma rede
4.2 SINOPSE
tcpdump [ -adeflnNOpqRStvxX ] [ -c contagem ] [ -F arquivo ] [ -i interface ] [ -m módulo ] [ -r
arquivo ] [ -s tamanho ] [ -T tipo ] [ -w arquivo ] [ -E algo:secret ] [ expressão ]
4.3 DESCRIÇÃO
Tcpdump imprime a saída dos cabeçalhos dos pacotes na interface de rede que combinam
com a expressão booleana.
No SunOS com nit ou bpf: Para rodar tcpdump você necessita ter permissão de acesso a
/dev/nit ou /dev/bpf*.
No Solaris com dlpi: Você precisa ter acesso de leitura/escrita ao pseudo dispositivo de rede, por
exemplo /dev/le.
No HP-UX com dlpi: Você necessita ser root ou ter este instalado com setuid para root.
No IRIS com snoop: Você necessita ser root ou ter este instalado com setuid para root.
No Linux: Você necessita ser root ou ter este instalado com setuid para root.
No Ultrix e Digital UNIX: Somente o super-usuário tem permissão de utilizar o modo de operação
promíscuo usando
pfconfig(8), qualquer usuário pode rodar o tcpdump.
No BSD: Você necessita ter acesso de leitura em /dev/bpf*.
4.4 OPÇÕES:
-a Espera para converter endereços de rede e broadcast para nomes.
-c Sai após receber contagem de pacotes.
16
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
-d Captura os pacotes compilados com o código do pacote em um formato humanamente legível
para a saída padrão e sai.
-dd Captura os pacotes com o código do pacote como um fragmento de programa em C.
-ddd Captura os pacotes com o código do pacote como números decimais (precedidos de um
contador).
-e Imprime a camada de link do cabeçalho na linha capturada.
-E Use algo:secreto para decriptar pacotes IPsec ESP. Algoritmos costumam ser des-cbc, 3des-
cbc, blowfish-cbc, rc3-cbc, cast128-cbc, ou nenhum. O padrão é des-cbc. A habilidade de
descriptar pacotes só estará presente se o tcpdump for compilado com suporte a criptografia
habilitado. secreto é o texto ASCII para a chave ESP secreta. Nós não tentaremos um valor
binário arbitrário neste momento. A opção assume a RFC2406 do ESP, não a RFC1827
também do ESP. A opção é somente para propósitos de depuração, e o uso desta opção
com uma chave secreta TRULY é desencorajada. Pela apresentação da chave secreta do
IPsec na linha de comando você consegue deixar isto visível para outros, via ps(1) e em
outras ocasiões.
-f Imprime a saída dos endereços internet numéricamente no lugar de simbólicamente (essa
opção tenta descobrir sérios problemas em servidores YP utilizando Sun - - usualmente
causa um loop eterno na conversão de não-locais números internet).
-F Utiliza o arquivo para a entrada de um filtro de expressão. Qualquer expressão adicional
passada via linha de comando é ignorada.
-i Escute na interface. Se não especificado o tcpdump irá procurar a lista de interfaces do sis-
tema, interfaces ativas (excluindo a de loopback). Em sistemas Linux com kernels 2.2 ou
superiores, um argumento ``any” para interfaces pode ser usado para capturar pacotes de
todas as interfaces. Note que as capturas em ``any” (todos) os dispositivos não poderá ser
feita no modo promíscuo.
-l Deixe a linha de saída "bufferizada". Usualmente se você quizer ver os dados enquanto são
capturados. Ex: ``tcpdump -l | tee dat” ou ``tcpdump -l > dat & tail -f dat”.
-n Não converter endereços (Ex: endereços de hosts e números de portas, etc) para nomes.
-N Não imprime a qualificação do domínio dos nomes de host. Ex: se você passar esta flag para
o tcpdump, ele imprimirá ``nic” ao invés de ``nic.ddn.mil”.
-m Carrega as definições do módulo SMI MIB do arquivo módulo. Esta opção pode ser usada
em diversas vezes para carregar severos módulos MIB no tcpdump.
-O Não execute o otimizador de códigos de pacote. Isso usualmente só será utilizado se você
suspeitar de uma falha no otimizador.
-p Não coloca a interface em modo promíscuo. Note que esta interface pode precisar entrar
em modo promíscuo por alguma outra razão; então, `-p’ não poderá ser usado como uma
abreviação para `ether host local-hw- addr ou ether broadcast’.
-q Saída rápida. Imprime menos informações do protocolo em saídas de linhas mais curtas.
17
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
-r Lê os pacotes do arquivo (isso é criado com a opção -w). A entrada padrão será utilizada se o
arquivo for ``-”.
-s Sniffa tamanho de bytes de arquivo deste pacote. O default é 68 (com SunOS’s NIT, o mínimo
é atualmente 96). 68 bytes é adequado para IP, ICMP, TCP e UDP porém pode truncar
informações de protocolos de pacotes DNS e NFS (olhe na frente). Os pacotes serão
truncados porque um tamanho limitado foi indicado e a saída será ``[|proto]”, onde proto é o
nome do nível do protocolo onde a truncagem ocorreu. Note que aumentar muito o tamanho
pode causar uma delonga no tempo para processar estes pacotes e, efetivamente, diminuir
a quantidade de pacotes capturados. Isso pode causar perda de pacotes. Você deve limitar
o tamanho dos pacotes para o menor possível onde você conseguirá obter a informação que
lhe interessar. Coloque o tamanho em 0 para que o tcpdump capture os pacotes completos,
independente dos seus tamanhos.
-T Força que os pacotes selecionados pela "expressão"sejam interpretados pelo tipo especifi-
cado. Atualmente, os tipos conhecidos são cnfp (Protocolo Cisco NetFlow), rpc (Chamadas
de procedimento remotas), rtp (Protocolo de aplicações em tempo real), rtcp (Protocolo
de controle de aplicações em tempo real), snmp (Protocolo simples de gerenciamento de
redes), vat (Aplicação de Visual Audio), e wb (Placa Branca distribuída).
-R Assume que pacotes ESP/AH são baseados em especificações antigas (RFC1825 a RFC1829).
Se especificado, o tcpdump não irá imprimir o campo de prevensão. No entanto, este não
é um campo de versão na especificação do protocolo ESP/AH, portanto o tcpdump não
poderá deduzir a versão do protocolo.
-S Imprimir o absoluto, em lugar do relativo, número de sequência TCP.
-t Não imprimir o timestamp na linha capturada.
-tt Imprimir um não formatado timestamp na linha capturada.
-v Detalhamento da saída (não muito). Por exemplo, o tempo de vida, identificação, tamanho
total e opções do cabeçalho IP serão impressos. Também se habilita opções adicionais de
checagem da integridade dos pacotes como verificação do checksum dos cabeçalhos IP e
ICMP.
-vv Saída mais detalhada. Por exemplo, campos adicionais serão impressos em pacotes NFS de
resposta.
-vvv Saída mais detalhada ainda. Por exemplo, as opções telnet SB ... SE serão impressas
totalmente. Com -X as opções do telnet serão impressas em HEX muito bem.
-w Escreve os pacotes capturados no arquivo no lugar de selecioná-los e imprimí-los. Isso poderá
ser impresso utilizando-se a opção -r. A saída padrão será utilizada se o arquivo for ``-”.
-x Imprime este pacote (menos seu cabeçalho de camada de link) em hexadecimal. Tamanho
em bytes será impresso (opção -s).
-X Se imprime em hexa, imprime em ASCII também. Se a opção -x também for selecionada, o
pacote será impresso em hexa/ascii. Isso é muito útil para analizar novos protocolos. Se a
opção -x não estiver selecionada, algumas partes de alguns pacotes serão impressas em
hexa/ascii.
18
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
4.5 expressão
Seleciona quais pacotes serão capturados. Se nenhuma expressão for passada, todos os
pacotes da rede serão capturados.
Se informada, apenas os pacotes que tiverem a expressão como sendo verdadeira (combina-
rem com a expressão) serão capturados.
A expressão consiste em uma ou mais primitivas.
Primitivas usualmente consistem em um identificador (nome ou número) precedidas de um ou
mais qualificadores. Existem 3 diferentes qualificadores:
type indica qual identificador (nome ou número) ele se refere. Os tipos possíveis são: host,
net e port.
Exemplos:
``host foo”
``net 128.3”
``port 20”
Se nenhum qualificador type for especificado, host será assumido.
dir indica a direção em que a transferência ocorrerá, para e/ou do identificador. As direções
possíveis são src, dst, src or dst e src and dst
Exemplos:
``src foo”
``dst net 128.3”
”src or dst port ftp-data”
Se nenhum qualificador dir for especificado, src or dst será assumido. Para camadas de link
``null” (Ex: protocolos de ponto a ponto como o slip) os qualificadores de entrada e saída devem
ser utilizados para especificar a direção desejada.
proto Qualificador restrito a estipular um tipo particular de protocolo. As opções existentes de
protocolo são:
ether, fddi, tr, ip, ip6, arp, rarp, decnet, tcp e udp.
Ex:
``ether src foo”
``arp net 128.3”
``tcp port 21”
Se não estipulado, todos os protocolos existentes em opção serão assumidos.
19
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
Ex:
``src foo” inclui
``(ip or arp or rarp) src foo”
``net bar” inclui
``(ip or arp or rarp) net bar” e
``port 53” inclui
``(tcp or udp) port 53”.
`fddi’ é atualmente um apelido para `ether’; isso seria idêntico a mensionar ``o nível de link de
dados usado nesta específica interface de rede.”
Cabeçalhos FDDI possuem campos iguais ao Ethernet, de endereços de origem e destino, e
também tipo de pacotes, então você pode filtrar estes campos FDDI analogamente como você
faz com estes campos Ethernet.
Cabeçalhos FDDI também contém outros campos, porém você não poderá especificá-los em uma
expressão de filtro.
Similarmente, `tr’ é um apelido para `ether’; o parágrafo anterior sobre os cabeçalhos FDDI tam-
bém se aplica a cabeçalhos Token Ring.
Em adição a isto, existe algumas outras diretivas especiais que não foram mencionadas: gateway,
broadcast, less, greater e expressões aritméticas. Todas elas serão descritas mais adiante.
Expressões de filtragem mais complexas podem ser feitas utilizando-se expressões como and, or
e not combinadas com as diretivas.
Ex:
``host foo and not port ftp and not port ftp-data”.
Para facilitar, listas de qualificadores idênticos podem ser omitidas.
Ex:
``tcp dst port ftp or ftp-data or domain”
é exatamente o mesmo que:
``tcp dst port ftp or tcp dst port ftp-data or tcp dst port domain”.
Primitivas (diretivas) permitidas são:
dst host host
Verdadeiro se o campo de destino de pacotes IPv4/v6 for host, este pode ser endereço ou nome.
src host host
20
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
Verdadeiro se o campo de origem de pacotes IPv4/v6 for host.
host host
Verdadeiro se o campo de origem ou destino de pacotes IPv4/v6 for host. Qualquer uma des-
tas expressões de host podem ser precedidas por diretivas tais como ip, arp, rarp, ou ip6, assim:
ip host host
isso é o equivalente a:
ether proto ip and host host
Se host for um nome com múltiplos endereços IP, eles serão checados para a correlação.
ether dst ehost
Verdadeiro se o endereço de destino ethernet for ehost. Ehost pode ser um nome de /etc/ethers
ou um número (veja ethers(3N) para o formato numérico).
ether src ehost
Verdadeiro se o endereço de origem ethernet for ethos.
ether host ehost
Verdadeiro se o endereço de origem ou de destino ethernet for ehost.
gateway host
Verdadeiro se o host usado no pacote for um gateway. Ex: o endereço de origem ou destino
ethernet seja um host diferente do endereço de origem ou destino IP.
Host precisa ser um nome e ser encontrado tanto em /etc/hosts quanto /etc/ethers.
(Uma expressão equivalente seria:
ether host ehost and not host host
que poderia ser usada com nomes ethernet ou números para host / ehost.)
Esta syntax por enquanto não funciona com configurações IPv6.
dst net net
Verdadeiro se o endereço de destino IPv4/v6 do pacote for um número de rede. Net pode ser
um nome de /etc/networks ou um número de rede (veja networks(4) para maiores detalhes).
21
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
src net net
Verdadeiro se o endereço de origem IPv4/v6 do pacote for um número de rede.
net net
Verdadeiro se o endereço de origem ou destino IPv4/v6 do pacote for um número de rede.
net net mask mask
Verdadeiro se o endereço IP combinar com a rede de mascará especificada. Pode ser qualifi-
cada com src ou dst. Esta syntax também não foi implementada para redes IPv6.
net net/len
Verdadeiro se o endereço IPv4/v6 combinar com a rede que possua netmask len bits. Pode
ser qualificada com src ou dst.
dst port port
Verdadeiro se o pacote for ip/tcp, ip/udp, ip6/tcp ou ip6/udp e sua porta de destino seja port.
A porta pode ser um número ou um nome usado em /etc/services (veja tcp(4P) e udp(4P)).
Se um nome for usado, tanto o número da porta quanto o protocolo serão checados.
Se um número ou um nome ambíguo for utilizado, somente o número da porta será checado.
Ex:
dst port 513
Irá imprimir tanto tcp/login quanto udp/who
e
port domain
Irá imprimir tanto tcp/domain quanto udp/domain
src port port
Verdadeiro se o pacote tiver a porta de origem port.
port port
Verdadeiro se a porta de origem ou de destino do pacote for port. Todas as expressões de
22
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
porta anteriores podem ser precedidas com diretivas tcp ou udp, assim:
tcp src port port
Irá capturar apenas pacotes tcp com porta de origem port.
less length
Verdadeiro se o pacote tiver um tamanho menor ou igual a length. Isso seria o equivalente a:
len <= length.
greater length
Verdadeiro se o pacote tiver um tamanho maior ou igual a length. Isso seria o equivalente a:
len >= length.
ip proto protocol
Verdadeiro se o pacote for um pacote IP (veja ip(4P)) com protocolo de tipo protocol. Proto-
col pode ser um número ou um dos nomes: icmp, icmp6, igmp, igrp, pim, ah, esp, udp ou tcp.
Note que os identificadores tcp, udp e icmp também são diretivas que podem ser passadas via
backslash (l), isso seria no C-Shell.
Perceba que esta primitiva não observa a regra de protocolo do cabeçalho.
ip6 proto protocol
Verdadeiro se o pacote for um pacote IPv6 com protocolo de tipo protocol.
Observe que esta primitiva não observa a regra de protocolo do cabeçalho.
ip6 protochain protocol
Verdadeiro se o pacote for um pacote IPv6, e conter um cabeçalho de protocolo com tipo pro-
tocol na regra de protocolo do cabeçalho.
Por exemplo:
ip6 protochain 6
combina com qualquer pacote IPv6 com o protocolo TCP definido na regra do cabeçalho que
especifica o protocolo.
O pacote pode conter, por exemplo, cabeçalho de autenticação, roteamento, hop-by-hop, tanto
IPv6 quanto TCP. O código BPF emitido por esta primitiva é complexo e não será otimizado pelo
23
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
otimizador BPF do tcpdump, porque isto ficaria muito lento.
ip protochain protocol
Equivalente ao ip6 protochain protocol, porém este é válido para IPv4.
ether broadcast
Verdadeiro se o pacote for um pacote ethernet de broadcast. A diretiva ether é opcional.
ip broadcast
Verdadeiro se o pacote for um pacote de broadcast IP. Isso irá checar tanto por tudo-zero quanto
tudo-um como convenção para broadcast, e olhará para a máscara de subrede local
4.6 ether multicast
Verdadeiro se o pacote for um pacote ethernet de multicast. A diretiva ether é opcional.
Isto é uma abreviação de `‘ether[0] & 1 != 0”.
ip multicast
Verdadeiro se o pacote for um pacote IP multicast.
ip6 multicast
Verdadeiro se o pacote for um pacote IPv6 multicast.
ether proto protocol
Verdadeiro se o pacote for um pacote ethernet com tipo protocol.
Protocol pode ser um número ou um dos seguintes nomes:
ip, ip6, arp, rarp, atalk, aarp, dec-net, sca, lat, mopdl, moprc, ou iso.
Observe que estes identificadores também são diretivas que podem ser passados via backs-
lash (l).
No caso do FDDI (ex: ``fddi protocol arp”), a identificação do protocolo vêm do cabeçalho 802.2
Logical Link Control (LLC), e isto poderá usualmente estar no topo da camada do cabeçalho FDDI.
O tcpdump assumirá, enquanto filtra o identificador de protocolo, que todos os pacotes FDDI
incluem um cabeçalho LLC e que este cabeçalho estará no formato SNAP. O mesmo se aplica ao
Token Ring.
24
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
decnet src host
Verdadeiro se o endereço de origem DECNET for host, isto poderá ser um endereço na forma
``10.123”, ou um nome de host DECNET.
O suporte a nomes de host DECNET só está disponível em sistemas Ultrix configurados para
rodar DECNET.
decnet dst host
Verdadeiro se o endereço de destino DECNET for host.
decnet host host
Verdadeiro se o endereço de destino ou de origem DECNET for host.
ip, ip6, arp, rarp, atalk, aarp, decnet, iso
Abreviações para:
ether proto p
onde p é um dos protocolos mencionados anteriormente.
lat, moprc, mopdl
Abreviações para:
ether proto p
onde p é um dos protocolos mencionados anteriormente.
Perceba que o tcpdump atualmente não possui "know how"para estes protocolos.
vlan [vlan_id]
Verdadeiro se o pacote for um pacote VLAN IEEE 802.1Q Se [vlan_id] for especificado, somente
será verdadeiro o pacote que obedeça a especificação [vlan_id].
Observe que esta é a primeira diretiva vlan encontrada nas mudanças em expressão com off-
sets de decodificação para definir que este pacote é um pacote VLAN.
tcp, udp, icmp
Abreviações para:
ip proto p or ip6 proto p
25
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
onde p é um dos protocolos mencionados anteriormente.
iso proto protocol
Verdadeiro se o pacote for um pacote OSI com tipo de protocolo protocol. Protocol pode ser
um número ou um dos seguintes nomes: clnp, esis ou isis.
clnp, esis, isis
Abreviações para:
iso proto p
onde p é um dos protocolos mencionados anteriormente. Observe que o tcpdump faz um tra-
balho incompleto para selecionar estes protocolos.
expr relop expr
Verdadeiro se a relação holds, onde relop é um dos seguintes: >, <, >=, <=, =, !=, e expr é
uma expressão aritmética composta por uma constante inteira (expressa na syntax padrão da
linguagem C), os operadores binários normais, a saber: +, -, *, /, &, |, um operador de tamanho e
um pacote especial de dados acessórios.
Para acessar o interior dos dados de um pacote, use a seguinte syntax:
proto [ expr : size ]
Proto é um dos seguintes:
ether, fddi, tr, ip, arp, rarp, tcp, udp, icmp ou ip6, e indica a camada de protocolo para a ope-
ração de índice. Observe que tcp, udp e outros protocolos de camada mais alta, somente se
aplicam ao IPv4, não ao IPv6 (isso será corrigido no futuro).
O final do byte, relativo a camada indicada do protocolo, é passado em expr.
Size (tamanho) é opcional e indica o número de bytes no campo de interesse; este pode ser:
one, two ou four, sendo o padrão one.
O operador de tamanho, indicado pela diretiva len, informa o tamanho do pacote.
Por exemplo:
``ether[0] & 1 != 0”
Captura todo o tráfego multicast.
A expressão:
26
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
``ip[0] & 0xf != 5”
Captura todos os pacotes IP com opções.
A expressão:
``ip[6:2] & 0x1fff = 0”
Captura somente datagramas não fragmentados e fragmentos zero dos datagramas fragmen-
tados.
Esta checagem pode ser expecificamente aplicada para operações de índice em tcp e udp.
Então, tcp[0] sempre menciona o primeiro byte do cabeçalho TCP, e nunca o primeiro byte de
um fragmento.
Diretivas podem ser combinadas usando-se:
Diretivas e operadores entre parênteses (parênteses são especiais para o Shell e serão inter-
pretados).
Negação: (`!’ ou `not’).
Concatenação (e): (`&&’ ou `and’).
Alternação (ou): (`||’ ou `or’).
Negação deve ser precedida. Alternação e concatenação necessitam de precedência e asso-
ciam esquerda com direita.
Se um identificador for passado sem uma diretiva, a mais recente diretiva será assumida.
Por exemplo:
not host vs and ace
será igual à:
not host vs and host ace
mas não pode ser confundido com:
not ( host vs or ace )
Argumentos de expressão podem ser passados ao tcpdump como um simples argumento, ou
como múltiplos argumentos.
Geralmente, se a expressão contiver metacaracteres de SHELL, será mais fácil passar como
27
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
um simples argumento entre aspas.
Múltiplos argumentos são concatenados com espaços antes de serem analizados.
EXEMPLOS
Para imprimir todos os pacotes vindos de ou para o departamento sundown tcpdump host sun-
down
Para imprimir o tráfego entre helios e hot ou ace:
tcpdump host helios and ( hot or ace )
Para imprimir todos os pacotes IP entre ace e qualquer host exceto helios:
tcpdump ip host ace and not helios
Para imprimir todo tráfego entre hosts locais e hosts em Berkeley:
tcpdump net ucb-ether
Para imprimir todo tráfego ftp para a internet através do gateway snup:
(Observe que a expressão está entre parênteses para prevenir que o shell interprete o que está
entre parênteses)
tcpdump ’gateway snup and (port ftp or ftp-data)’
Para imprimir o tráfego para redes fora da rede local (se você for gateway para outra rede, esta
regra pode não prever isto em sua rede local).
tcpdump ip and not net localnet
Para imprimir pacotes de início e final de conexões (SYN e FIN) TCP envolvendo hosts não-locais.
tcpdump ’tcp[13] & 3 != 0 and not src and dst net localnet’
Para imprimir pacotes IP maiores do que 576 bytes enviados através do gateway snup:
tcpdump ’gateway snup and ip[2:2] > 576’
Para imprimir pacotes de broadcast ou multicast IP que não estão sendo enviados via broad-
cast ou multicat ethernet
tcpdump ’ether[0] & 1 = 0 and ip[16] >= 224’
Para imprimir todos os pacotes ICMP que não sejam echo request/reply
28
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
(não sejam ping’s)
tcpdump ’icmp[0] != 8 and icmp[0] != 0’
SEE ALSO
traffic(1C), nit(4P), bpf(4), pcap(3)
AUTHORS
The original authors are:
Van Jacobson, Craig Leres and Steven McCanne, all of the Lawrence Berkeley National Labo-
ratory, University of Cali- fornia, Berkeley, CA.
It is currently being maintained by tcpdump.org.
The current version is available via http:
http://www.tcpdump.org/
The original distribution is available via anonymous ftp:
ftp://ftp.ee.lbl.gov/tcpdump.tar.Z
IPv6/IPsec support is added by WIDE/KAME project. This program uses Eric Young’s SSLeay
library, under specific configuration.
http://www.tcpdump.org/
The original distribution is available via anonymous ftp:
ftp://ftp.ee.lbl.gov/tcpdump.tar.Z
IPv6/IPsec support is added by WIDE/KAME project. This program uses Eric Young’s SSLeay
library, under specific configuration.
29
Capítulo 5
Nagios
5.1 O que é o Nagios?
Nagios(http://www.nagios.org/), antigamente conhecido como NetSaint é um aplicativo de mo-
nitoramento de sistemas e redes. O programa checa periodicamente o status de um serviço ou
cliente alertando aos reponsáveis em caso de falhas. O status de cada cliente e serviço da rede
pode ser consultado via interface web.
Quando algum tipo de problema é encontrado, o servidor pode mandar notificações para o ad-
ministrador de diferentes maneiras: e-email, SMS, etc. O interessante é que o acompanhamento
do que está sendo monitorado pode ser visto online através de um browser. Ou seja, o Nagios é
portável para Web. Este documento, por enquanto, apenas faz referência à esta ferramenta, não
tratando de sua implementação. Maiores informações a respeito do Nagios favor consultar o site
http://www.nagios.org/docs
5.2 Como Nagios Monitora as Máquinas?
Todo monitoramento é feito através de plugins. Plugins são programas usados sob demanda.
Trata-se de executáveis, compilados ou scripts (Perl, shell, etc.), que podem ser executados atra-
vés da linha de comando para checar o status de um cliente ou seu serviço. Sem os plugins, o
Nagios não tem utilidade.
5.3 O que o Nagios pode fazer?
• Checa se o servidor esta ativo e rodando
• Verifica se um serviço está rodando (email, pager, SMS)
• Verifica se um processo está rodando (mail, http, pop, ssh)
• Coleta estatísticas de performance em um servidor
• Permite que alertas específicos sejam encaminhados para grupos ou indivíduos em parti-
cular
• Reporta o tempo em que seus servidores ficaram parados
30
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
5.4 Porque utilizar o Nagios?
O Nagios é uma excelente escolha se você deseja algum tipo de monitoramento. Suas princi-
pais características são:
• Open Source
• Robusto e Confiável
• Altamente configurável
• Fácil de extender
• Desenvolvimento ativo
• Comunidade ativa
• O Nagios roda em diversos sistemas operacionais
O Nagios pode ser utilizado para monitorar muitas coisas. Aqui estão algumas delas:
• Dar um ping para ver se o host(destino) é alcançável
• Serviços como DHCP, DNS, FTP, SSH, Telnet, HTTP, NTP, POP3, IMAP, SMTP etc.
• Banco de Dados como MySQL, Postgres, Oracle, SQL Server etc.
• Informações a nível de aplicação (Apache, Postfix, LDAP, Citrix etc.)
5.5 Considerações finais sobre o Nagios
É importante que se tenha em mente:
• O Nagios não irá funcionar sem os plugins.
• O Nagios não irá funcionar se o Apache não estiver configurado corretamente.
• Verifique as permissões dos arquivos antes de ficar desesperado.
• Preste atenção na localização dos arquivos.
• Tenha certeza que configurou tudo antes de iniciar o programa.
Maiores informações podem ser obtidas em: http://www.nagios.org.
31
Capítulo 6
MRTG
6.1 MRTG - Multi-router traffic grapher
O MRTG é uma ferramenta para monitorar o tráfego utilizado em sua rede/link. O MRTG gera
páginas HTML que contêm imagens GIF, tais imagens apresentam uma representação visual
desse tráfego através de gráficos. Veja um exemplo:
Veremos mais exemplos mais a frente.
O MRTG é desenvolvido em Perl e C e programado para funcionar sob sistemas UNIX e
Windows, e é em código livre sob a licença Gnu GPL.
O MRTG utiliza o SNMP para a coleta dos dados para a construção do gráfico, porém é
possível utilizar scripts externos para fazer tal coleta.
6.2 Características gerais
Portabilidade O MRTG funciona na maioria das plataformas UNIX e Windows NT.
Perl O MRTG é escrito em Perl e vem com todo o código fonte disponível.
Portabilidade SNMP O MRTG usa uma implementação totalmente portável de SNMP escrita
toda em Perl (graças a Simon Leinen). Não há necessidade de instalar qualquer pacote
externo SNMP(cliente).
Suporte SNMPv2c MRTG suporta contadores 64bit do SNMPv2c.
Identificação confiável de interfaces Interfaces de roteadores podem ser identificadas pelo en-
dereço IP, descrição e endereço ethernet além do número padrão de interface.
32
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
Arquivos Log de tamanho fixo Os arquivos de log do MRTG NÃO crescem de tamanho graças
ao uso de um algoritmo único de consolidação de dados.
Configuração automática O MRTG vem com um kit de ferramentas próprias para sua configu-
ração, tornando-a bem simples.
Performance Rotinas com tempo crítico são implementadas em C, para maior performance.(Graças
a iniciativa de Dave Rand)
Gráficos em PNG Gráficos são gerados diretamente para o formato PNG usando a biblioteca
GD de Thomas Boutell.
Customização A aparência das páginas HTML produzidas pelo MRTG são altamente configurá-
veis.
RRDtool MRTG possui suporte interno para o uso da ferramenta RRDtool.
6.3 História
O MRTG surge após uma necessidade e curiosidade de conhecer a performance de uma linha
de 64kbit, onde Tobias Oetiker trabalhava em 1994. Oetiker, então, criou um pequeno programa
que atualizava um gráfico na internet onde era mostrado a carga no link de Internet. Eventu-
almente, o programa se desenvolveu em um script Perl razoavelmente customizável chamado
MRTG-1.0, que foi lançado em 1995. A partir daí Oetiker deixou o MRTG de lado por falta de
tempo. Em Janeiro de 1996, Oetiker recebe um email de Dave Rand, perguntando sobre o MRTG
e seu desenvolvimento demorado. Oetiker sabia que a programação do MRTG não era muito
eficiente e estava escrito toda em Perl. Depois de mais ou menos uma semana, Rand escreveu
a Oetiker novamente dizendo que havia feito uma tentativa de aprimorar a velocidade do MRTG.
Rand havia decidido reescrever partes críticas do programa na linguagem C. O código fora man-
dado a Oetiker pelo email. A nova implementação provia aumento de velocidade do MRTG em
até 40 vezes! Isto fez com que Oetiker recomeçasse a trabalhar com o MRTG nas horas vagas
para desenvolver o MRTG-2.
Após o desenvolvimento do MRTG-2, cópias beta foram distribuídas a interessados. Com
isso o projeto recebeu inúmeros patches, vários bug fixes e feedback dos usuários. O produto
disponível hoje não estaria em tal estado se não fosse a grande contribuição e suporte de sua
comunidade de usuários.
6.3.1 Leia mais
Aprenda mais sobre o MRTG na página oficial: http://oss.oetiker.ch/mrtg Para mais exemplos
de gráficos do MRTG, visite: http://www.stat.ee.ethz.ch/mrtg/
6.3.2 Autor
Tobias Oetiker <oetiker@ee.ethz.ch> e vários contribuintes
33
Capítulo 7
Cacti
Para gerenciar processos e recursos do seu computador utilizando a ferramenta Cacti, inicia-
remos com as definições de alguns conceitos importantes sobre os quais falaremos durante esse
curso. São eles:
RRDtool:
RRD é a abreviação de Round Robin Database, sistema cujo objetivo é armazenar e monito-
rar dados em série obtidos durante um período de tempo pré-determinado. Esses dados obtidos
são denominados dados circulares, pois seu tamanho ocupado em disco não aumenta com o
decorrer do tempo e nem com a quantidade de dados já armazenados. Entretanto, o RRDTOOL
não é capaz de gerar páginas html ou produzir gráficos, fato que torna necessário a sua comum
utilização associada a um front-end.
SNMP:
O SNMP (Simple Network Management Protocol) é um protocolo de gerência definido a ní-
vel de aplicação, é utilizado para obter informações de servidores SNMP. Foi desenvolvido para
gerenciar, monitorar e controlar configurações, performance, falhas, estatísticas e segurança da
rede. Sendo um padrão para gerenciamento de LANs, particularmente para aplicações de missão
crítica. O gerenciamento da rede através do SNMP permite o acompanhamento simples e fácil
do estado, em tempo real, da rede, podendo ser utilizado para gerenciar diferentes tipos de sis-
temas. O SNMP é um protocolo inicialmente desenvolvido para ser uma alternativa ao protocolo
CMIP (mais completo, porém não foi bem recebido no mercado devido a sua alta complexidade).
O SNMP, por ser mais simples e dar a conta do recado, acabou virando padrão de mercado e
hoje já está na versão SNMP V3. Veremos mais à frente esse protocolo mais detalhadamente.
Cacti:
O Cacti é uma ferramenta gráfica de gerenciamento de dados de rede desenvolvido para ser
utilizado por administradores de rede com uma não muito rica experiência na área, enquanto
por outro lado, disponibiliza recursos bem poderosos para serem utilizados em redes bastante
complexas. O Cacti é um front-end para o RRDTOOL desenvolvido na linguagem PHP, possui
uma interface web e armazena todos os seus dados em um banco de dados MySql. Utilizando
essa ferramenta, é possível fazer o polling de hosts SNMP, criar gráficos e gerenciar o acesso de
usuários a toda a informação já coletada.
Esta ferramenta disponibiliza a seus usuários uma interface intuitiva e bem agradável de se usar,
sendo acessível a qualquer tipo de usuários, desde inexperientes até usuários com uma grande
experiência. Com o Cacti, é possível fazer o controle de acesso por nível de usuário, ou seja,
podemos configurar o acesso a certas informações apenas por determinados usuários. Além
34
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
disso, o fato do usuário desejar adicionar algum novo equipamento para ser monitorado não é
uma tarefa complicada como em outras ferramentas(por exemplo o MRTG), bastando para isso
alguns poucos minutos.
O monitoramento de redes usando o Cacti é bastante fácil e agradável, e o objetivo deste curso
é ensinar o usuário a instalar e configurar essa ferramenta de grande usabilidade no mundo tec-
nológico atual. E o melhor, é um programa LIVRE, ou seja, disponibilizado para qualquer um
baixá-lo e instalá-lo em seu computador.
35
Capítulo 8
Arquivos de log
8.1 Follow
O Follow é um pequeno aplicativo Java que permite monitorar vários arquivos de Log simul-
taneamente através de uma interface gráfica. Para os desenvolvedores em plataforma Windows
uma verdadeira mão na roda. Os principais recursos são:
• Monitorar ("follow") arquivos de texto e apresentar as informações atualizadas destes arqui-
vos. - Limpar o conteúdo apresentado de um ou todos os arquivos abertos;
• Apagar fisicamente o conteúdo de um ou de todos os arquivos abertos;
• Permite algumas configurações de Interface e tempo de atualização do arquivo;
• Os arquivos podem ser abertos sendo arrastados para a interface gráfica (Usando drag-
and-drop);
• Os arquivos abertos com o Follow podem ser abertos automaticamente da próxima vez em
que ele for executado.
Follow é um projeto Open Source, distribuído sob a licença GNU GPL, e pode ser encontrado
em http://follow.sourceforge.net
8.2 Arquivos e daemons de Log
A atividade dos programas são registradas em arquivos localizados em /var/log . Estes ar-
quivos de registros são chamados de logs e contém a data, hora e a mensagem emitida pelo
programa (violações do sistema, mensagens de erro, alerta e outros eventos) entre outros cam-
pos. Enfim, muitos detalhes úteis ao administrador tanto para acompanhar o funcionamento do
seu sistema, comportamento dos programas ou ajudar na solução e prevenção de problemas.
Alguns programas como o Apache, exim, ircd e squid criam diversos arquivos de log e por
este motivo estes são organizados em sub-diretórios (a mesma técnica é usada nos arquivos de
configuração em /etc, conforme a padrão FHS atual).
36
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
8.3 Formato do arquivo de log
Um arquivo de log é normalmente composto pelos seguintes campos:
Data|Hora|Máquina|daemon|mensagem
O campo máquina é o nome do computador que registrou a mensagem (a máquina pode atuar
como um servidor de logs registrando mensagens de diversos computadores em sua rede). O
campo daemon indica qual programa gravou a mensagem.
O uso dos utilitários do console pode ajudar muito na pesquisa e monitoração dos logs, por
exemplo, para obter todas as mensagens do daemon kernel da estação de trabalho wrk1, elimi-
nando os campos "wrk1"e "kernel":
cat /var/log/*|grep ’wrk1’|grep ’kernel’|awk ’print $1 $2 $3 $6 $7 $8 $9 $10 $11 $12’
Os parâmetros "$1", "$2"do comando awk indica que campos serão listados, (omitimos $4
e $5 que são respectivamente "wrk1"e "kernel"). Um bom utilitário para monitoração de logs,
logcheck, será citado mais à frente Daemons de log do sistema
Os daemons de log do sistema registram as mensagens de saída do kernel (klogd) e sistema
(syslogd) nos arquivos em /var/log .
A classificação de qual arquivo em /var/log receberá qual tipo de mensagem é controlado pelo
arquivo de configuração /etc/syslog.conf através de facilidades e níveis
8.4 syslogd
Este daemon controla o registro de logs do sistema.
syslogd [opções]
opções
-f Especifica um arquivo de configuração alternativo ao /etc/syslog.conf.
-h Permite redirecionar mensagens recebidas a outros servidores de logs especificados.
-l (computadores) Especifica um ou mais computadores (separados por ":") que deverão ser
registrados somente com o nome de máquina ao invés do FQDN (nome completo, incluindo
domínio).
-m (minutos) Intervalo em minutos que o syslog mostrará a mensagem –MARK–. O valor padrão
padrão é 20 minutos, 0 desativa.
-n Evita que o processo caia automaticamente em background. Necessário principalmente se o
syslogd for controlado pelo init.
-p (soquete) Especifica um soquete UNIX alternativo ao invés de usar o padrão /dev/log.
-r Permite o recebimento de mensagens através da rede através da porta UDP 514. Esta opção
é útil para criar um servidor de logs centralizado na rede. Por padrão, o servidor syslog
rejeitará conexões externas.
-a (soquetes) Especifica soquetes adicionais que serão monitorados. Esta opção será necessá-
ria se estiver usando um ambiente chroot. É possível usar até 19 soquetes adicionais
-d Ativa o modo de depuração do syslog. O syslog permanecerá operando em primeiro plano e
mostrará as mensagens no terminal atual.
Na distribuição Debian, o daemon syslogd é iniciado através do script /etc/init.d/sysklogd.
37
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
8.5 Arquivo de configuração syslog.conf
O arquivo de configuração /etc/syslog.conf possui o seguinte formato:
facilidade.nível destino
A facilidade e nível são separadas por um "."e contém parâmetros que definem o que será
registrado nos arquivos de log do sistema:
• facilidade - É usada para especificar que tipo de programa está enviando a mensagem. Os
seguintes níveis são permitidos (em ordem alfabética):
– auth - Mensagens de segurança/autorização (é recomendável usar authpriv ao invés
deste).
– authpriv - Mensagens de segurança/autorização (privativas).
– cron - Daemons de agendamento (cron e at).
– daemon - Outros daemons do sistema que não possuem facilidades específicas.
– ftp - Daemon de ftp do sistema.
– kern - Mensagens do kernel.
– lpr - Subsistema de impressão.
– local0 a local7 - Reservados para uso local.
– mail - Subsistema de e-mail.
– news - Subsistema de notícias da USENET.
– security - Sinônimo para a facilidade auth (evite usa-la).
– syslog - Mensagens internas geradas pelo syslogd.
– user - Mensagens genéricas de nível do usuário.
– uucp - Subsistema de UUCP.
– * - Confere com todas as facilidades.
Mais de uma facilidade pode ser especificada na mesma linha do syslog.conf separando-as
com ",".
• nível - Especifica a importância da mensagem. Os seguintes níveis são permitidos (em
ordem de importância invertida; da mais para a menos importante):
– emerg - O sistema está inutilizável.
– alert - Uma ação deve ser tomada imediatamente para resolver o problema.
– crit - Condições críticas.
– err - Condições de erro.
– warning - Condições de alerta.
– notice - Condição normal, mas significante.
– info - Mensagens informativas.
– debug - Mensagens de depuração.
– * - Confere com todos os níveis.
– none - Nenhuma prioridade.
38
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
Além destes níveis os seguintes sinônimos estão disponíveis:
– error - Sinônimo para o nível err.
– panic - Sinônimo para o nível emerg.
– warn - Sinônimo para o nível warning.
• destino - O destino das mensagens pode ser um arquivo, um pipe (se iniciado por um -
"), um computador remoto (se iniciado por uma "@"), determinados usuários do sistema
(especificando os logins separados por vírgula) ou para todos os usuários logados via wall
(usando "*").
Todas as mensagens com o nível especificado e superiores a esta especificadas no syslog.conf
serão registradas, de acordo com as opções usadas. Conjuntos de facilidades e níveis podem
ser agrupadas separando-as por ";".
OBS1: Sempre use TABS ao invés de espaços para separar os parâmetros do syslog.conf.
OBS2: Algumas facilidades como security, emitem um beep de alerta no sistema e enviam
uma mensagem para o console, como forma de alerta ao administrador e usuários logados no
sistema.
Existem ainda 4 caracteres que garantes funções especiais: "*", "=", "!"e -":
• "*- Todas as mensagens da facilidade especificada serão redirecionadas.
• "=- Somente o nível especificado será registrado.
• "!- Todos os níveis especificados e maiores NÃO serão registrados.
• -- Pode ser usado para desativar o sync imediato do arquivo após sua gravação.
•
•
Os caracteres especiais "="e "!"podem ser combinados em uma mesma regra.
Exemplo: Veja abaixo um exemplo de um arquivo /etc/syslog.conf padrão de sistemas Debian
#
# Primeiro alguns arquivos de log padrões. Registrados por facilidade
#
auth,authpriv.* /var/log/auth.log
*.*;auth,authpriv.none -/var/log/syslog
cron.* /var/log/cron.log
daemon.* -/var/log/daemon.log
kern.* -/var/log/kern.log
lpr.* -/var/log/lpr.log
mail.* /var/log/mail.log
user.* -/var/log/user.log
uucp.* -/var/log/uucp.log
#
# Registro de logs do sistema de mensagens. Divididos para facilitar
39
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
# a criação de scripts para manipular estes arquivos.
#
mail.info -/var/log/mail.info
mail.warn -/var/log/mail.warn
mail.err /var/log/mail.err
# Registro para o sistema de news INN
#
news.crit /var/log/news/news.crit
news.err /var/log/news/news.err
news.notice -/var/log/news/news.notice
#
# Alguns arquivos de registro "pega-tudo".
# São usadas ","para especificar mais de uma prioridade (por
# exemplo, "auth,authpriv.none") e ";"para especificar mais de uma
# facilidade.nível que será gravada naquele arquivo.
# Isto permite deixar as regras consideravelmente menores e mais legíveis
#
*.=debug;
auth,authpriv.none;
news.none;mail.none -/var/log/debug
*.=info;*.=notice;*.=warn;
auth,authpriv.none;
cron,daemon.none;
mail,news.none -/var/log/messages
#
# Emergências são enviadas para qualquer um que estiver logado no sistema. Isto
# é feito através da especificação do "*"como destino das mensagens e são
# enviadas através do comando wall.
#
*.emerg *
#
# Eu gosto de ter mensagens mostradas no console, mas somente em consoles que
# não utilizo.
#
#daemon,mail.*;
# news.=crit;news.=err;news.=notice;
# *.=debug;*.=info;
# *.=notice;*.=warn /dev/tty8
# O pipe /dev/xconsole é usado pelo utilitário "xconsole". Para usa-lo,
# você deve executar o "xconsole"com a opção -file":
#
# $ xconsole -file /dev/xconsole [...]
#
40
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
# NOTA: ajuste as regras abaixo, ou ficará maluco se tiver um um site
# muito movimentado...
#
daemon.*;mail.*;
news.crit;news.err;news.notice;
*.=debug;*.=info;
*.=notice;*.=warn |/dev/xconsole
# A linha baixo envia mensagens importantes para o console em que
# estamos trabalhando logados (principalmente para quem gosta de ter
# controle total sobre o que está acontecendo com seu sistema).
*.err;kern.debug;auth.notice;mail.crit /dev/console
#- -Fim de Arquivo- -
8.6 klogd
Este daemon controla o registro de mensagens do kernel. Ele monitora as mensagens do
kernel e as envia para o daemon de monitoramento syslogd, por padrão.
klogd [opções]
8.6.1 opções
-d Ativa o modo de depuração do daemon
-f (arquivo) Envia as mensagens do kernel para o arquivo especificado ao invés de enviar ao
daemon do syslog
-i Envia um sinal para o daemon recarregar os símbolos de módulos do kernel.
-I Envia um sinal para o daemon recarregar os símbolos estáticos e de módulos do kernel.
-n Evita a operação em segundo plano. Útil se iniciado pelo init
-k (arquivo) Especifica o arquivo que contém os símbolos do kernel. Exemplos deste arquivo
estão localizados em /boot/System.map-xx.xx.xx.
-o Faz com que o daemon leia e registre todas as mensagens encontradas nos buffers do kernel,
após isto o daemon é encerrado.
-p Ativa o modo paranóia. Isto fará o klogd somente carregar detalhes sobre os módulos quando
os caracteres Oops forem detectados nas mensagens do kernel. É recomendável ter sem-
pre a última versão do klogd e evitar a utilização desta opção em ambientes críticos.
-s Força a utilização da interface de chamadas do sistema para comunicação com o kernel.
-x Esconde tradução EIP, assim ele não lê o arquivo /boot/System.map-xx-xx-xx.
A especificação de um arquivo com a opção -k é necessária se desejar que sejam mostradas
a tabela de símbolos ao invés de endereços numéricos do kernel. logger
Este comando permite enviar uma mensagem nos log do sistema. A mensagem é enviada
aos logs via daemon syslogd ou via soquete do sistema, é possível especificar a prioridade, nível,
41
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
um nome identificando o processo, etc. Seu uso é muito útil em shell scripts ou em outros eventos
do sistema.
logger [opções] [mensagem]
Onde:
mensagem Mensagem que será enviada ao daemon syslog
opções -i Registra o PID do processo
-s Envia a mensagem ambos para a saída padrão (STDOUT) e syslog.
-f (arquivo) Envia o conteúdo do arquivo especificado como mensagem ao syslog.
-t (nome) Especifica o nome do processo responsável pelo log que será exibido antes do
PID na mensagem do syslog.
-p (prioridade) Especifica a prioridade da mensagem do syslog, especificada como facili-
dade.nível. Veja os tipos de prioridade/níveis em syslog.conf. O valor padrão priori-
dade.nível é user.notice
-u (soquete) Envia a mensagem para o [soquete] especificado ao invés do syslog
Mais detalhes sobre o funcionamento sobre o daemon de log do sistema syslogd, pode ser
encontrado em syslogd,
Exemplos: logger -i -t focalinux Teste teste teste, logger -i -f /tmp/mensagem -p security.emerg
8.7 Programas úteis para monitoração e gerenciamento de arquivos
de logs
8.7.1 logcheck
É um programa usado para enviar um e-mail periodicamente ao administrador do sistema
(através do cron ou outro daemon com a mesma função) alertando sobre os eventos que ocorre-
ram desde a última execução do programa. As mensagens do logcheck são tratadas por arquivos
em /etc/logcheck e organizadas em categorias antes de ser enviada por e-mail, isto garante muita
praticidade na interpretação dos eventos ocorridos no sistema.
As categorias são organizadas da mais importantes para a menos importante, e vão desde
"Hacking em andamento"(providências devem ser tomadas imediatamente para resolver a situa-
ção) até "eventos anormais do sistema"(mensagens de inicialização, mensagens dos daemons
do sistema, etc.).
O tipo de mensagem que será incluída/ignorada nos logs enviados podem ser personalizadas
pelo administrador do sistema através dos arquivos/diretórios dentro de /etc/logcheck. Nomes de
arquivos/diretórios contendo a palavra "ignore"são usados para armazenar expressões regulares
que NÃO serão enviadas pelo logcheck. É permitido o uso de expressões regulares perl/sed para
especificar as mensagens nos arquivos de log. logrotate
Usado para fazer backups dos logs atuais do sistema (programado via cron, ou outro daemon
com a mesma função) e criando novos arquivos de logs que serão usados pelo sistema. Opcio-
nalmente os arquivos de logs antigos serão compactados para diminuir a utilização de espaço em
disco ou enviados por e-mail ao administrador. A rotação dos arquivos de logs proporciona maior
agilidade quando precisamos encontrar algum detalhe útil (que seria mais difícil de se achar em
um arquivo de log de 10MB ou maior).
42
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
A rotação de logs é feita de acordo com o tamanho do arquivo de logs especificado, mas a
opção -f pode ser usada para "forçar"a rotação de logs. A opção -d fornece mais detalhes sobre
o que o logrotate está fazendo. Seu arquivo principal de configuração é o /etc/logrotate.conf. Um
modelo deste tipo de arquivo é o seguinte:
#### Estas opções afetam globalmente o funcionamento do logrotate
# roda os arquivos de log semanalmente
weekly
# mantém as últimas 4 cópias de logs anteriores
rotate 4
# Erros de não existência dos logs são enviados para o usuário root
mail root
# Cria novos arquivos de log (vazios) após rodar os antigos
create
# Descomente isso se desejar seus arquivos de logs compactados. O parâmetro
# delaycompress é usado para que o primeiro log rodado seja mantido
# descompactado
compress
delaycompress
# Executam os scripts em prerotate e postrotate a cada vez que os logs
# forem rodados.
nosharedscripts
# Definimos um diretório que poderá conter definições individuais para
# diversos serviços no sistema, eles podem ir nest
43

Monitoramento

  • 1.
  • 2.
    Sumário I Sobre essaApostila 2 II Informações Básicas 4 III Monitoramento 9 1 O que é? 10 2 Plano de ensino 11 2.1 Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.2 Público Alvo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.3 Pré-requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.4 Descrição . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.5 Metodologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.6 Cronograma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.7 Programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.8 Avaliação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.9 Bibliografia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3 Introdução 14 3.1 Porque monitorar? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 3.2 Onde monitorar? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 4 TCPDUMP 15 4.1 NOME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 4.2 SINOPSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 4.3 DESCRIÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 4.4 OPÇÕES: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 4.5 expressão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 4.6 ether multicast . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 5 Nagios 29 5.1 O que é o Nagios? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 5.2 Como Nagios Monitora as Máquinas? . . . . . . . . . . . . . . . . . . . . . . . . . . 29 5.3 O que o Nagios pode fazer? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 5.4 Porque utilizar o Nagios? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 5.5 Considerações finais sobre o Nagios . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 1
  • 3.
    CDTC Centro deDifusão de Tecnologia e Conhecimento Brasil/DF 6 MRTG 31 6.1 MRTG - Multi-router traffic grapher . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 6.2 Características gerais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 6.3 História . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 6.3.1 Leia mais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 6.3.2 Autor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 7 Cacti 33 8 Arquivos de log 35 8.1 Follow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 8.2 Arquivos e daemons de Log . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 8.3 Formato do arquivo de log . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 8.4 syslogd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 8.5 Arquivo de configuração syslog.conf . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 8.6 klogd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 8.6.1 opções . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 8.7 Programas úteis para monitoração e gerenciamento de arquivos de logs . . . . . . . 41 8.7.1 logcheck . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 2
  • 4.
  • 5.
    CDTC Centro deDifusão de Tecnologia e Conhecimento Brasil/DF Conteúdo O conteúdo dessa apostila é fruto da compilação de diversos materiais livres publicados na in- ternet, disponíveis em diversos sites ou originalmente produzido no CDTC em http://www.cdtc.org.br. O formato original deste material bem como sua atualização está disponível dentro da licença GNU Free Documentation License, cujo teor integral encontra-se aqui reproduzido na seção de mesmo nome, tendo inclusive uma versão traduzida (não oficial). A revisão e alteração vem sendo realizada pelo CDTC (suporte@cdtc.org.br) desde outubro de 2006. Críticas e sugestões construtivas são bem-vindas a qualquer tempo. Autores A autoria deste é de responsabilidade de André Marra G. Araujo (andremarra@cdtc.org.br) . O texto original faz parte do projeto Centro de Difusão de Tecnologia e Conhecimento, que vem sendo realizado pelo ITI (Instituto Nacional de Tecnologia da Informação) em conjunto com outros parceiros institucionais, atuando em conjunto com as universidades federais brasileiras que tem produzido e utilizado Software Livre, apoiando inclusive a comunidade Free Software junto a outras entidades no país. Informações adicionais podem ser obtidas através do email ouvidoria@cdtc.org.br, ou da home page da entidade, através da URL http://www.cdtc.org.br. Garantias O material contido nesta apostila é isento de garantias e o seu uso é de inteira responsabi- lidade do usuário/leitor. Os autores, bem como o ITI e seus parceiros, não se responsabilizam direta ou indiretamente por qualquer prejuízo oriundo da utilização do material aqui contido. Licença Copyright ©2006, Instituto Nacional de Tecnologia da Informação (cdtc@iti.gov.br) . Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the Invariant Chapter being SOBRE ESSA APOS- TILA. A copy of the license is included in the section entitled GNU Free Documentation License. 4
  • 6.
  • 7.
    CDTC Centro deDifusão de Tecnologia e Conhecimento Brasil/DF Sobre o CDTC Objetivo Geral O Projeto CDTC visa a promoção e o desenvolvimento de ações que incentivem a dissemina- ção de soluções que utilizem padrões abertos e não proprietários de tecnologia, em proveito do desenvolvimento social, cultural, político, tecnológico e econômico da sociedade brasileira. Objetivo Específico Auxiliar o Governo Federal na implantação do plano nacional de software não-proprietário e de código fonte aberto, identificando e mobilizando grupos de formadores de opinião dentre os servidores públicos e agentes políticos da União Federal, estimulando e incentivando o mercado nacional a adotar novos modelos de negócio da tecnologia da informação e de novos negócios de comunicação com base em software não-proprietário e de código fonte aberto, oferecendo treinamento específico para técnicos, profissionais de suporte e funcionários públicos usuários, criando grupos de funcionários públicos que irão treinar outros funcionários públicos e atuar como incentivadores e defensores de produtos de software não proprietários e código fonte aberto, ofe- recendo conteúdo técnico on-line para serviços de suporte, ferramentas para desenvolvimento de produtos de software não proprietários e de seu código fonte livre, articulando redes de terceiros (dentro e fora do governo) fornecedoras de educação, pesquisa, desenvolvimento e teste de pro- dutos de software livre. Guia do aluno Neste guia, você terá reunidas uma série de informações importantes para que você comece seu curso. São elas: • Licenças para cópia de material disponível • Os 10 mandamentos do aluno de Educação a Distância • Como participar dos foruns e da wikipédia • Primeiros passos É muito importante que você entre em contato com TODAS estas informações, seguindo o roteiro acima. Licença Copyright ©2006, Instituto Nacional de Tecnologia da Informação (cdtc@iti.gov.br). 6
  • 8.
    CDTC Centro deDifusão de Tecnologia e Conhecimento Brasil/DF É dada permissão para copiar, distribuir e/ou modificar este documento sob os termos da Licença de Documentação Livre GNU, Versão 1.1 ou qualquer versão posterior públicada pela Free Software Foundation; com o Capitulo Invariante SOBRE ESSA APOSTILA. Uma cópia da licença está inclusa na seção entitulada "Licença de Docu- mentação Livre GNU". Os 10 mandamentos do aluno de educação online • 1. Acesso à Internet: ter endereço eletrônico, um provedor e um equipamento adequado é pré-requisito para a participação nos cursos a distância. • 2. Habilidade e disposição para operar programas: ter conhecimentos básicos de Informá- tica é necessário para poder executar as tarefas. • 3. Vontade para aprender colaborativamente: interagir, ser participativo no ensino a distân- cia conta muitos pontos, pois irá colaborar para o processo ensino-aprendizagem pessoal, dos colegas e dos professores. • 4. Comportamentos compatíveis com a etiqueta: mostrar-se interessado em conhecer seus colegas de turma respeitando-os e fazendo ser respeitado pelo mesmo. • 5. Organização pessoal: planejar e organizar tudo é fundamental para facilitar a sua revisão e a sua recuperação de materiais. • 6. Vontade para realizar as atividades no tempo correto: anotar todas as suas obrigações e realizá-las em tempo real. • 7. Curiosidade e abertura para inovações: aceitar novas idéias e inovar sempre. • 8. Flexibilidade e adaptação: requisitos necessário à mudança tecnológica, aprendizagens e descobertas. • 9. Objetividade em sua comunicação: comunicar-se de forma clara, breve e transparente é ponto - chave na comunicação pela Internet. • 10. Responsabilidade: ser responsável por seu próprio aprendizado. O ambiente virtual não controla a sua dedicação, mas reflete os resultados do seu esforço e da sua colaboração. Como participar dos fóruns e Wikipédia Você tem um problema e precisa de ajuda? Podemos te ajudar de 2 formas: A primeira é o uso dos fóruns de notícias e de dúvidas gerais que se distinguem pelo uso: . O fórum de notícias tem por objetivo disponibilizar um meio de acesso rápido a informações que sejam pertinentes ao curso (avisos, notícias). As mensagens postadas nele são enviadas a 7
  • 9.
    CDTC Centro deDifusão de Tecnologia e Conhecimento Brasil/DF todos participantes. Assim, se o monitor ou algum outro participante tiver uma informação que interesse ao grupo, favor postá-la aqui. Porém, se o que você deseja é resolver alguma dúvida ou discutir algum tópico específico do curso. É recomendado que você faça uso do Forum de dúvidas gerais que lhe dá recursos mais efetivos para esta prática. . O fórum de dúvidas gerais tem por objetivo disponibilizar um meio fácil, rápido e interativo para solucionar suas dúvidas e trocar experiências. As mensagens postadas nele são enviadas a todos participantes do curso. Assim, fica muito mais fácil obter respostas, já que todos podem ajudar. Se você receber uma mensagem com algum tópico que saiba responder, não se preocupe com a formalização ou a gramática. Responda! E não se esqueça de que antes de abrir um novo tópico é recomendável ver se a sua pergunta já foi feita por outro participante. A segunda forma se dá pelas Wikis: . Uma wiki é uma página web que pode ser editada colaborativamente, ou seja, qualquer par- ticipante pode inserir, editar, apagar textos. As versões antigas vão sendo arquivadas e podem ser recuperadas a qualquer momento que um dos participantes o desejar. Assim, ela oferece um ótimo suporte a processos de aprendizagem colaborativa. A maior wiki na web é o site "Wikipé- dia", uma experiência grandiosa de construção de uma enciclopédia de forma colaborativa, por pessoas de todas as partes do mundo. Acesse-a em português pelos links: • Página principal da Wiki - http://pt.wikipedia.org/wiki/ Agradecemos antecipadamente a sua colaboração com a aprendizagem do grupo! Primeiros Passos Para uma melhor aprendizagem é recomendável que você siga os seguintes passos: • Ler o Plano de Ensino e entender a que seu curso se dispõe a ensinar; • Ler a Ambientação do Moodle para aprender a navegar neste ambiente e se utilizar das ferramentas básicas do mesmo; • Entrar nas lições seguindo a seqüência descrita no Plano de Ensino; • Qualquer dúvida, reporte ao Fórum de Dúvidas Gerais. Perfil do Tutor Segue-se uma descrição do tutor ideal, baseada no feedback de alunos e de tutores. O tutor ideal é um modelo de excelência: é consistente, justo e profissional nos respectivos valores e atitudes, incentiva mas é honesto, imparcial, amável, positivo, respeitador, aceita as idéias dos estudantes, é paciente, pessoal, tolerante, apreciativo, compreensivo e pronto a ajudar. 8
  • 10.
    CDTC Centro deDifusão de Tecnologia e Conhecimento Brasil/DF A classificação por um tutor desta natureza proporciona o melhor feedback possível, é crucial, e, para a maior parte dos alunos, constitui o ponto central do processo de aprendizagem.’ Este tutor ou instrutor: • fornece explicações claras acerca do que ele espera, e do estilo de classificação que irá utilizar; • gosta que lhe façam perguntas adicionais; • identifica as nossas falhas, mas corrige-as amavelmente’, diz um estudante, ’e explica por- que motivo a classificação foi ou não foi atribuída’; • tece comentários completos e construtivos, mas de forma agradável (em contraste com um reparo de um estudante: ’os comentários deixam-nos com uma sensação de crítica, de ameaça e de nervossismo’) • dá uma ajuda complementar para encorajar um estudante em dificuldade; • esclarece pontos que não foram entendidos, ou corretamente aprendidos anteriormente; • ajuda o estudante a alcançar os seus objetivos; • é flexível quando necessário; • mostra um interesse genuíno em motivar os alunos (mesmo os principiantes e, por isso, talvez numa fase menos interessante para o tutor); • escreve todas as correções de forma legível e com um nível de pormenorização adequado; • acima de tudo, devolve os trabalhos rapidamente; 9
  • 11.
  • 12.
    Capítulo 1 O queé? Hoje em dia, há muitas aplicações de monitoramento. Monitoramento de rede, local, aplicações que geram gráficos de disponibilidade, sniffers, geradores de relatórios, arquivos de log, monito- ramento de performance e etc. Estamos numa era em que uma informação é importante e, mais do que isso, cara e até sigilosa. Este curso visará mostrar algumas ferramentas e caminhos que ajudam no monitoramento de um PC ou uma rede. 11
  • 13.
    Capítulo 2 Plano deensino 2.1 Objetivo Qualificar usuários básicos a monitorar PC’s para a segurança dos seus dados. 2.2 Público Alvo Usuários finais, técnicos e trogramadores que desejam trabalhar com monitoramento em am- biente GNU/Linux 2.3 Pré-requisitos Os usuários deverão ser, necessariamente, funcionários públicos e ter conhecimentos básicos para operar um computador. 2.4 Descrição O curso de Monitoramento será realizado na modalidade EAD e utilizará a plataforma Moodle como ferramenta de aprendizagem. Ele é composto de um módulo de aprendizado que será dado na primeira semana e um módulo de avaliação que será dado na segunda semana. O material didático estará disponível on-line de acordo com as datas pré-estabelecidas no calendário. 2.5 Metodologia O curso está dividido da seguinte maneira: 2.6 Cronograma • Lição 1 - Introdução • Lição 2 - tcpdump 12
  • 14.
    CDTC Centro deDifusão de Tecnologia e Conhecimento Brasil/DF • Lição 3 - Nagios • Lição 4 - MRTG • Lição 5 - Cacti • Lição 6 - Arquivos de log • Avaliação de aprendizagem • Avaliação do curso As lições contém o contéudo principal. Elas poderão ser acessadas quantas vezes forem neces- sárias, desde que esteja dentro da semana programada. Ao final de uma lição, você receberá uma nota de acordo com o seu desempenho. Responda com atenção às perguntas de cada lição, pois elas serão consideradas na sua nota final. Caso sua nota numa determinada lição for menor do que 6.0, sugerimos que você faça novamente esta lição. Ao final do curso será disponibilizada a avaliação referente ao curso. Tanto as notas das lições quanto a da avaliação serão consideradas para a nota final. Todos os módulos ficarão visíveis para que possam ser consultados durante a avaliação final. Aconselhamos a leitura da "Ambientação do Moodle"para que você conheça a plataforma de En- sino a Distância, evitando dificuldades advindas do "desconhecimento"sobre a mesma. Os instrutores estarão a sua disposição ao longo de todo curso. Qualquer dúvida deverá ser enviada no fórum. Diariamente os monitores darão respostas e esclarecimentos. 2.7 Programa O curso de CVS oferecerá o seguinte conteúdo: • Introdução sobre o que monitorar • tcpdump • Nagios • MRTG • Cacti • Arquivos de log 2.8 Avaliação Toda a avaliação será feita on-line. Aspectos a serem considerados na avaliação: • Iniciativa e autonomia no processo de aprendizagem e de produção de conhecimento; • Capacidade de pesquisa e abordagem criativa na solução dos problemas apresentados. Instrumentos de avaliação: 13
  • 15.
    CDTC Centro deDifusão de Tecnologia e Conhecimento Brasil/DF • Participação ativa nas atividades programadas. • Avaliação ao final do curso. • O participante fará várias avaliações referente ao conteúdo do curso. Para a aprovação e obtenção do certificado o participante deverá obter nota final maior ou igual a 6.0 de acordo com a fórmula abaixo: • Nota Final = ((ML x 7) + (AF x 3)) / 10 = Média aritmética das lições • AF = Avaliações 2.9 Bibliografia Sites recomendados: • http://www.slackware-brasil.com.br/web_site/artigos/artigo_completo.php?aid=122 • http://listas.cipsga.org.br/pipermail/linux-sbo/2004-December/000403.html • http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=595 • http://focalinux.cipsga.org.br/guia/avancado/index.html 14
  • 16.
    Capítulo 3 Introdução 3.1 Porquemonitorar? Quando se trabalha numa empresa na área de segurança da informação, é necessário se ter à mão algumas ferramentas que ajudam e facilitam o nosso trabalho. Há muitas pessoas que vivem invadindo nossos computadores e podem até "pegar"informações sigilosas como senha de banco, senha de login, senha da rede wireless e etc. Quando se trabalha com servidores, é preciso verificar como o computador está reagindo aos acessos, verificar o processamento, se tem memória suficiente, verificar invasões e etc. Em ambiente GNU/Linux hã vãrios softwares que podem nos ajudar a ter informações impor- tantes sobre o nosso micro. Neste curso veremos algumas ferramentas e o que elas fazem. O CDTC tem curso de muitas ferramentas que veremos. Este curso focará apenas uma introdução a elas devido a isso. Podemos citar: • Cacti • MRTG • Nagios • 1Kismet • etc. 3.2 Onde monitorar? Neste curso, todas as ferramentas são nativas ao sistema GNU/Linux. Em todos os nossos cursos usamos a distribuição Debian como base. E, por isso, recomendamos também que as ferramentas tratadas neste curso sejam usadas em Debian. 1 O Kismet monitora redes wireless. Porém não será tratado neste curso. 15
  • 17.
    Capítulo 4 TCPDUMP 4.1 NOME tcpdump- captura o tráfego em uma rede 4.2 SINOPSE tcpdump [ -adeflnNOpqRStvxX ] [ -c contagem ] [ -F arquivo ] [ -i interface ] [ -m módulo ] [ -r arquivo ] [ -s tamanho ] [ -T tipo ] [ -w arquivo ] [ -E algo:secret ] [ expressão ] 4.3 DESCRIÇÃO Tcpdump imprime a saída dos cabeçalhos dos pacotes na interface de rede que combinam com a expressão booleana. No SunOS com nit ou bpf: Para rodar tcpdump você necessita ter permissão de acesso a /dev/nit ou /dev/bpf*. No Solaris com dlpi: Você precisa ter acesso de leitura/escrita ao pseudo dispositivo de rede, por exemplo /dev/le. No HP-UX com dlpi: Você necessita ser root ou ter este instalado com setuid para root. No IRIS com snoop: Você necessita ser root ou ter este instalado com setuid para root. No Linux: Você necessita ser root ou ter este instalado com setuid para root. No Ultrix e Digital UNIX: Somente o super-usuário tem permissão de utilizar o modo de operação promíscuo usando pfconfig(8), qualquer usuário pode rodar o tcpdump. No BSD: Você necessita ter acesso de leitura em /dev/bpf*. 4.4 OPÇÕES: -a Espera para converter endereços de rede e broadcast para nomes. -c Sai após receber contagem de pacotes. 16
  • 18.
    CDTC Centro deDifusão de Tecnologia e Conhecimento Brasil/DF -d Captura os pacotes compilados com o código do pacote em um formato humanamente legível para a saída padrão e sai. -dd Captura os pacotes com o código do pacote como um fragmento de programa em C. -ddd Captura os pacotes com o código do pacote como números decimais (precedidos de um contador). -e Imprime a camada de link do cabeçalho na linha capturada. -E Use algo:secreto para decriptar pacotes IPsec ESP. Algoritmos costumam ser des-cbc, 3des- cbc, blowfish-cbc, rc3-cbc, cast128-cbc, ou nenhum. O padrão é des-cbc. A habilidade de descriptar pacotes só estará presente se o tcpdump for compilado com suporte a criptografia habilitado. secreto é o texto ASCII para a chave ESP secreta. Nós não tentaremos um valor binário arbitrário neste momento. A opção assume a RFC2406 do ESP, não a RFC1827 também do ESP. A opção é somente para propósitos de depuração, e o uso desta opção com uma chave secreta TRULY é desencorajada. Pela apresentação da chave secreta do IPsec na linha de comando você consegue deixar isto visível para outros, via ps(1) e em outras ocasiões. -f Imprime a saída dos endereços internet numéricamente no lugar de simbólicamente (essa opção tenta descobrir sérios problemas em servidores YP utilizando Sun - - usualmente causa um loop eterno na conversão de não-locais números internet). -F Utiliza o arquivo para a entrada de um filtro de expressão. Qualquer expressão adicional passada via linha de comando é ignorada. -i Escute na interface. Se não especificado o tcpdump irá procurar a lista de interfaces do sis- tema, interfaces ativas (excluindo a de loopback). Em sistemas Linux com kernels 2.2 ou superiores, um argumento ``any” para interfaces pode ser usado para capturar pacotes de todas as interfaces. Note que as capturas em ``any” (todos) os dispositivos não poderá ser feita no modo promíscuo. -l Deixe a linha de saída "bufferizada". Usualmente se você quizer ver os dados enquanto são capturados. Ex: ``tcpdump -l | tee dat” ou ``tcpdump -l > dat & tail -f dat”. -n Não converter endereços (Ex: endereços de hosts e números de portas, etc) para nomes. -N Não imprime a qualificação do domínio dos nomes de host. Ex: se você passar esta flag para o tcpdump, ele imprimirá ``nic” ao invés de ``nic.ddn.mil”. -m Carrega as definições do módulo SMI MIB do arquivo módulo. Esta opção pode ser usada em diversas vezes para carregar severos módulos MIB no tcpdump. -O Não execute o otimizador de códigos de pacote. Isso usualmente só será utilizado se você suspeitar de uma falha no otimizador. -p Não coloca a interface em modo promíscuo. Note que esta interface pode precisar entrar em modo promíscuo por alguma outra razão; então, `-p’ não poderá ser usado como uma abreviação para `ether host local-hw- addr ou ether broadcast’. -q Saída rápida. Imprime menos informações do protocolo em saídas de linhas mais curtas. 17
  • 19.
    CDTC Centro deDifusão de Tecnologia e Conhecimento Brasil/DF -r Lê os pacotes do arquivo (isso é criado com a opção -w). A entrada padrão será utilizada se o arquivo for ``-”. -s Sniffa tamanho de bytes de arquivo deste pacote. O default é 68 (com SunOS’s NIT, o mínimo é atualmente 96). 68 bytes é adequado para IP, ICMP, TCP e UDP porém pode truncar informações de protocolos de pacotes DNS e NFS (olhe na frente). Os pacotes serão truncados porque um tamanho limitado foi indicado e a saída será ``[|proto]”, onde proto é o nome do nível do protocolo onde a truncagem ocorreu. Note que aumentar muito o tamanho pode causar uma delonga no tempo para processar estes pacotes e, efetivamente, diminuir a quantidade de pacotes capturados. Isso pode causar perda de pacotes. Você deve limitar o tamanho dos pacotes para o menor possível onde você conseguirá obter a informação que lhe interessar. Coloque o tamanho em 0 para que o tcpdump capture os pacotes completos, independente dos seus tamanhos. -T Força que os pacotes selecionados pela "expressão"sejam interpretados pelo tipo especifi- cado. Atualmente, os tipos conhecidos são cnfp (Protocolo Cisco NetFlow), rpc (Chamadas de procedimento remotas), rtp (Protocolo de aplicações em tempo real), rtcp (Protocolo de controle de aplicações em tempo real), snmp (Protocolo simples de gerenciamento de redes), vat (Aplicação de Visual Audio), e wb (Placa Branca distribuída). -R Assume que pacotes ESP/AH são baseados em especificações antigas (RFC1825 a RFC1829). Se especificado, o tcpdump não irá imprimir o campo de prevensão. No entanto, este não é um campo de versão na especificação do protocolo ESP/AH, portanto o tcpdump não poderá deduzir a versão do protocolo. -S Imprimir o absoluto, em lugar do relativo, número de sequência TCP. -t Não imprimir o timestamp na linha capturada. -tt Imprimir um não formatado timestamp na linha capturada. -v Detalhamento da saída (não muito). Por exemplo, o tempo de vida, identificação, tamanho total e opções do cabeçalho IP serão impressos. Também se habilita opções adicionais de checagem da integridade dos pacotes como verificação do checksum dos cabeçalhos IP e ICMP. -vv Saída mais detalhada. Por exemplo, campos adicionais serão impressos em pacotes NFS de resposta. -vvv Saída mais detalhada ainda. Por exemplo, as opções telnet SB ... SE serão impressas totalmente. Com -X as opções do telnet serão impressas em HEX muito bem. -w Escreve os pacotes capturados no arquivo no lugar de selecioná-los e imprimí-los. Isso poderá ser impresso utilizando-se a opção -r. A saída padrão será utilizada se o arquivo for ``-”. -x Imprime este pacote (menos seu cabeçalho de camada de link) em hexadecimal. Tamanho em bytes será impresso (opção -s). -X Se imprime em hexa, imprime em ASCII também. Se a opção -x também for selecionada, o pacote será impresso em hexa/ascii. Isso é muito útil para analizar novos protocolos. Se a opção -x não estiver selecionada, algumas partes de alguns pacotes serão impressas em hexa/ascii. 18
  • 20.
    CDTC Centro deDifusão de Tecnologia e Conhecimento Brasil/DF 4.5 expressão Seleciona quais pacotes serão capturados. Se nenhuma expressão for passada, todos os pacotes da rede serão capturados. Se informada, apenas os pacotes que tiverem a expressão como sendo verdadeira (combina- rem com a expressão) serão capturados. A expressão consiste em uma ou mais primitivas. Primitivas usualmente consistem em um identificador (nome ou número) precedidas de um ou mais qualificadores. Existem 3 diferentes qualificadores: type indica qual identificador (nome ou número) ele se refere. Os tipos possíveis são: host, net e port. Exemplos: ``host foo” ``net 128.3” ``port 20” Se nenhum qualificador type for especificado, host será assumido. dir indica a direção em que a transferência ocorrerá, para e/ou do identificador. As direções possíveis são src, dst, src or dst e src and dst Exemplos: ``src foo” ``dst net 128.3” ”src or dst port ftp-data” Se nenhum qualificador dir for especificado, src or dst será assumido. Para camadas de link ``null” (Ex: protocolos de ponto a ponto como o slip) os qualificadores de entrada e saída devem ser utilizados para especificar a direção desejada. proto Qualificador restrito a estipular um tipo particular de protocolo. As opções existentes de protocolo são: ether, fddi, tr, ip, ip6, arp, rarp, decnet, tcp e udp. Ex: ``ether src foo” ``arp net 128.3” ``tcp port 21” Se não estipulado, todos os protocolos existentes em opção serão assumidos. 19
  • 21.
    CDTC Centro deDifusão de Tecnologia e Conhecimento Brasil/DF Ex: ``src foo” inclui ``(ip or arp or rarp) src foo” ``net bar” inclui ``(ip or arp or rarp) net bar” e ``port 53” inclui ``(tcp or udp) port 53”. `fddi’ é atualmente um apelido para `ether’; isso seria idêntico a mensionar ``o nível de link de dados usado nesta específica interface de rede.” Cabeçalhos FDDI possuem campos iguais ao Ethernet, de endereços de origem e destino, e também tipo de pacotes, então você pode filtrar estes campos FDDI analogamente como você faz com estes campos Ethernet. Cabeçalhos FDDI também contém outros campos, porém você não poderá especificá-los em uma expressão de filtro. Similarmente, `tr’ é um apelido para `ether’; o parágrafo anterior sobre os cabeçalhos FDDI tam- bém se aplica a cabeçalhos Token Ring. Em adição a isto, existe algumas outras diretivas especiais que não foram mencionadas: gateway, broadcast, less, greater e expressões aritméticas. Todas elas serão descritas mais adiante. Expressões de filtragem mais complexas podem ser feitas utilizando-se expressões como and, or e not combinadas com as diretivas. Ex: ``host foo and not port ftp and not port ftp-data”. Para facilitar, listas de qualificadores idênticos podem ser omitidas. Ex: ``tcp dst port ftp or ftp-data or domain” é exatamente o mesmo que: ``tcp dst port ftp or tcp dst port ftp-data or tcp dst port domain”. Primitivas (diretivas) permitidas são: dst host host Verdadeiro se o campo de destino de pacotes IPv4/v6 for host, este pode ser endereço ou nome. src host host 20
  • 22.
    CDTC Centro deDifusão de Tecnologia e Conhecimento Brasil/DF Verdadeiro se o campo de origem de pacotes IPv4/v6 for host. host host Verdadeiro se o campo de origem ou destino de pacotes IPv4/v6 for host. Qualquer uma des- tas expressões de host podem ser precedidas por diretivas tais como ip, arp, rarp, ou ip6, assim: ip host host isso é o equivalente a: ether proto ip and host host Se host for um nome com múltiplos endereços IP, eles serão checados para a correlação. ether dst ehost Verdadeiro se o endereço de destino ethernet for ehost. Ehost pode ser um nome de /etc/ethers ou um número (veja ethers(3N) para o formato numérico). ether src ehost Verdadeiro se o endereço de origem ethernet for ethos. ether host ehost Verdadeiro se o endereço de origem ou de destino ethernet for ehost. gateway host Verdadeiro se o host usado no pacote for um gateway. Ex: o endereço de origem ou destino ethernet seja um host diferente do endereço de origem ou destino IP. Host precisa ser um nome e ser encontrado tanto em /etc/hosts quanto /etc/ethers. (Uma expressão equivalente seria: ether host ehost and not host host que poderia ser usada com nomes ethernet ou números para host / ehost.) Esta syntax por enquanto não funciona com configurações IPv6. dst net net Verdadeiro se o endereço de destino IPv4/v6 do pacote for um número de rede. Net pode ser um nome de /etc/networks ou um número de rede (veja networks(4) para maiores detalhes). 21
  • 23.
    CDTC Centro deDifusão de Tecnologia e Conhecimento Brasil/DF src net net Verdadeiro se o endereço de origem IPv4/v6 do pacote for um número de rede. net net Verdadeiro se o endereço de origem ou destino IPv4/v6 do pacote for um número de rede. net net mask mask Verdadeiro se o endereço IP combinar com a rede de mascará especificada. Pode ser qualifi- cada com src ou dst. Esta syntax também não foi implementada para redes IPv6. net net/len Verdadeiro se o endereço IPv4/v6 combinar com a rede que possua netmask len bits. Pode ser qualificada com src ou dst. dst port port Verdadeiro se o pacote for ip/tcp, ip/udp, ip6/tcp ou ip6/udp e sua porta de destino seja port. A porta pode ser um número ou um nome usado em /etc/services (veja tcp(4P) e udp(4P)). Se um nome for usado, tanto o número da porta quanto o protocolo serão checados. Se um número ou um nome ambíguo for utilizado, somente o número da porta será checado. Ex: dst port 513 Irá imprimir tanto tcp/login quanto udp/who e port domain Irá imprimir tanto tcp/domain quanto udp/domain src port port Verdadeiro se o pacote tiver a porta de origem port. port port Verdadeiro se a porta de origem ou de destino do pacote for port. Todas as expressões de 22
  • 24.
    CDTC Centro deDifusão de Tecnologia e Conhecimento Brasil/DF porta anteriores podem ser precedidas com diretivas tcp ou udp, assim: tcp src port port Irá capturar apenas pacotes tcp com porta de origem port. less length Verdadeiro se o pacote tiver um tamanho menor ou igual a length. Isso seria o equivalente a: len <= length. greater length Verdadeiro se o pacote tiver um tamanho maior ou igual a length. Isso seria o equivalente a: len >= length. ip proto protocol Verdadeiro se o pacote for um pacote IP (veja ip(4P)) com protocolo de tipo protocol. Proto- col pode ser um número ou um dos nomes: icmp, icmp6, igmp, igrp, pim, ah, esp, udp ou tcp. Note que os identificadores tcp, udp e icmp também são diretivas que podem ser passadas via backslash (l), isso seria no C-Shell. Perceba que esta primitiva não observa a regra de protocolo do cabeçalho. ip6 proto protocol Verdadeiro se o pacote for um pacote IPv6 com protocolo de tipo protocol. Observe que esta primitiva não observa a regra de protocolo do cabeçalho. ip6 protochain protocol Verdadeiro se o pacote for um pacote IPv6, e conter um cabeçalho de protocolo com tipo pro- tocol na regra de protocolo do cabeçalho. Por exemplo: ip6 protochain 6 combina com qualquer pacote IPv6 com o protocolo TCP definido na regra do cabeçalho que especifica o protocolo. O pacote pode conter, por exemplo, cabeçalho de autenticação, roteamento, hop-by-hop, tanto IPv6 quanto TCP. O código BPF emitido por esta primitiva é complexo e não será otimizado pelo 23
  • 25.
    CDTC Centro deDifusão de Tecnologia e Conhecimento Brasil/DF otimizador BPF do tcpdump, porque isto ficaria muito lento. ip protochain protocol Equivalente ao ip6 protochain protocol, porém este é válido para IPv4. ether broadcast Verdadeiro se o pacote for um pacote ethernet de broadcast. A diretiva ether é opcional. ip broadcast Verdadeiro se o pacote for um pacote de broadcast IP. Isso irá checar tanto por tudo-zero quanto tudo-um como convenção para broadcast, e olhará para a máscara de subrede local 4.6 ether multicast Verdadeiro se o pacote for um pacote ethernet de multicast. A diretiva ether é opcional. Isto é uma abreviação de `‘ether[0] & 1 != 0”. ip multicast Verdadeiro se o pacote for um pacote IP multicast. ip6 multicast Verdadeiro se o pacote for um pacote IPv6 multicast. ether proto protocol Verdadeiro se o pacote for um pacote ethernet com tipo protocol. Protocol pode ser um número ou um dos seguintes nomes: ip, ip6, arp, rarp, atalk, aarp, dec-net, sca, lat, mopdl, moprc, ou iso. Observe que estes identificadores também são diretivas que podem ser passados via backs- lash (l). No caso do FDDI (ex: ``fddi protocol arp”), a identificação do protocolo vêm do cabeçalho 802.2 Logical Link Control (LLC), e isto poderá usualmente estar no topo da camada do cabeçalho FDDI. O tcpdump assumirá, enquanto filtra o identificador de protocolo, que todos os pacotes FDDI incluem um cabeçalho LLC e que este cabeçalho estará no formato SNAP. O mesmo se aplica ao Token Ring. 24
  • 26.
    CDTC Centro deDifusão de Tecnologia e Conhecimento Brasil/DF decnet src host Verdadeiro se o endereço de origem DECNET for host, isto poderá ser um endereço na forma ``10.123”, ou um nome de host DECNET. O suporte a nomes de host DECNET só está disponível em sistemas Ultrix configurados para rodar DECNET. decnet dst host Verdadeiro se o endereço de destino DECNET for host. decnet host host Verdadeiro se o endereço de destino ou de origem DECNET for host. ip, ip6, arp, rarp, atalk, aarp, decnet, iso Abreviações para: ether proto p onde p é um dos protocolos mencionados anteriormente. lat, moprc, mopdl Abreviações para: ether proto p onde p é um dos protocolos mencionados anteriormente. Perceba que o tcpdump atualmente não possui "know how"para estes protocolos. vlan [vlan_id] Verdadeiro se o pacote for um pacote VLAN IEEE 802.1Q Se [vlan_id] for especificado, somente será verdadeiro o pacote que obedeça a especificação [vlan_id]. Observe que esta é a primeira diretiva vlan encontrada nas mudanças em expressão com off- sets de decodificação para definir que este pacote é um pacote VLAN. tcp, udp, icmp Abreviações para: ip proto p or ip6 proto p 25
  • 27.
    CDTC Centro deDifusão de Tecnologia e Conhecimento Brasil/DF onde p é um dos protocolos mencionados anteriormente. iso proto protocol Verdadeiro se o pacote for um pacote OSI com tipo de protocolo protocol. Protocol pode ser um número ou um dos seguintes nomes: clnp, esis ou isis. clnp, esis, isis Abreviações para: iso proto p onde p é um dos protocolos mencionados anteriormente. Observe que o tcpdump faz um tra- balho incompleto para selecionar estes protocolos. expr relop expr Verdadeiro se a relação holds, onde relop é um dos seguintes: >, <, >=, <=, =, !=, e expr é uma expressão aritmética composta por uma constante inteira (expressa na syntax padrão da linguagem C), os operadores binários normais, a saber: +, -, *, /, &, |, um operador de tamanho e um pacote especial de dados acessórios. Para acessar o interior dos dados de um pacote, use a seguinte syntax: proto [ expr : size ] Proto é um dos seguintes: ether, fddi, tr, ip, arp, rarp, tcp, udp, icmp ou ip6, e indica a camada de protocolo para a ope- ração de índice. Observe que tcp, udp e outros protocolos de camada mais alta, somente se aplicam ao IPv4, não ao IPv6 (isso será corrigido no futuro). O final do byte, relativo a camada indicada do protocolo, é passado em expr. Size (tamanho) é opcional e indica o número de bytes no campo de interesse; este pode ser: one, two ou four, sendo o padrão one. O operador de tamanho, indicado pela diretiva len, informa o tamanho do pacote. Por exemplo: ``ether[0] & 1 != 0” Captura todo o tráfego multicast. A expressão: 26
  • 28.
    CDTC Centro deDifusão de Tecnologia e Conhecimento Brasil/DF ``ip[0] & 0xf != 5” Captura todos os pacotes IP com opções. A expressão: ``ip[6:2] & 0x1fff = 0” Captura somente datagramas não fragmentados e fragmentos zero dos datagramas fragmen- tados. Esta checagem pode ser expecificamente aplicada para operações de índice em tcp e udp. Então, tcp[0] sempre menciona o primeiro byte do cabeçalho TCP, e nunca o primeiro byte de um fragmento. Diretivas podem ser combinadas usando-se: Diretivas e operadores entre parênteses (parênteses são especiais para o Shell e serão inter- pretados). Negação: (`!’ ou `not’). Concatenação (e): (`&&’ ou `and’). Alternação (ou): (`||’ ou `or’). Negação deve ser precedida. Alternação e concatenação necessitam de precedência e asso- ciam esquerda com direita. Se um identificador for passado sem uma diretiva, a mais recente diretiva será assumida. Por exemplo: not host vs and ace será igual à: not host vs and host ace mas não pode ser confundido com: not ( host vs or ace ) Argumentos de expressão podem ser passados ao tcpdump como um simples argumento, ou como múltiplos argumentos. Geralmente, se a expressão contiver metacaracteres de SHELL, será mais fácil passar como 27
  • 29.
    CDTC Centro deDifusão de Tecnologia e Conhecimento Brasil/DF um simples argumento entre aspas. Múltiplos argumentos são concatenados com espaços antes de serem analizados. EXEMPLOS Para imprimir todos os pacotes vindos de ou para o departamento sundown tcpdump host sun- down Para imprimir o tráfego entre helios e hot ou ace: tcpdump host helios and ( hot or ace ) Para imprimir todos os pacotes IP entre ace e qualquer host exceto helios: tcpdump ip host ace and not helios Para imprimir todo tráfego entre hosts locais e hosts em Berkeley: tcpdump net ucb-ether Para imprimir todo tráfego ftp para a internet através do gateway snup: (Observe que a expressão está entre parênteses para prevenir que o shell interprete o que está entre parênteses) tcpdump ’gateway snup and (port ftp or ftp-data)’ Para imprimir o tráfego para redes fora da rede local (se você for gateway para outra rede, esta regra pode não prever isto em sua rede local). tcpdump ip and not net localnet Para imprimir pacotes de início e final de conexões (SYN e FIN) TCP envolvendo hosts não-locais. tcpdump ’tcp[13] & 3 != 0 and not src and dst net localnet’ Para imprimir pacotes IP maiores do que 576 bytes enviados através do gateway snup: tcpdump ’gateway snup and ip[2:2] > 576’ Para imprimir pacotes de broadcast ou multicast IP que não estão sendo enviados via broad- cast ou multicat ethernet tcpdump ’ether[0] & 1 = 0 and ip[16] >= 224’ Para imprimir todos os pacotes ICMP que não sejam echo request/reply 28
  • 30.
    CDTC Centro deDifusão de Tecnologia e Conhecimento Brasil/DF (não sejam ping’s) tcpdump ’icmp[0] != 8 and icmp[0] != 0’ SEE ALSO traffic(1C), nit(4P), bpf(4), pcap(3) AUTHORS The original authors are: Van Jacobson, Craig Leres and Steven McCanne, all of the Lawrence Berkeley National Labo- ratory, University of Cali- fornia, Berkeley, CA. It is currently being maintained by tcpdump.org. The current version is available via http: http://www.tcpdump.org/ The original distribution is available via anonymous ftp: ftp://ftp.ee.lbl.gov/tcpdump.tar.Z IPv6/IPsec support is added by WIDE/KAME project. This program uses Eric Young’s SSLeay library, under specific configuration. http://www.tcpdump.org/ The original distribution is available via anonymous ftp: ftp://ftp.ee.lbl.gov/tcpdump.tar.Z IPv6/IPsec support is added by WIDE/KAME project. This program uses Eric Young’s SSLeay library, under specific configuration. 29
  • 31.
    Capítulo 5 Nagios 5.1 Oque é o Nagios? Nagios(http://www.nagios.org/), antigamente conhecido como NetSaint é um aplicativo de mo- nitoramento de sistemas e redes. O programa checa periodicamente o status de um serviço ou cliente alertando aos reponsáveis em caso de falhas. O status de cada cliente e serviço da rede pode ser consultado via interface web. Quando algum tipo de problema é encontrado, o servidor pode mandar notificações para o ad- ministrador de diferentes maneiras: e-email, SMS, etc. O interessante é que o acompanhamento do que está sendo monitorado pode ser visto online através de um browser. Ou seja, o Nagios é portável para Web. Este documento, por enquanto, apenas faz referência à esta ferramenta, não tratando de sua implementação. Maiores informações a respeito do Nagios favor consultar o site http://www.nagios.org/docs 5.2 Como Nagios Monitora as Máquinas? Todo monitoramento é feito através de plugins. Plugins são programas usados sob demanda. Trata-se de executáveis, compilados ou scripts (Perl, shell, etc.), que podem ser executados atra- vés da linha de comando para checar o status de um cliente ou seu serviço. Sem os plugins, o Nagios não tem utilidade. 5.3 O que o Nagios pode fazer? • Checa se o servidor esta ativo e rodando • Verifica se um serviço está rodando (email, pager, SMS) • Verifica se um processo está rodando (mail, http, pop, ssh) • Coleta estatísticas de performance em um servidor • Permite que alertas específicos sejam encaminhados para grupos ou indivíduos em parti- cular • Reporta o tempo em que seus servidores ficaram parados 30
  • 32.
    CDTC Centro deDifusão de Tecnologia e Conhecimento Brasil/DF 5.4 Porque utilizar o Nagios? O Nagios é uma excelente escolha se você deseja algum tipo de monitoramento. Suas princi- pais características são: • Open Source • Robusto e Confiável • Altamente configurável • Fácil de extender • Desenvolvimento ativo • Comunidade ativa • O Nagios roda em diversos sistemas operacionais O Nagios pode ser utilizado para monitorar muitas coisas. Aqui estão algumas delas: • Dar um ping para ver se o host(destino) é alcançável • Serviços como DHCP, DNS, FTP, SSH, Telnet, HTTP, NTP, POP3, IMAP, SMTP etc. • Banco de Dados como MySQL, Postgres, Oracle, SQL Server etc. • Informações a nível de aplicação (Apache, Postfix, LDAP, Citrix etc.) 5.5 Considerações finais sobre o Nagios É importante que se tenha em mente: • O Nagios não irá funcionar sem os plugins. • O Nagios não irá funcionar se o Apache não estiver configurado corretamente. • Verifique as permissões dos arquivos antes de ficar desesperado. • Preste atenção na localização dos arquivos. • Tenha certeza que configurou tudo antes de iniciar o programa. Maiores informações podem ser obtidas em: http://www.nagios.org. 31
  • 33.
    Capítulo 6 MRTG 6.1 MRTG- Multi-router traffic grapher O MRTG é uma ferramenta para monitorar o tráfego utilizado em sua rede/link. O MRTG gera páginas HTML que contêm imagens GIF, tais imagens apresentam uma representação visual desse tráfego através de gráficos. Veja um exemplo: Veremos mais exemplos mais a frente. O MRTG é desenvolvido em Perl e C e programado para funcionar sob sistemas UNIX e Windows, e é em código livre sob a licença Gnu GPL. O MRTG utiliza o SNMP para a coleta dos dados para a construção do gráfico, porém é possível utilizar scripts externos para fazer tal coleta. 6.2 Características gerais Portabilidade O MRTG funciona na maioria das plataformas UNIX e Windows NT. Perl O MRTG é escrito em Perl e vem com todo o código fonte disponível. Portabilidade SNMP O MRTG usa uma implementação totalmente portável de SNMP escrita toda em Perl (graças a Simon Leinen). Não há necessidade de instalar qualquer pacote externo SNMP(cliente). Suporte SNMPv2c MRTG suporta contadores 64bit do SNMPv2c. Identificação confiável de interfaces Interfaces de roteadores podem ser identificadas pelo en- dereço IP, descrição e endereço ethernet além do número padrão de interface. 32
  • 34.
    CDTC Centro deDifusão de Tecnologia e Conhecimento Brasil/DF Arquivos Log de tamanho fixo Os arquivos de log do MRTG NÃO crescem de tamanho graças ao uso de um algoritmo único de consolidação de dados. Configuração automática O MRTG vem com um kit de ferramentas próprias para sua configu- ração, tornando-a bem simples. Performance Rotinas com tempo crítico são implementadas em C, para maior performance.(Graças a iniciativa de Dave Rand) Gráficos em PNG Gráficos são gerados diretamente para o formato PNG usando a biblioteca GD de Thomas Boutell. Customização A aparência das páginas HTML produzidas pelo MRTG são altamente configurá- veis. RRDtool MRTG possui suporte interno para o uso da ferramenta RRDtool. 6.3 História O MRTG surge após uma necessidade e curiosidade de conhecer a performance de uma linha de 64kbit, onde Tobias Oetiker trabalhava em 1994. Oetiker, então, criou um pequeno programa que atualizava um gráfico na internet onde era mostrado a carga no link de Internet. Eventu- almente, o programa se desenvolveu em um script Perl razoavelmente customizável chamado MRTG-1.0, que foi lançado em 1995. A partir daí Oetiker deixou o MRTG de lado por falta de tempo. Em Janeiro de 1996, Oetiker recebe um email de Dave Rand, perguntando sobre o MRTG e seu desenvolvimento demorado. Oetiker sabia que a programação do MRTG não era muito eficiente e estava escrito toda em Perl. Depois de mais ou menos uma semana, Rand escreveu a Oetiker novamente dizendo que havia feito uma tentativa de aprimorar a velocidade do MRTG. Rand havia decidido reescrever partes críticas do programa na linguagem C. O código fora man- dado a Oetiker pelo email. A nova implementação provia aumento de velocidade do MRTG em até 40 vezes! Isto fez com que Oetiker recomeçasse a trabalhar com o MRTG nas horas vagas para desenvolver o MRTG-2. Após o desenvolvimento do MRTG-2, cópias beta foram distribuídas a interessados. Com isso o projeto recebeu inúmeros patches, vários bug fixes e feedback dos usuários. O produto disponível hoje não estaria em tal estado se não fosse a grande contribuição e suporte de sua comunidade de usuários. 6.3.1 Leia mais Aprenda mais sobre o MRTG na página oficial: http://oss.oetiker.ch/mrtg Para mais exemplos de gráficos do MRTG, visite: http://www.stat.ee.ethz.ch/mrtg/ 6.3.2 Autor Tobias Oetiker <oetiker@ee.ethz.ch> e vários contribuintes 33
  • 35.
    Capítulo 7 Cacti Para gerenciarprocessos e recursos do seu computador utilizando a ferramenta Cacti, inicia- remos com as definições de alguns conceitos importantes sobre os quais falaremos durante esse curso. São eles: RRDtool: RRD é a abreviação de Round Robin Database, sistema cujo objetivo é armazenar e monito- rar dados em série obtidos durante um período de tempo pré-determinado. Esses dados obtidos são denominados dados circulares, pois seu tamanho ocupado em disco não aumenta com o decorrer do tempo e nem com a quantidade de dados já armazenados. Entretanto, o RRDTOOL não é capaz de gerar páginas html ou produzir gráficos, fato que torna necessário a sua comum utilização associada a um front-end. SNMP: O SNMP (Simple Network Management Protocol) é um protocolo de gerência definido a ní- vel de aplicação, é utilizado para obter informações de servidores SNMP. Foi desenvolvido para gerenciar, monitorar e controlar configurações, performance, falhas, estatísticas e segurança da rede. Sendo um padrão para gerenciamento de LANs, particularmente para aplicações de missão crítica. O gerenciamento da rede através do SNMP permite o acompanhamento simples e fácil do estado, em tempo real, da rede, podendo ser utilizado para gerenciar diferentes tipos de sis- temas. O SNMP é um protocolo inicialmente desenvolvido para ser uma alternativa ao protocolo CMIP (mais completo, porém não foi bem recebido no mercado devido a sua alta complexidade). O SNMP, por ser mais simples e dar a conta do recado, acabou virando padrão de mercado e hoje já está na versão SNMP V3. Veremos mais à frente esse protocolo mais detalhadamente. Cacti: O Cacti é uma ferramenta gráfica de gerenciamento de dados de rede desenvolvido para ser utilizado por administradores de rede com uma não muito rica experiência na área, enquanto por outro lado, disponibiliza recursos bem poderosos para serem utilizados em redes bastante complexas. O Cacti é um front-end para o RRDTOOL desenvolvido na linguagem PHP, possui uma interface web e armazena todos os seus dados em um banco de dados MySql. Utilizando essa ferramenta, é possível fazer o polling de hosts SNMP, criar gráficos e gerenciar o acesso de usuários a toda a informação já coletada. Esta ferramenta disponibiliza a seus usuários uma interface intuitiva e bem agradável de se usar, sendo acessível a qualquer tipo de usuários, desde inexperientes até usuários com uma grande experiência. Com o Cacti, é possível fazer o controle de acesso por nível de usuário, ou seja, podemos configurar o acesso a certas informações apenas por determinados usuários. Além 34
  • 36.
    CDTC Centro deDifusão de Tecnologia e Conhecimento Brasil/DF disso, o fato do usuário desejar adicionar algum novo equipamento para ser monitorado não é uma tarefa complicada como em outras ferramentas(por exemplo o MRTG), bastando para isso alguns poucos minutos. O monitoramento de redes usando o Cacti é bastante fácil e agradável, e o objetivo deste curso é ensinar o usuário a instalar e configurar essa ferramenta de grande usabilidade no mundo tec- nológico atual. E o melhor, é um programa LIVRE, ou seja, disponibilizado para qualquer um baixá-lo e instalá-lo em seu computador. 35
  • 37.
    Capítulo 8 Arquivos delog 8.1 Follow O Follow é um pequeno aplicativo Java que permite monitorar vários arquivos de Log simul- taneamente através de uma interface gráfica. Para os desenvolvedores em plataforma Windows uma verdadeira mão na roda. Os principais recursos são: • Monitorar ("follow") arquivos de texto e apresentar as informações atualizadas destes arqui- vos. - Limpar o conteúdo apresentado de um ou todos os arquivos abertos; • Apagar fisicamente o conteúdo de um ou de todos os arquivos abertos; • Permite algumas configurações de Interface e tempo de atualização do arquivo; • Os arquivos podem ser abertos sendo arrastados para a interface gráfica (Usando drag- and-drop); • Os arquivos abertos com o Follow podem ser abertos automaticamente da próxima vez em que ele for executado. Follow é um projeto Open Source, distribuído sob a licença GNU GPL, e pode ser encontrado em http://follow.sourceforge.net 8.2 Arquivos e daemons de Log A atividade dos programas são registradas em arquivos localizados em /var/log . Estes ar- quivos de registros são chamados de logs e contém a data, hora e a mensagem emitida pelo programa (violações do sistema, mensagens de erro, alerta e outros eventos) entre outros cam- pos. Enfim, muitos detalhes úteis ao administrador tanto para acompanhar o funcionamento do seu sistema, comportamento dos programas ou ajudar na solução e prevenção de problemas. Alguns programas como o Apache, exim, ircd e squid criam diversos arquivos de log e por este motivo estes são organizados em sub-diretórios (a mesma técnica é usada nos arquivos de configuração em /etc, conforme a padrão FHS atual). 36
  • 38.
    CDTC Centro deDifusão de Tecnologia e Conhecimento Brasil/DF 8.3 Formato do arquivo de log Um arquivo de log é normalmente composto pelos seguintes campos: Data|Hora|Máquina|daemon|mensagem O campo máquina é o nome do computador que registrou a mensagem (a máquina pode atuar como um servidor de logs registrando mensagens de diversos computadores em sua rede). O campo daemon indica qual programa gravou a mensagem. O uso dos utilitários do console pode ajudar muito na pesquisa e monitoração dos logs, por exemplo, para obter todas as mensagens do daemon kernel da estação de trabalho wrk1, elimi- nando os campos "wrk1"e "kernel": cat /var/log/*|grep ’wrk1’|grep ’kernel’|awk ’print $1 $2 $3 $6 $7 $8 $9 $10 $11 $12’ Os parâmetros "$1", "$2"do comando awk indica que campos serão listados, (omitimos $4 e $5 que são respectivamente "wrk1"e "kernel"). Um bom utilitário para monitoração de logs, logcheck, será citado mais à frente Daemons de log do sistema Os daemons de log do sistema registram as mensagens de saída do kernel (klogd) e sistema (syslogd) nos arquivos em /var/log . A classificação de qual arquivo em /var/log receberá qual tipo de mensagem é controlado pelo arquivo de configuração /etc/syslog.conf através de facilidades e níveis 8.4 syslogd Este daemon controla o registro de logs do sistema. syslogd [opções] opções -f Especifica um arquivo de configuração alternativo ao /etc/syslog.conf. -h Permite redirecionar mensagens recebidas a outros servidores de logs especificados. -l (computadores) Especifica um ou mais computadores (separados por ":") que deverão ser registrados somente com o nome de máquina ao invés do FQDN (nome completo, incluindo domínio). -m (minutos) Intervalo em minutos que o syslog mostrará a mensagem –MARK–. O valor padrão padrão é 20 minutos, 0 desativa. -n Evita que o processo caia automaticamente em background. Necessário principalmente se o syslogd for controlado pelo init. -p (soquete) Especifica um soquete UNIX alternativo ao invés de usar o padrão /dev/log. -r Permite o recebimento de mensagens através da rede através da porta UDP 514. Esta opção é útil para criar um servidor de logs centralizado na rede. Por padrão, o servidor syslog rejeitará conexões externas. -a (soquetes) Especifica soquetes adicionais que serão monitorados. Esta opção será necessá- ria se estiver usando um ambiente chroot. É possível usar até 19 soquetes adicionais -d Ativa o modo de depuração do syslog. O syslog permanecerá operando em primeiro plano e mostrará as mensagens no terminal atual. Na distribuição Debian, o daemon syslogd é iniciado através do script /etc/init.d/sysklogd. 37
  • 39.
    CDTC Centro deDifusão de Tecnologia e Conhecimento Brasil/DF 8.5 Arquivo de configuração syslog.conf O arquivo de configuração /etc/syslog.conf possui o seguinte formato: facilidade.nível destino A facilidade e nível são separadas por um "."e contém parâmetros que definem o que será registrado nos arquivos de log do sistema: • facilidade - É usada para especificar que tipo de programa está enviando a mensagem. Os seguintes níveis são permitidos (em ordem alfabética): – auth - Mensagens de segurança/autorização (é recomendável usar authpriv ao invés deste). – authpriv - Mensagens de segurança/autorização (privativas). – cron - Daemons de agendamento (cron e at). – daemon - Outros daemons do sistema que não possuem facilidades específicas. – ftp - Daemon de ftp do sistema. – kern - Mensagens do kernel. – lpr - Subsistema de impressão. – local0 a local7 - Reservados para uso local. – mail - Subsistema de e-mail. – news - Subsistema de notícias da USENET. – security - Sinônimo para a facilidade auth (evite usa-la). – syslog - Mensagens internas geradas pelo syslogd. – user - Mensagens genéricas de nível do usuário. – uucp - Subsistema de UUCP. – * - Confere com todas as facilidades. Mais de uma facilidade pode ser especificada na mesma linha do syslog.conf separando-as com ",". • nível - Especifica a importância da mensagem. Os seguintes níveis são permitidos (em ordem de importância invertida; da mais para a menos importante): – emerg - O sistema está inutilizável. – alert - Uma ação deve ser tomada imediatamente para resolver o problema. – crit - Condições críticas. – err - Condições de erro. – warning - Condições de alerta. – notice - Condição normal, mas significante. – info - Mensagens informativas. – debug - Mensagens de depuração. – * - Confere com todos os níveis. – none - Nenhuma prioridade. 38
  • 40.
    CDTC Centro deDifusão de Tecnologia e Conhecimento Brasil/DF Além destes níveis os seguintes sinônimos estão disponíveis: – error - Sinônimo para o nível err. – panic - Sinônimo para o nível emerg. – warn - Sinônimo para o nível warning. • destino - O destino das mensagens pode ser um arquivo, um pipe (se iniciado por um - "), um computador remoto (se iniciado por uma "@"), determinados usuários do sistema (especificando os logins separados por vírgula) ou para todos os usuários logados via wall (usando "*"). Todas as mensagens com o nível especificado e superiores a esta especificadas no syslog.conf serão registradas, de acordo com as opções usadas. Conjuntos de facilidades e níveis podem ser agrupadas separando-as por ";". OBS1: Sempre use TABS ao invés de espaços para separar os parâmetros do syslog.conf. OBS2: Algumas facilidades como security, emitem um beep de alerta no sistema e enviam uma mensagem para o console, como forma de alerta ao administrador e usuários logados no sistema. Existem ainda 4 caracteres que garantes funções especiais: "*", "=", "!"e -": • "*- Todas as mensagens da facilidade especificada serão redirecionadas. • "=- Somente o nível especificado será registrado. • "!- Todos os níveis especificados e maiores NÃO serão registrados. • -- Pode ser usado para desativar o sync imediato do arquivo após sua gravação. • • Os caracteres especiais "="e "!"podem ser combinados em uma mesma regra. Exemplo: Veja abaixo um exemplo de um arquivo /etc/syslog.conf padrão de sistemas Debian # # Primeiro alguns arquivos de log padrões. Registrados por facilidade # auth,authpriv.* /var/log/auth.log *.*;auth,authpriv.none -/var/log/syslog cron.* /var/log/cron.log daemon.* -/var/log/daemon.log kern.* -/var/log/kern.log lpr.* -/var/log/lpr.log mail.* /var/log/mail.log user.* -/var/log/user.log uucp.* -/var/log/uucp.log # # Registro de logs do sistema de mensagens. Divididos para facilitar 39
  • 41.
    CDTC Centro deDifusão de Tecnologia e Conhecimento Brasil/DF # a criação de scripts para manipular estes arquivos. # mail.info -/var/log/mail.info mail.warn -/var/log/mail.warn mail.err /var/log/mail.err # Registro para o sistema de news INN # news.crit /var/log/news/news.crit news.err /var/log/news/news.err news.notice -/var/log/news/news.notice # # Alguns arquivos de registro "pega-tudo". # São usadas ","para especificar mais de uma prioridade (por # exemplo, "auth,authpriv.none") e ";"para especificar mais de uma # facilidade.nível que será gravada naquele arquivo. # Isto permite deixar as regras consideravelmente menores e mais legíveis # *.=debug; auth,authpriv.none; news.none;mail.none -/var/log/debug *.=info;*.=notice;*.=warn; auth,authpriv.none; cron,daemon.none; mail,news.none -/var/log/messages # # Emergências são enviadas para qualquer um que estiver logado no sistema. Isto # é feito através da especificação do "*"como destino das mensagens e são # enviadas através do comando wall. # *.emerg * # # Eu gosto de ter mensagens mostradas no console, mas somente em consoles que # não utilizo. # #daemon,mail.*; # news.=crit;news.=err;news.=notice; # *.=debug;*.=info; # *.=notice;*.=warn /dev/tty8 # O pipe /dev/xconsole é usado pelo utilitário "xconsole". Para usa-lo, # você deve executar o "xconsole"com a opção -file": # # $ xconsole -file /dev/xconsole [...] # 40
  • 42.
    CDTC Centro deDifusão de Tecnologia e Conhecimento Brasil/DF # NOTA: ajuste as regras abaixo, ou ficará maluco se tiver um um site # muito movimentado... # daemon.*;mail.*; news.crit;news.err;news.notice; *.=debug;*.=info; *.=notice;*.=warn |/dev/xconsole # A linha baixo envia mensagens importantes para o console em que # estamos trabalhando logados (principalmente para quem gosta de ter # controle total sobre o que está acontecendo com seu sistema). *.err;kern.debug;auth.notice;mail.crit /dev/console #- -Fim de Arquivo- - 8.6 klogd Este daemon controla o registro de mensagens do kernel. Ele monitora as mensagens do kernel e as envia para o daemon de monitoramento syslogd, por padrão. klogd [opções] 8.6.1 opções -d Ativa o modo de depuração do daemon -f (arquivo) Envia as mensagens do kernel para o arquivo especificado ao invés de enviar ao daemon do syslog -i Envia um sinal para o daemon recarregar os símbolos de módulos do kernel. -I Envia um sinal para o daemon recarregar os símbolos estáticos e de módulos do kernel. -n Evita a operação em segundo plano. Útil se iniciado pelo init -k (arquivo) Especifica o arquivo que contém os símbolos do kernel. Exemplos deste arquivo estão localizados em /boot/System.map-xx.xx.xx. -o Faz com que o daemon leia e registre todas as mensagens encontradas nos buffers do kernel, após isto o daemon é encerrado. -p Ativa o modo paranóia. Isto fará o klogd somente carregar detalhes sobre os módulos quando os caracteres Oops forem detectados nas mensagens do kernel. É recomendável ter sem- pre a última versão do klogd e evitar a utilização desta opção em ambientes críticos. -s Força a utilização da interface de chamadas do sistema para comunicação com o kernel. -x Esconde tradução EIP, assim ele não lê o arquivo /boot/System.map-xx-xx-xx. A especificação de um arquivo com a opção -k é necessária se desejar que sejam mostradas a tabela de símbolos ao invés de endereços numéricos do kernel. logger Este comando permite enviar uma mensagem nos log do sistema. A mensagem é enviada aos logs via daemon syslogd ou via soquete do sistema, é possível especificar a prioridade, nível, 41
  • 43.
    CDTC Centro deDifusão de Tecnologia e Conhecimento Brasil/DF um nome identificando o processo, etc. Seu uso é muito útil em shell scripts ou em outros eventos do sistema. logger [opções] [mensagem] Onde: mensagem Mensagem que será enviada ao daemon syslog opções -i Registra o PID do processo -s Envia a mensagem ambos para a saída padrão (STDOUT) e syslog. -f (arquivo) Envia o conteúdo do arquivo especificado como mensagem ao syslog. -t (nome) Especifica o nome do processo responsável pelo log que será exibido antes do PID na mensagem do syslog. -p (prioridade) Especifica a prioridade da mensagem do syslog, especificada como facili- dade.nível. Veja os tipos de prioridade/níveis em syslog.conf. O valor padrão priori- dade.nível é user.notice -u (soquete) Envia a mensagem para o [soquete] especificado ao invés do syslog Mais detalhes sobre o funcionamento sobre o daemon de log do sistema syslogd, pode ser encontrado em syslogd, Exemplos: logger -i -t focalinux Teste teste teste, logger -i -f /tmp/mensagem -p security.emerg 8.7 Programas úteis para monitoração e gerenciamento de arquivos de logs 8.7.1 logcheck É um programa usado para enviar um e-mail periodicamente ao administrador do sistema (através do cron ou outro daemon com a mesma função) alertando sobre os eventos que ocorre- ram desde a última execução do programa. As mensagens do logcheck são tratadas por arquivos em /etc/logcheck e organizadas em categorias antes de ser enviada por e-mail, isto garante muita praticidade na interpretação dos eventos ocorridos no sistema. As categorias são organizadas da mais importantes para a menos importante, e vão desde "Hacking em andamento"(providências devem ser tomadas imediatamente para resolver a situa- ção) até "eventos anormais do sistema"(mensagens de inicialização, mensagens dos daemons do sistema, etc.). O tipo de mensagem que será incluída/ignorada nos logs enviados podem ser personalizadas pelo administrador do sistema através dos arquivos/diretórios dentro de /etc/logcheck. Nomes de arquivos/diretórios contendo a palavra "ignore"são usados para armazenar expressões regulares que NÃO serão enviadas pelo logcheck. É permitido o uso de expressões regulares perl/sed para especificar as mensagens nos arquivos de log. logrotate Usado para fazer backups dos logs atuais do sistema (programado via cron, ou outro daemon com a mesma função) e criando novos arquivos de logs que serão usados pelo sistema. Opcio- nalmente os arquivos de logs antigos serão compactados para diminuir a utilização de espaço em disco ou enviados por e-mail ao administrador. A rotação dos arquivos de logs proporciona maior agilidade quando precisamos encontrar algum detalhe útil (que seria mais difícil de se achar em um arquivo de log de 10MB ou maior). 42
  • 44.
    CDTC Centro deDifusão de Tecnologia e Conhecimento Brasil/DF A rotação de logs é feita de acordo com o tamanho do arquivo de logs especificado, mas a opção -f pode ser usada para "forçar"a rotação de logs. A opção -d fornece mais detalhes sobre o que o logrotate está fazendo. Seu arquivo principal de configuração é o /etc/logrotate.conf. Um modelo deste tipo de arquivo é o seguinte: #### Estas opções afetam globalmente o funcionamento do logrotate # roda os arquivos de log semanalmente weekly # mantém as últimas 4 cópias de logs anteriores rotate 4 # Erros de não existência dos logs são enviados para o usuário root mail root # Cria novos arquivos de log (vazios) após rodar os antigos create # Descomente isso se desejar seus arquivos de logs compactados. O parâmetro # delaycompress é usado para que o primeiro log rodado seja mantido # descompactado compress delaycompress # Executam os scripts em prerotate e postrotate a cada vez que os logs # forem rodados. nosharedscripts # Definimos um diretório que poderá conter definições individuais para # diversos serviços no sistema, eles podem ir nest 43