Monitoramento de portas com netcat
Bom, venho neste artigo compartilhar um pouco meu conhecimento em administração de servidores com Linux. O artigo consiste no uso do netcat (nc) para monitoramento de portas ativas. Criaremos um script para monitoramento de portas e outro para alerta ao administrador via e-mail.
Iniciando
Bom, venho neste artigo compartilhar um pouco de meu conhecimento
em administração de servidores Linux. O artigo consiste no
uso do netcat (nc) para monitoramento de portas ativas.
Lendo primeiramente o artigo do nosso amigo tzbishop teremos então um base para a utilização do netcat:
Porém vamos usá-lo de outra forma, vamos somente monitorar os serviços criando alguns scripts.
Nesse artigo vamos usar o diretório /scripts/check para criá-los:
# mkdir -p /scripts/check
Em seguida vamos criar nosso primeiro shell script, o de checagem que se chamará check.sh:
Lendo primeiramente o artigo do nosso amigo tzbishop teremos então um base para a utilização do netcat:
Porém vamos usá-lo de outra forma, vamos somente monitorar os serviços criando alguns scripts.
Nesse artigo vamos usar o diretório /scripts/check para criá-los:
# mkdir -p /scripts/check
Em seguida vamos criar nosso primeiro shell script, o de checagem que se chamará check.sh:
#!/bin/bash
ncmd="/usr/bin/nc -z -w 20"
m1="192.168.0.1"
p3128="3128" # porta do squid
# Servidor Linux
echo "Testando porta do squid..."
$ncmd $m1 $p3128 > /dev/null 2>&1
if [ $? != 0 ] ; then
echo "Serviço do servidor Linux ($m1) porta $p3128 FALHOU"
else echo "Serviço do servidor Linux ($m1) porta $p3128 OK"
fi
echo finalizando teste no servidor Linux.
ncmd="/usr/bin/nc -z -w 20"
m1="192.168.0.1"
p3128="3128" # porta do squid
# Servidor Linux
echo "Testando porta do squid..."
$ncmd $m1 $p3128 > /dev/null 2>&1
if [ $? != 0 ] ; then
echo "Serviço do servidor Linux ($m1) porta $p3128 FALHOU"
else echo "Serviço do servidor Linux ($m1) porta $p3128 OK"
fi
echo finalizando teste no servidor Linux.
Salve este arquivo dentro do diretório scripts/check e em seguida dê permissão de execução para ele:
# chmod +x check.sh
Depois pode testá-lo digitando:
#./check
Se o serviço estiver ativo deve aparecer algo igual a:
Testando porta do squid...
Serviço do servidor Linux (192.168.0.1) porta 3128 OK
finalizando teste no servidor Linux.
Você pode incluir mais entradas no arquivo check.sh, isto vai ficando a critério do administrador.
Só queria fazer um breve comentário... Desde que se tenha criatividade, pode-se fazer muita coisa com netcat, desde a sistema de transferencias de arquivos de um ponto a outro até um man-in-the-middle.
No entanto, em se falando de "varredura" por servicos, o nmap da um show a parte. Ou seja, pelo que eu entendi, o script que você colocou no seu artigo tenta fazer uma conexão na porta do serviço (certo? me corrija se eu tiver errado)... Se ele não estabelecer a conexão, entende-se que o sistema está com problemas. Porém pode acontecer de um servico ter problemas adversos E permitir uma nova conexão, por exemplo, ter um loop *infinito*/muito grande (problema relativamente comum em servidores MySQL 4) que inutiliza o serviço - Em algumas vezes o serviço se re-esbelece automaticamente, em outros casos não.
Nesse caso, além de testar uma conexão pra porta do servico, você precisa testá-lo (fazendo algum tipo de requisicao e analizar a resposta) para ter um pouco mais de segurança.
[]'s
Ragen