#!/bin/bash
#Controle de Ping
#==============================================================================           
#variaveis e arquivos
dir=/scripts
porta_udp=$dir/udp.txt
porta_tcp=$dir/tcp.txt
 
IPT=/sbin/iptables
PING=/bin/ping
CAT=/bin/cat
CUT=/usr/bin/cut
HEAD=/usr/bin/head
TAIL=/usr/bin/tail
AWK=/usr/bin/awk
GREP=/bin/grep
host=XXX.XXX.X.X
tempochecagem=600
temporesposta=10
 
#fecha porta UDP fixa
fechaportaudp(){
 
nroportas=1
 
portas=`$CAT $porta_udp | $HEAD -n $1 | $TAIL -n 1`
totalportas=`$CAT $porta_udp | $AWK -F ";" '{print NF}'`
 
echo "Total de portas UDP - $totalportas" >> /tmp/debug
 
while [ $nroportas -le $totalportas ]; do
 
porta=`echo $portas | $CUT -d ';' -f $nroportas`
 
echo "Fechando porta UDP - checagem $1 - $porta"
#$IPT -A FORWARD -s 0/0 -p tcp --dport $porta -j DROP
 
nroportas=$(($nroportas+1))
 
done
}
 
#fecha porta TCP fixa
fechaportatcp(){
 
nroportas=1
 
portas=`$CAT $porta_tcp | $HEAD -n $1 | $TAIL -n 1`
totalportas=`$CAT $porta_tcp | $AWK -F ";" '{print NF}'`
 
echo "Total de portas TCP - $totalportas" >> /tmp/debug
 
while [ $nroportas -le $totalportas ]; do
 
porta=`echo $portas | $CUT -d ';' -f $nroportas`
 
echo "Fechando porta TCP - checagem $1 - $porta"
#$IPT -A FORWARD -s 0/0 -p tcp --dport $porta -j DROP
 
nroportas=$(($nroportas+1))
 
done
}
 
#abre porta UDP fixa
abreportaudp(){
 
nroportas=1
 
portas=`$CAT $porta_udp | $HEAD -n $1 | $TAIL -n 1`
totalportas=`$CAT $porta_udp | $AWK -F ";" '{print NF}'`
 
echo "Total de portas UDP - $totalportas" >> /tmp/debug
 
while [ $nroportas -le $totalportas ]; do
 
porta=`echo $portas | $CUT -d ';' -f $nroportas`
 
echo "Abrindo porta UDP - checagem $1 - $porta"
#$IPT -D FORWARD -s 0/0 -p tcp --dport $porta -j DROP
 
nroportas=$(($nroportas+1))
 
done
}
 
#abre porta tcp fixa
abreportatcp(){
 
nroportas=1
 
portas=`$CAT $porta_tcp | $HEAD -n $1 | $TAIL -n 1`
totalportas=`$CAT $porta_tcp | $AWK -F ";" '{print NF}'`
 
echo "Total de portas TCP - $totalportas" >> /tmp/debug
 
while [ $nroportas -le $totalportas ]; do
 
porta=`echo $portas | $CUT -d ';' -f $nroportas`
 
echo "Abrindo porta TCP - checagem $1 - $porta"
#$IPT -D FORWARD -s 0/0 -p tcp --dport $porta -j DROP
 
nroportas=$(($nroportas+1))
 
done
}
 
#========================================================================
#INICIO DA VERIFICACAO
 
#maior q
 
nrochecagem=1
totalchecagens=3
 
while [ $(($nrochecagem)) -le $(($totalchecagens)) ]; do
 
echo "Executando - checagem $nrochecagem - total:$totalchecagens"
TTL=`$PING -c 5 $host | $GREP avg | $CUT -d = -f 2 | $CUT -d \/ -f 2 | $CUT -d . -f 1`
echo " "
echo "veja o tempo medio desta passagem tempo medio = $TTL "
echo " "
 
portasC=`$CAT $porta_tcp | $HEAD -n $nrochecagem | $TAIL -n 1`
echo "Portas da checagem $nrochecagem - $portasC"
portaC=`echo $portasC | $CUT -d ';' -f $nrochecagem`
echo "Porta a ser verificada checagem $nrochecagem - $portaC"
$IPT -L | $GREP $portaC > /tmp/controle.txt
 
if [ $(($TTL)) -gt $(($temporesposta)) ]; then
 
  echo "PING no Host $host lento"
  if [ -s /tmp/controle.txt ]; then
    #Ja estao sendo bloqueadas as portas
    echo "Portas ja Bloqueadas"
  else
    #Sem bloqueio -> bloquear
    echo "Fechando portas - checagem $nrochecagem"
    fechaportaudp $nrochecagem
    fechaportatcp $nrochecagem
  fi
 
else
 
  if [ -s /tmp/controle.txt ]; then
    #Estao sendo bloqueadas as portas
    echo "Abrindo portas - checagem $nrochecagem"
    abreportatcp $nrochecagem
    abreportaudp $nrochecagem
  else
    #Sem bloqueio -> Deixa como esta
    echo "sem bloqueio -> deixa como esta"
  fi
 
fi
 
nrochecagem=$(($nrochecagem + 1))
 
done