Script de firewall
Publicado por Henrique Vieira Leanor (última atualização em 01/02/2010)
[ Hits: 7.313 ]
Homepage: henriqueinside.blogspot.com
Script pronto para ser usado em seu firewall.
#!/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
POSTFIX AUTOMÁTICO COM MYSQL E IPTABLES - RESUMO DE MSGS COM VIRUS
Criação de unidades criptografadas
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Opções secretas em tema do Cinnamon
Como mapear unidade de rede no Linux
Como quebrar senha usando john the ripper
Alguém já testou o novo COSMIC Desktop? O que achou? (5)
Alguém pode me indicar um designer freelancer? [RESOLVIDO] (2)
Por que passar nas disciplinas da faculdade é ruim e ser reprovado é b... (2)









