Análise de conexões ativas
Publicado por Djair Dutra C. Jr. 13/12/2006
[ Hits: 9.378 ]
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.
#!/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
Informação sobre partições montadas em Xdialog
Organizar seus arquivos por pastas
Configuração de rede wireless (WPA)
Instalando MPlayer no slackware
Montando compartilhamentos windows
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Novos apps de produtividade, avanços em IA e distros em ebulição agitam o universo Linux
Como instalar o repositório do DBeaver no Ubuntu
Como instalar o Plex Media Server no Ubuntu
Digitando underscore com "shift" + "barra de espaços"
Como ativar a lixeira e recuperar aquivos deletados em um servidor Linux
Como mudar o nome de dispositivos Bluetooth via linha de comando
PIP3 - erro ao instalar módulo do mariadb para o Python (9)
É normal não gostar de KDE? (8)
O programa assinador digital (0)
dpkg: erro: gatilho de arquivo duplicado chamado pelo arquivo de nome (6)









