Análise de conexões ativas

Publicado por Djair Dutra C. Jr. 13/12/2006

[ Hits: 9.160 ]

Download analisador




Este script traz as conexões abertas por um IP e informa as portas e IPs usados ao longo das conexões.

Ao criar não achei utilidade, mas depois vi que pode ajudar em certas tarefas. Usei uma vez para detectar um vírus no PC de um cliente que estava abrindo silenciosamente 128 conexões e fazendo uploads de arquivos, deixando a internet lenta.

Espero que possa ajudar a mais alguém também.

  



Esconder código-fonte

#!/bin/sh

######################################################
##### Script para verificação de tráfego na rede #####
##### Desenvolvido por: Djair Dutra C. Jr.       #####
##### djairdutra@hotmail.com                     #####
##### 27/11/2006                                 #####
######################################################

rm -rf destinos

ajuda(){
clear
echo -e '{FONTE}33[40;33;7;1m'"========================== A J U D A =========================="`echo -e '{FONTE}33[40;33;0;1m'`
echo "Após a execução do script informe o ip e os parâmetros desejados:"
echo "Exemplo:"
echo "./analisador ip [ -ips | -portas ]"
echo
echo "Parâmetros:"
echo
echo "-ips      Mostra todos os ips de destino usados nas conexões."
echo "-portas      Mostra todas as portas de destino usadas nas conexões."
echo "-todos      Mostra todos os ips e portas usados nas conexões."
echo
}

start(){

# total_bytes_upload
tbu=0
# total_pacotes_upload
tpu=0
# total_bytes_down
tbd=0
# total_pacotes_download
tpd=0

qtd=`cat /proc/net/ip_conntrack | grep -w $ip | grep ESTABLISHED | grep -c -v ^#`
ativas=`cat /proc/net/ip_conntrack | grep -w $ip | grep -v ^# | grep tcp | grep ESTABLISHED | tr -s ' ' ',' | cut -d , -f 5,6,7,8,9,10,11,12,13,14,15,16`

# Limpando a variável
ativas=`echo $ativas | sed "s/src=//g" | sed "s/dst=//g" | sed "s/dport=//g" | sed "s/sport=//g"| sed "s/packets=//g" | sed "s/bytes=//g"`

clear

for i in `echo $ativas`;do

# Definindo os valores atuais (UPLOAD)
u_ip_origem=`echo $i | cut -d , -f 1`
u_ip_destino=`echo $i | cut -d , -f 2`
u_porta_origem=`echo $i | cut -d , -f 3`
u_porta_destino=`echo $i | cut -d , -f 4`
u_pacotes=`echo $i | cut -d , -f 5`
u_bytes=`echo $i | cut -d , -f 6`
tpu=`expr $tpu + $u_pacotes`
tbu=`expr $tbu + $u_bytes`

# Definindo os valores atuais (DOWNLOAD)
d_ip_origem=`echo $i | cut -d , -f 7`
d_ip_destino=`echo $i | cut -d , -f 8`
d_porta_origem=`echo $i | cut -d , -f 9`
d_porta_destino=`echo $i | cut -d , -f 10`
d_pacotes=`echo $i | cut -d , -f 11`
d_bytes=`echo $i | cut -d , -f 12`
tpd=`expr $tpd + $d_pacotes`
tbd=`expr $tbd + $d_bytes`

echo "$u_ip_destino,$u_porta_destino,$u_bytes,$d_bytes" >> destinos

# Cálculos para KB
KB_d_bytes=`expr $d_bytes "/" 1024`
KB_u_bytes=`expr $u_bytes "/" 1024`

# Cálculos para MB
MB_d_bytes=`expr $d_bytes "/" 1048576`
MB_u_bytes=`expr $u_bytes "/" 1048576`

echo "_________________________________________________________________"
echo "ORIGEM: $u_ip_origem:$u_porta_origem ==> DESTINO $u_ip_destino:$u_porta_destino"
echo "Upload  : `echo -e '{FONTE}33[40;33;1;1m'` ($u_bytes Bytes) ($KB_u_bytes Kbytes) ($MB_u_bytes Mbytes) `echo -e '{FONTE}33[40;33;0;1m'`"
echo "Download: `echo -e '{FONTE}33[40;33;1;1m'` ($d_bytes Bytes) ($KB_d_bytes Kbytes) ($MB_d_bytes Mbytes)`echo -e '{FONTE}33[40;33;0;1m'`"
done

resumo
}

resumo(){

echo -e '{FONTE}33[40;33;7;1m'"========================== R E S U M O =========================="`echo -e '{FONTE}33[40;33;0;1m'`

# Cálculos para KB
KB_tbu=`expr $tbu "/" 1024`
KB_tbd=`expr $tbd "/" 1024`

# Cálculos para MB
MB_tbu=`expr $tbu "/" 1048576`
MB_tbd=`expr $tbd "/" 1048576`

qtdportas=`cat destinos | cut -d , -f 2 | sort | uniq | grep -c -v ^' '`
qtddestinos=`cat destinos | cut -d , -f 1 | sort | uniq | grep -c -v ^' '`
portas=`cat destinos | cut -d , -f 2 | sort | uniq | tr "\n" ' '`
destinos=`cat destinos | cut -d , -f 1 | sort | uniq | tr "\n" '  '`

if [ "$qtd" -gt "1" ]; then
   echo "Existem $qtd conexões ativas do ip $ip."
   echo "Upload Acumulado  : ($tbu Bytes) ($KB_tbu Kbytes) ($MB_tbu Mbytes) - $tpu pacotes"
   echo "Download Acumulado: ($tbd Bytes) ($KB_tbd Kbytes) ($MB_tbd Mbytes) - $tpd pacotes"

elif [ "$qtd" == "1" ]; then
   echo "Existe $qtd conexão ativa do ip $ip."
   echo "Upload Acumulado  : ($tbu Bytes) ($KB_tpu Kbytes) ($MB_tpu Mbytes) - $tpu pacotes"
   echo "Download Acumulado: ($tbd Bytes) ($KB_tbd Kbytes) ($MB_tpd Mbytes) - $tpd pacotes"

elif [ "$qtd" == "0" ]; then
   echo "Não há nenhuma conexão ativa para o ip $ip."
fi
}


ips(){
echo
echo "$qtddestinos IPs de destino usados: $destinos"
}

portas(){
echo
echo "$qtdportas portas de destino usadas: $portas"
}

###############################################################################

# Quantidade de parâmetros passados
parametros="$#"

# Recebendo o ip a ser verificvado
ip="$1"

if [ "$1" == "" ]; then
   ajuda
else
   if [ "$2" == "" ]; then
   start
   
   elif [ "$2" == "-ips" ]; then
   start
   ips
   rm -rf destinos
   
   elif [ "$2" == "-portas" ]; then
   start
   portas
   rm -rf destinos

   elif [ "$2" == "-todos" ]; then
   start
   portas
   ips
   rm -rf destinos

   fi

fi


Scripts recomendados

Backup simples com log de resultado

Dicas e explicações de comandos do Linux - rápidos e reeditáveis

Instalação dos principais programas para um usuário comum

Front-end utilizando o Xdialog para o comando whereis

Multimidia com Zenity


  

Comentários
[1] Comentário enviado por alaxricard em 06/06/2010 - 09:14h

não aconteceu nada amigo dar uma verificada ai neste seu Script amigo.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts