#!/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