Autor: Fabiano S. Rech
eMail: fabiano[NOSPAM]linuxbsd.com.br
Data: 29 de fevereiro de 2004
Introdução
Um dos grandes méritos de sistemas padrão posix ou Unix em geral é o sistema de registros simples, arquivos de textos puros, mas não se deixe enganar por toda esta simplicidade, registros ou logs do sistema são extremamente úteis e importantes para controle e manutenção de qualquer tarefa preventiva, corretiva, e inúmeras outras. Em circunstâncias atuais, com o grande avanço e disseminação da Internet, um bom administrador ou mesmo você no seu computador pessoal, é de extrema importância adquirir o hábito de leitura, analise e varredura dos logs, não digo somente por motivos de segurança contra crackers, mas para falhas gerais desde hardware ou software, vivemos em um mundo tão competitivo que não é permitido falhar, podemos ter sido ótimos admins por vários anos, sempre ter prestado um ótimo serviço, mas por traição do destino, um descuido, algo que poderia ser evitado, um erro que por muito tempo antes de ter sua ação destrutiva, estava lá, escondido em pequenos arquivos texto, talvez a mesma linha foi reescrita tantas vezes, e nunca percebemos ou procuramos descobrir, e nos tornamos mais um taxado pelo insucesso.
Por isto garanto, que a leitura do tutorial apresentado a seguir não serão alguns minutos que você perderá, nem algo mais que poderá ser implantado adiante, depois talvez de recompilar o kernel ou voltar de viagem, mas quem sabe neste exato momento o que seu log está apontando? Talvez neste exato momento algo está prestes a acontecer, portanto leia, mas não se contente somente com que está aqui, o que escrevo lhe capacitará para criar um sistema de varredura eficaz, mas as possibilidades de melhora são infinitamente grandes!
Breve Introdução ao sistema de Registro em Unix
Como foi mencionado anteriormente, é padrão em sistemas posix (linux, Bsd,...) o sistema de registro simples, escrito em texto puro com mensagens previamente determinadas pelas configurações do programa, as mensagens podem variar desde erros simples de termino até a de hacking, vejamos a seguir as duas formas de registro usadas pelos programas:
Mensagens do Syslog
É a forma quase que padrão que o sistema utiliza, o syslog é programa que através do daemon syslogd, que proporciona a diversos programas como, apt, rpm, xfree, etc... Uma forma comum para o registro, para saber mais sobre o syslog, leia outro artigo meu sobre o mesmo clicando aqui http://www.linuxbsd.com.br/phpLinuxBSD/modules/artigos_tecnicos/entendendo_e_configurando_syslog.htm
Registro gerenciado pelo processo
São registros escritos e manipulados pelos próprios programas, ou seja, por um comando ou até por linhas embutidas no próprio código que determinam isto, por cada programa usar um estilo, aconselho a optarem pelo uso do syslog, pois as opções disponÃveis serão mais eficazes.
Pequeno Histórico do Swatch
O programa de varreduras Swatch (Simple watchdog) foi desenvolvido por Todd Atkins na linguagem perl, o swatch é uns dos programas de varreduras mais eficientes e tradicionais, tendo vários adeptos que o utilizam como um "dos seus" programas de varredura e análise de logs. O swatch utiliza o arquivo usa um arquivo que você deverá fornecer com as regras para leitura e classificação dos mesmos, isto usando expressões regulares de Perl compatÃveis com a do padrão Grep. O Swatch lê o arquivo de log, utilizando esta regras classificando e executando ações premeditadas no arquivo $home/.swatchrc do user que o executar. Para instalar o swatch eu usei o Fedora Core 1, mas como é um programa em perl poderá ser usado em qualquer distribuição linux ou bsd. Vejamos a seguir como instalar configurar.
Instalação do Swatch.
Para instalar o swatch baixe a ultima versão no endereço: http://www.oit.ucsb.edu/~eta/swatch/
Obs: Antes de iniciar a instalação do Swatch Certifique-se que você tenha perl devidamente instalado na sua maquina, caso não tenha instale os pacotes de desenvolvimentos do linux.
Requerimentos:
O Swatch tem como dependências os módulos Cpan do Perl, caso você já os tenha poderá pular esta etapa de configuração, partindo para a de compilação.
Instalando os Módulos Cpan
Os módulos necessários são:
Date::Calc
Date::Parse
File::Tail
Time::HiRes
Para poder instalar as mesmas proceda da seguinte maneira:
#perl -MCPAN -e shell
Caso você nunca tenha utilizado este comando, ele solicitará que você responda algumas perguntas, apôs estas perguntas insira os seguintes comandos:
cpan>install Date::Calc
cpan>install Date::Parse
cpan>install File::Tail
cpan>install Time::HiRes
Terminado estes procedimentos sem erros podemos começar a compilar o nosso swatch.
Acesse a pasta onde foi feito o donwload do swatch, e proceda desta maneira:
descompacte:
% tar -zxvf swatch-3.0.8.tar.gz
entre no diretório de os seguintes comandos:
% perl Makefile.pl
% make
% make test
% make install
Pronto tudo efetuado sem erros e anormalidades, o swatch deve estar 100% funcional, vem agora à parte mais emocionante e delicada, a configuração do Swatchrc.
Configurando o Swatchrc
Como foi dito anteriormente o swatch utiliza expressões regulares de perl, com robustez e facilidades fascinantes o programa swatch se compila usando o arquivo texto .swatchrc e gera um binário que executa a varredura linha a linha, sempre que a linha coincidir com um padrão executa uma ou mais ações associadas, vejamos a seguir estas ações:
echo: Responsável por exibir a linha na saÃda padrão, com ele podemos definir cores para cada grau de importância.
bell: Emite um sinal sonoro como aviso.
mail: Com este comando enviamos aos usuários predefinidos a linha correspondente.
write: Parecido com mail, mas com ele a linha é escrita diretamente para o usuario
pipe: Envia linhas que correspondem ao programa de entrada padrão.
thorottle: É uma pseudo-ação que permite a definição de uma freqüência do aparecimento certas linhas.
O Swatchrc Propriamente dito
Abaixo segue um swatchrc que escrevi para fins de exemplos, o tome como base para a construção de um personalizado.
#configuração Exemplo do Swatchrc
#Por Fabiano Rech
#www.linuxbsd.com.br
#declaração das linhas que deverão ser ignoradas
#cuidado para não incluir algo que tenha que ser listado
#linha que deverão ser ignoradas pelo Swatch
ignore = /Received signal 15/
ignore = /sbin *poweroff/
ignore = /running *kppp/
#Configuração dos filtros e ações que serão tomadas, ou #seja, o comando watchfor usa as palavras entre as #barras, localiza algo que corresponda a esta #determinação e executa os comandos editados a ele. #importante não esqueça de identar!
#Peco que destaque os programas que foram executados por #usuários com permissão de root
#ele enviará a linha correspondente para Fabiano e soará
watchfor = /with root privileges/
mail ,subject=Root na área
bell 3
#destacará a linha que desejo com vermelho
watchfor = /listening/
echo red
#aqui eu coloco todas as opções que eu não especifiquei, #mas que não quero deixar passar em amarelo.
watchfor = /.*/
echo yellow
Como vimos anteriormente o arquivo de configuração.swatchrc que deverá ficar no home do usuario que executá-lo é relativamente simples, o modelo proposto anteriormente é apenas um pequeno aperitivo, procure usar e abusar das possibilidades que o swatch oferece, crie um que possa varrer todos os arquivos de registros, ou um para cada registro, leia e releia os seus logs e defina o que você quer que o swatch fará para você!
Execução do Swatch
Logo apos tudo configurado vem o momento tão esperado em que você verá que o trabalho que poderia durar algumas horas pode ser feito em alguns minutos (ATENCÃO: Nunca confie totalmente em programas de leitura de logs, torne-os seus grandes aliados não possÃveis inimigos, tenha o bom hábito da leitura manual, e com outros scaneadores), para isto veremos a seguir algumas opções que o swatch nos oferece:
% swatch --examine=/var/log/yum.log
O swatch passará somente uma vez pelo arquivo de log, use caso queira um resultado somente.
% swatch --tail-file=/var/log/yum.log
O swatch processa todo o arquivo, mas continua a processar todas as linhas incluÃdas ao arquivo log, continuamente.
As opções pode ser executadas alternadamente nos horários que sejam relativamente convenientes ou ainda agendadas pelo cron, claro que existe ainda algumas opções, mas por hora estas bastam para se ter um sistema de varreduras eficiente.
Considerações finais
Vejo que a grande deficiência de muitos administradores e responsáveis por sistemas, desde linux, passando pelos bsd's, chegando ao Windows, é falta de atenção a pequenos detalhes, talvez tão minúsculos que são ignorados, acredito que todo o sucesso profissional, e maturidade vem desde pequenos logs, até a de um grande firewall, ou um sistema de detecção de intrusos (http://www.linuxbsd.com.br/phpLinuxBSD/modules/artigos_tecnicos/lids.htm) a leitura e o uso de ferramentas como swatch são impreenscidiveis, mas não devemos nos reter somente a elas, podemos usar diferentes programas, ou até criar o nosso, tudo vai do nosso interesse e criatividade. Digo e repito, o swatch é um programa muito bem elaborado, mas reafirmo, não podemos confiar somente em seus resultados, devemos sim interagir e raciocinar ao nosso favor aconselho extremamente a leitura do arquivo INSTALL que acompanha o os binários do swatch, somente assim você poderá ter certeza que o seu sistema estará do seu modo!