Script de firewall

Publicado por Henrique Vieira Leanor (última atualização em 01/02/2010)

[ Hits: 7.474 ]

Homepage: henriqueinside.blogspot.com

Download 4395.firewall.sh




Script pronto para ser usado em seu firewall.

  



Esconder código-fonte

#!/bin/bash  

## Variáveis
IPT=$(which iptables)
ET0="192.168.1.112"
LO="127.0.0.1"
NET="0/0"
PA="1024:65535"
#-----------------------------------------------------------------------

modulos()
{
echo "### CARREGANDO MÓDULOS ###"
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
}

nega()
{
echo "### FECHANDO O FIREWALL ###"

$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP
}

limpa()
{
echo "### ABRINDO O FIREWALL ###"

$IPT -F
$IPT -F -t nat
$IPT -F -t mangle
$IPT -P INPUT ACCEPT
$IPT -P OUTPUT ACCEPT
$IPT -P FORWARD ACCEPT
}

loop()
{
echo "### LIBERANDO A LOOP BACK ###"

$IPT -A INPUT -i lo -d $LO -j ACCEPT
$IPT -A OUTPUT -o lo -d $LO -j ACCEPT
}

input()
{
echo "### ESTABILIZANDO AS CONEXÕES DE INPUT ###"

$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
}

output()
{
echo "### ESTABILIZANDO AS CONEXÕES DE OUTPUT ###"

$IPT -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

}

forward()
{
echo "### ESTABILIZANDO AS CONEXÕES DE FORWARD ###"

$IPT -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
}

icmps()
{
echo "### LIBERANDO ICMPS ###"

for TIPO in 0 3/0 3/1 3/2 3/3 3/4 4 5 11 12
   do
$IPT -A INPUT -p icmp -s $NET -d $ET0 --icmp-type $TIPO -m limit --limit 1/s -j ACCEPT
done
$IPT -A OUTPUT -p icmp -s $ET0 -d $NET --icmp-type 8 -j ACCEPT
}

pt_cliente_tcp()
{
echo "### LIBERANDO CONEXÕES CLIENTE EM PORTAS TCP ###"

for PORTAS in $(cat /etc/firewall/portas_tcp.txt | grep -v ^#)
   do
$IPT -A OUTPUT -p tcp -m state --state NEW -s $ET0 --sport $PA -d $NET --dport $PORTAS -j ACCEPT
done
}
   
pt_cliente_udp()
{
echo "### LIBERANDO CONEXÕES CLIENTE EM PORTAS UDP ###"

for PORTAS in $(cat /etc/firewall/portas_udp.txt | grep -v ^#)
   do
$IPT -A OUTPUT -p udp -m state --state NEW -s $ET0 --sport $PA -d $NET --dport $PORTAS -j ACCEPT
done
}

pt_adm_tcp()
{
echo "### ATIVANDO CONTROLE DE CONEXÕES REMOTAS DE IP's AUTORIZAODS ###"

for IP in $(cat /etc/firewall/ip_amigos.txt | grep -v ^#)
   do
   for PORTAS in $(cat /etc/firewall/portas_adm.txt | grep -v ^#)
           do
$IPT -A INPUT -p tcp -m state --state NEW -s $IP --sport $PA -d $ET0 --dport $PORTAS -j ACCEPT
   done
done

for PORTAS in $(cat /etc/firewall/portas_adm.txt | grep -v ^#)
   do
$IPT -A INPUT -p tcp -s $NET --sport $PA -d $ET0 --dport $PORTAS -j REJECT --reject-with tcp-reset
done
}

flags_invalidas()
{
echo "### ATIVANDO CONTROLE DE FLAGS INVALIDAS ###"

for FLAGS in $(cat /etc/firewall/flags.txt | grep -v ^#)
   do
   for CHAINS in INPUT FORWARD
         do
$IPT -A $CHAINS -p tcp -d $ET0 -m state --state NEW --tcp-flags $FLAGS $FLAGS -j LOG --log-prefix "FLAG_$FLAGS"

$IPT -A $CHAINS -p tcp -d $ET0 -m state --state NEW --tcp-flags $FLAGS $FLAGS -j DROP
   done
done
}


#-----------------------------------------------------------------------
case $1 in
   start)
   modulos
   nega
   loop
   input
   output
   forward
   icmps
   pt_cliente_tcp
   pt_cliente_udp
   flags_invalidas
   pt_adm_tcp
   echo " ******* FIREWAL ATIVADO ******* "
   ;;
   stop)
   limpa
   echo " ******* FIREWALL DESATIVADO ******* "
   ;;
   filter) $IPT -nL | more
   ;;
   nat) $IPT -nL -t nat | more
   ;;
   mangle) $IPT -nL -t mangle | more
   ;;
   restart) $0 stop
       $0 start
   ;;
   *) echo "erro use $0 {start|stop|filter|nat|mangle|restart}"
      exit 0   
   ;;
esac
exit 1

Scripts recomendados

Criação de servidores de arquivos simples com Samba

Teste de desempenho com números primos em BASH

Compilar OpenSSL

Script de compilação do Xorg 7.2 otimizado para Slackware 64 bits (Slamd64)

Configurando a raiz do seu servidor apache facilmente.


  

Comentários
[1] Comentário enviado por diogoalvez em 02/02/2010 - 12:56h

Fala Henrique tranquiles!!!
Script bacana brother, estou baixando para teste!!!!!

Flww..
Diogo Alvez

[2] Comentário enviado por henrique.inside em 03/02/2010 - 02:33h

rsrs, Ele é muito Bom mesmo, pode ter certeza, estou postando a parte 2 dele... até mais !


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts