MyIP e plugin Nagios check_myip

Há alguns meses enviei uma mensagem para a lista de discussão Nagios Lab sobre um plugin que acabara de escrever, o check_myip, que tem como propósito reportar o endereço IP público de um host.

Inesperadamente o plugin teve uma aceitação muito maior do que eu esperava e por essa razão escrevi esse artigo falando sobre o plugin, seu funcionamento e um pouco do seu sucesso.

Objetivo

A ideia que deu origem ao plugin é muito simples, e se baseia na seguinte pergunta:

-“Qual é o endereço IP do host que estou monitorando?”

Essa pergunta pode parecer estranha, mas tem um fundamento muito importante, principalmente quando realizamos checagens passivas. Em especial, quando monitoramos equipamentos que estão conectados à Internet por intermédio de links com atribuição de endereçamento IP dinâmico.

É trivial encontrar equipamentos conectados à Internet que façam uso de endereçamento IP dinâmico, e é importante conhecer o endereço dos equipamentos que estão sendo monitorados pelas mais diversas razões, a mais comum é para fins de manutenção por acesso remoto.

Uma vez que o Nagios estiver funcionando com esse plugin o administrador de sistemas terá sempre à mão uma lista atualizada dos endereços IP dos hosts monitorados.

Para que o plugin funcione é necessário que já exista uma estrutura previamente criada, composta por um servidor Nagios e o sistema de envio e recepção de checagens passivas.

Motivação

O que me motivou a criar essa solução foi a necessidade que vários usuários apresentam para mim. Uma vez que tudo estava pronto, disponibilizei para comunidade e tive uma grata surpresa. Poucos minutos depois da divulgação do plugin, ele  já estava sendo usado por algumas pessoas, mas esses números cresceram consideravelmente em poucos dias, sendo que não realizei nenhuma divulgação do trabalho. A utilização do serviço e do plugin foi crescendo pela divulgação dos próprios usuários do sistema.

O anuncio foi feito no dia 30 de maio [NLP], quando divulguei na lista Nagios Lab [NLA]. Neste mesmo dia olhei os logs do servidor e percebi que pouco mais de uma dezena de acessos haviam sido feitos ao serviço e já me dei por satisfeito.

Por não esperar que a solução que desenvolvi tivesse tamanha aceitação só me dei conta do que estava acontecendo dias depois do anuncio. Observando os logs do servidor web que hospeda o serviço, comecei a me deparar com um grande número de conexões que partiam dos mais diferentes lugares e isso chamou muito a minha atenção.

O que originalmente pensei ser um ataque distribuído ao meu site, na verdade era uma grata surpresa, pois muitas requisições já estavam sendo feitas ao sistema de resposta de endereços IP – batizei esse serviço de MyIP.

Vou compartilhar com vocês um pouco das estatísticas de uso do serviço com base nos logs do servidor web que hospeda o serviço.

Estatísticas de uso

A Figura 1 relaciona a quantidade de consultas ao serviço MyIP por dia. Este gráfico mostra um aumento considerável da utilização do serviço a partir do dia 1 de julho, quando a média de 500 consultas diárias saltou para mais de 50.000 consultas por dia. E é empolgante perceber que os dados mostram um sensível crescimento da adesão pelo serviço entre os meses de julho e outubro.

Até o fechamento deste artigo já foram realizadas o total de 7.475.156 consultas no serviço MyIP. O pico de utilização até então foi no dia 20 de outubro, com exatamente 73.685 consultas ao serviço num único dia.

Figura 1: Crescimento de utilização do serviço MyIP.
Figura 1: Crescimento de utilização do serviço MyIP.

Foi constatado um total de 158 endereços IPs distintos consultados durante todo período de existência do serviço. O que mostra uma variação pequena de endereçamento em relação ao tempo de funcionamento do serviço e a quantidade de consultas já realizadas.

A explicação para o fato dos endereços IP serem quase sempre os mesmos está relacionado com os serviços oferecidos pela NET Serviços de Comunicação S. A., que oferece o provisionamento de links Internet sobre cabos de TV. Esse tipo de serviço geralmente associa por um período de tempo um endereço IP ao endereço MAC do hardware do cliente.

O provedor NET é o que possui mais endereços IP consultados no serviço MyIP. A Tabela 1 mostra a relação da quantidade de endereços IP por operadora de telecomunicações.

# IPs Operadora de telecomunicações
61 NET Serviços de Comunicação S.A.
30 TELECOMUNICACOES DE SAO PAULO S.A. – TELESP
13 VIPWay Serviços de Telecomunicaçoes Ltda
8 Claro S/A
8 Telefonica Data S.A.
4 Comercial Cabo TV São Paulo S.A.
2 ASSOC.ESC. SUPERIOR DE PROPAGANDA E MARKETING – SP
2 Banif – Banco Internacional do Funchal (Brasil) SA
2 Brasilsite Telecomunicações Ltda.
2 Directnet Prestacao de Servicos Ltda.
2 EMBRATEL-EMPRESA BRASILEIRA DE TELECOMUNICAÇÕES SA
2 Fotosfera Ltda
2 Global Village Telecom
2 SOUTH CONSULTING SIGNATURE DO BRASIL SOLUÇÕES DE I
2 Spring Wireless (Brasil) Ltda
2 Synthes Industria e Comercio LTDA
2 Universal Telecom S.A.
1 Brasil Telecom S/A – Filial Distrito Federal
1 AUTOFAX TECNOLOGIA EM INFORMACOES COMERCIAIS LTDA
1 Berkley International do Brasil Seguros S/A
1 Cia de Proc. de Dado do Município de Porto Alegre
1 DW7 CENTRO DE DADOS LTDA
1 GLOBAL CROSSING COMUNICAÇÕES DO BRASIL LTDA.
1 LATINIFS TECNOLOGIA DA INFORMAÇÃO S/A
1 Megatelecom Telecomunicacoes Ltda
1 Mister Print Papéis Especiais Ltda.
1 Neovia Telecomunicações S/A
1 SOCIEDADE DE ENSINO SUPERIOR ESTACIO DE SA LTDA
1 Visualbyte Provedor Internet Ltda.
158 Total de endereços IPs únicos

Tabela 1: Endereços IP por operadora de telecomunicações

Para a confecção da Tabela 1 realizei pesquisas no sistema de whois, especificamente no Registro.br, dado que todos os endereços IP consultados são provenientes do Brasil.

Resumo
Total de consultas efetuadas 7.475.156
Pico de utilização do serviço (dia) 73.685
Operadoras diferentes 29
IPs únicos 158

Tabela 2: Resumo das estatísticas

Funcionamento

O check_myip funciona com dois componentes distintos:

  • Plugin – Instalado na máquina monitorada
  • MyIP – Serviço disponibilizado em meu site

O serviço MyIP é oferecido gratuitamente pelo meu site, está disponível no endereço abaixo.

http://pessoa.eti.br/ip/

Esse serviço tem a função de retornar o endereço IP público que está sendo usado pelo host que fez acesso ao endereço acima. Isso é útil para encontrar não só o endereço IP público de hosts conectados à Internet por intermédio de links com endereçamento dinâmico, mas também é útil para detectar o endereço IP público de hosts conectados à Internet por intermédio de uma rede NAT.

O plugin é um programa escrito em Shell Script Bash e está disponível para download no seguinte endereço:

http://pessoa.eti.br/download/check_myip

O check_myip tem a função de acessar o serviço MyIP e traduzir as informações coletadas para serem legíveis ao Nagios.

Então podemos entender que a solução se baseia na arquitetura cliente-servidor, como mostra a Figura 2.

Figura X: Topologia do serviço MyIP com o plugin check_myip
Figura 2: Topologia do serviço MyIP com o plugin check_myip

Integração ao Nagios

O comando NSCA para enviar a checagem passiva ao Nagios está descrito logo abaixo.

OUTPUT=`/home/nagios/plugins/check_myip`; \
echo -e "remotehost\tMyIP\t$?\t$OUTPUT" | \
/usr/sbin/send_nsca -H nagios.example.com -p 5667 \
-c /etc/send_nsca.cfg -to 10

Explicando o comando acima:

  • OUTPUT=`/home/nagios/plugins/check_myip` – Executa o plugin check_myip e atribui o resultado a variavel OUTPUT.
  • echo -e “remotehost\tMyIP\t$?\t$OUTPUT” – Formata as informações que serão enviadas ao Nagios pelo NSCA, os seguintes campos são separados pelo caractere TAB: nome do host, nome do serviço, status do resultado da checagem, informação do resultado da checagem (endereço IP).
  • /usr/sbin/send_nsca -H nagios.example.com -p 5667 -c /etc/send_nsca.cfg -to 10 – Comando de envio das informações de checagem passiva, onde:
    • -H – Nome do servidor nagios.
    • -p – Porta TCP na qual o serviço NSCA está sendo executado.
    • -c – Arquivo de configuração do NSCA.
    • -to – Tempo máximo de envio de mensagem (timeout).

Está bem claro que o comando acima não é nada amigável, e por essa razão muitos administradores de sistemas criam seus próprios scripts para envio de informações de checagem passiva. É importante fazer que o envio de mensagens para o NSCA seja realizado de forma periódica, isso pode ser feito por intermédio do cron.

É necessário configurar o arquivo de objetos do Nagios para que ele receba as checagens passivas provenientes do send_nsca. O exemplo abaixo ilustra uma configuração:

# 'IP' service definition
define service{
    use                generic-service
    host_name            remotehost
    service_description        MyIP
    check_command                   check_dummy!3!'-'
    check_freshness            1
    freshness_threshold        86400
    normal_check_interval        0
    }

Próximos passos

Planejo adicionar algumas funcionalidades ao serviço MyIP. Serão informações adicionais, que poderão ser tratadas pelo Nagios como informações de status ou dados de desempenho, por exemplo:

  • Tempo de resposta do serviço
  • Informações de whois
    • Cidade
    • Estado / Província
    • País
    • Entidade detentora do endereço IP
  • Resolução de nome reverso de DNS

Muitas dessas funcionalidades dependem integralmente do uso de sistemas de whois. Contudo, muitos servidores de whois tem adotado técnicas de rate limit e até mesmo CAPTCHA para fornecer informações, obviamente esses fatores contribuem negativamente para a adição das novas funcionalidades ao sistema.

Considerações finais

Espero que o serviço MyIP seja útil também para você, assim como está sendo útil para checagens dos endereços IP demonstrado nas estatísticas.

Agradeço aos usuários atuais do sistema, assim como já deixo o meu agradecimento aos novos usuários. Coloco-me a disposição para receber criticas e sugestões.

Boa diversão! 🙂

Referências

[NLP] – http://groups.google.com.br/group/nagios-lab/msg/17b9af30930d4b97

[NLA] – http://groups.google.com.br/group/nagios-lab

 

73685

73685

Leave a Reply

%d bloggers like this: