Projetinho de firewall
Publicado por Alexandre Bargiela 01/09/2007
[ Hits: 9.748 ]
Download firewall-project.tar.gz
Pessoal, eu juntamente com um amigo, o Leandro, estávamos criando esse projeto para facilitar a adição de regras de firewall para usuários leigos e por questão de tempo dei uma paradinha.
Se vocês quiserem ajudar com idéias ou implementações, eu agradeço.
Abraço a todos e espero ter ajudado.
Obs.: Execute o main para funcionar.
OBS.: Eu apenas adicionei aqui o que tem em cada arquivo, caso você tente copiar esse arquivo e jogar em um arquivo só não irá funcionar, a não ser que você faça implementações para isso, para executar ele corretamente, baixe o arquivo .tar descompacte e execute a main, da seguinte forma sh main
#!/bin/bash
. inputOutputForward
. prerouting
. postrouting
function addRegra(){
clear
echo "Escolha a tabela a ser usada"
echo ""
echo "1 - INPUT/OUTPUT/FORWARD (Ao escolher INPUT você estará liberando a ENTRADA ou SAÃDA ou ENCAMINHAMENTO de qualquer pacote na porta/endereço liberada em seu computador.)"
echo ""
echo "2 - PREROUTING (Ao escolher PREROUTING vc estará redirecionando de seu IP válido para uma máquina da sua rede interna um serviço que ela deseje disponibilizar.)"
echo ""
echo "3 - POSTROUTING (Ao escolher POSTROUTING vc estará mascarando a saida de um IP frio de sua maquina/rede para sair com o IP válido e roteavel na internet.)"
read TABLE
#Faz o tratamento se o valor for maior que o de opções existentes para a escolha
#ele para
echo ""
if [ $TABLE -gt 3 ]; then
echo "Você deve digitar uma opção válida de 1 à 5";
fi
if [ $TABLE -eq 1 ]; then
inputOutputForward;
elif [ $TABLE -eq 2 ]; then
escolhePrerouting;
elif [ $TABLE -eq 3 ]; then
postrouting;
fi
}
#!/bin/bash
. wizard;
. addRegra;
. sair;
function escolha(){
clear
echo "O que você deseja fazer?"
echo ""
echo "1 - Wizard [Configure seu firewall rapidamente]"
echo "2 - Adicionar uma regra [ Adicione regras de ENTRADA/SAIDA/ENCAMINHAMENTO/MASCARAMENTO/REDIRECIONAMENTO ]"
echo "3 - Sair"
read OPCAO
if [ $OPCAO -eq 1 ]; then
wizard;
elif [ $OPCAO -eq 2 ]; then
addRegra;
elif [ $OPCAO -eq 3 ]; then
sair;
fi
}#!/bin/bash
function execWizard(){
clear
ipt=/sbin/iptables
echo "O wizard vem com a politica DEFAULT DROP, ou seja ele bloqueia todas as portas e você pode usar esse mesmo script para ir liberando elas."
echo ""
echo "Adicione seu IP válido, caso não saiba consulte em www.meuip.com.br [obs.: Se seu IP é dinâmico, essas regras valerão apenas até o IP ser alterado.]"
read eth1
$ipt -P FORWARD DROP
$ipt -P INPUT DROP
$ipt -P OUTPUT DROP
#libera localhost para all
$ipt -A INPUT -s 127.0.0.1 -d 0/0 -j ACCEPT
$ipt -A OUTPUT -d 127.0.0.1 -j ACCEPT
#libera net para server
$ipt -A OUTPUT -p tcp $eth1 -j ACCEPT
$ipt -A OUTPUT -p udp $eth1 -j ACCEPT
#libera protocolo icmp server all
$ipt -A OUTPUT -p icmp -d 0/0 -j ACCEPT
$ipt -A INPUT -p icmp -d 0/0 -j ACCEPT
exit 1
}
#!/bin/bash
function iniciaModulo(){
modprobe iptable_nat
modprobe ip_conntrack_ftp
modprobe iptable_filter
#habilita forward
echo '1' > /proc/sys/net/ipv4/ip_forward
}#!/bin/bash
function inputOutputForward(){
clear
echo "Escolha qual tabela você deseja usar"
echo "1 - INPUT [ Regras de entrada no firewall ]"
echo "2 - OUTPUT [ Regras de saÃda do firewall ]"
echo "3 - FORWARD [ Regras para encaminhamento do firewall ]"
read TABLE
if [ $TABLE -gt 3 ]; then
echo "Você deve digitar uma opção válida de 1 à 3";
fi
if [ $TABLE -eq 1 ]; then
TABLE=INPUT
elif [ $TABLE -eq 2 ]; then
TABLE=OUTPUT
elif [ $TABLE -eq 3 ]; then
TABLE=FORWARD
fi
echo "Digite o endereço de origem se todos use 0/0"
read SRC
echo "Digite o endereço de destino se todos use 0/0"
read DST
echo "Qual protocolo você deseja usar?"
echo "1 - tcp"
echo "2 - udp"
read PROTO
if [ $PROTO -gt 2 ]; then
echo "Você deve digitar uma opção válida entre 1 e 2";
fi
if [ $PROTO -eq 1 ]; then
PROTO=tcp
elif [ $PROTO -eq 2 ]; then
PROTO=udp
fi
echo "Digite a porta que você deseja liberar a entrada ex.: 80(porta http)"
read PORT
echo "Digite a Chain "
echo "1 - ACCEPT"
echo "2 - DROP"
echo "3 - REJECT"
read CHAIN
if [ $CHAIN -gt 3 ]; then
echo "Você deve digitar uma opção válida entre 1 e 2";
fi
if [ $CHAIN -eq 1 ]; then
CHAIN=ACCEPT
elif [ $CHAIN -eq 2 ]; then
CHAIN=DROP
elif [ $CHAIN -eq 3 ]; then
CHAIN=REJECT
fi
echo "Qual a prioridade dessa regra?"
echo "1 - alta"
echo "2 - baixa"
read PRIO
if [ $PRIO -gt 2 ]; then
echo "Você deve digitar uma opção válida entre 1 e 2";
fi
if [ $PRIO -eq 1 ]; then
PRIO="I"
elif [ $PRIO -eq 2 ]; then
PRIO="A"
fi
/sbin/iptables -$PRIO $TABLE -s $SRC -d $DST -p $PROTO --dport $PORT -j $CHAIN
echo "Regra criada com sucesso para vizualiza-la digite iptables-save"
exit 1
}
#!/bin/bash
########################
# Script by #
# Alexandre Bargiela #
# Leandro Ardisson #
########################
. SuperUser
. iniciaModulo
. escolha
. wizard
. inputOutputForward
. prerouting
. postrouting
. sair
SuperUser
iniciaModulo
escolha
wizard
inputOutputForward
prerouting
postrouting
sair#!/bin/bash
function postrouting(){
echo "Digite o endereço de origem se todos use 0/0"
read SRC
echo "Digite o endereço de destino se todos use 0/0"
read DST
echo "Qual protocolo você deseja usar?"
echo "1 - tcp"
echo "2 - udp"
read PROTO
if [ $PROTO -gt 2 ]; then
echo "Você deve digitar uma opção válida entre 1 e 2";
fi
if [ $PROTO -eq 1 ]; then
PROTO=tcp
elif [ $PROTO -eq 2 ]; then
PROTO=udp
fi
echo "Digite a porta que você deseja liberar a entrada ex.: 80(porta http)"
read PORT
echo "Qual a prioridade dessa regra?"
echo "1 - alta"
echo "2 - baixa"
read PRIO
if [ $PRIO -gt 2 ]; then
echo "Você deve digitar uma opção válida entre 1 e 2";
fi
if [ $PRIO -eq 1 ]; then
PRIO="I"
elif [ $PRIO -eq 2 ]; then
PRIO="A"
fi
iptables -$PRIO FORWARD -p $PROTO -s $SRC -d $DST -j ACCEPT
iptables -$PRIO FORWARD -p $PROTO -d $DST -s $SRC -j ACCEPT
iptables -t nat -$PRIO POSTROUTING -s $SRC -d $DST -p $PROTO --dport $PORT -j MASQUERADE
exit 1
}
#!/bin/bash
. preroutingEnd
. preroutingPort
function escolhePrerouting(){
echo "Qual tipo de Redirecionamento você deseja fazer"
echo ""
echo "1 - Redirecionamento de portas apenas ex.: 80 redireciona para 3128"
echo "2 - Redirecionamento de IP:porta ex.: 200.1.2.3:80 redireciona para 192.168.0.1:3128"
read ESCOLHA
if [ $ESCOLHA -gt 2 ]; then
echo "Você deve digitar uma opção válida entre 1 e 2";
fi
if [ $ESCOLHA -eq 1 ];then
preroutingPort;
elif [ $ESCOLHA -eq 2 ]; then
preroutingEnd;
fi
}
#!/bin/bash
function preroutingEnd(){
echo "Digite o endereço de origem (Esse IP geralmente é seu IP válido se não sabe qual é entre em www.meuip.com.br e consulte)."
read SRC
echo "Digite o endereço de destino, é a máquina interna aonde será redirecionado o serviço ex.: 192.168.0.10"
read DST
echo "Qual protocolo você deseja usar?"
echo "1 - tcp"
echo "2 - udp"
read PROTO
if [ $PROTO -gt 2 ]; then
echo "Você deve digitar uma opção válida entre 1 e 2";
fi
if [ $PROTO -eq 1 ]; then
PROTO=tcp
elif [ $PROTO -eq 2 ]; then
PROTO=udp
fi
echo "Digite a porta que de origem ex.: 80(porta http)"
read SPORT
echo "Digite a porta que de Destino ex.: 8080(porta redir para o http)"
read DPORT
if [ $CHAIN -gt 3 ]; then
echo "Você deve digitar uma opção válida entre 1 e 2";
fi
echo "Qual a prioridade dessa regra?"
echo "1 - alta"
echo "2 - baixa"
read PRIO
if [ $PRIO -gt 2 ]; then
echo "Você deve digitar uma opção válida entre 1 e 2";
fi
if [ $PRIO -eq 1 ]; then
PRIO="I"
elif [ $PRIO -eq 2 ]; then
PRIO="A"
fi
#iptables -t nat -A PREROUTING -p tcp -m multiport -s 192.168.1.0/24 --dport 80,443 -j REDIRECT --to-ports 3128
iptables -t nat -$PRIO PREROUTING -p $PROTO -s $SRC --dport $SPORT -j DNAT --to $DST:$DPORT
exit 1
}#!/bin/bash
function preroutingPort(){
echo "Adicione a interface de origem que ele deve redirecionar ex.: eth0"
read INTER
echo "Qual protocolo você deseja usar?"
echo "1 - tcp"
echo "2 - udp"
read PROTO
if [ $PROTO -gt 2 ]; then
echo "Você deve digitar uma opção válida entre 1 e 2";
fi
if [ $PROTO -eq 1 ]; then
PROTO=tcp
elif [ $PROTO -eq 2 ]; then
PROTO=udp
fi
echo "Digite a porta que de origem ex.: 80(porta http)"
read SPORT
echo "Digite a porta que de Destino ex.: 3128 [porta redir para o squid(proxy)]"
read DPORT
echo "Qual a prioridade dessa regra?"
echo "1 - alta"
echo "2 - baixa"
read PRIO
if [ $PRIO -gt 2 ]; then
echo "Você deve digitar uma opção válida entre 1 e 2";
fi
if [ $PRIO -eq 1 ]; then
PRIO="I"
elif [ $PRIO -eq 2 ]; then
PRIO="A"
fi
iptables -t nat -$PRIO PREROUTING -p $PROTO -i $INTER --dport $SPORT -j REDIRECT --to-port $DPORT
exit 1
}#!/bin/bash
function sair(){
exit 1
}#!/bin/bash
function SuperUser(){
if [ $UID != 0 ]; then
echo "##################################################################"
echo "# Você precisa estar logado como root para executar esse script. #"
echo "##################################################################"
exit 1
fi
}
#!/bin/bash
. execWizard
function wizard(){
if [ -f /var/run/wizard.pid ]; then
echo "wizard já executado"
echo ""
echo "Deseja executar o wizard novamente? sim ou não"
read EXEC
if [ $EXEC = 1 ]; then
execWizard;
fi
else
touch /var/run/wizard.pid
execWizard
fi
exit 1
}
Instalação automática do Nagios
O que fazer após instalar o Debian 8 - versão em Shell Script
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
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
Alternativas ao Multilogin para gerenciamento de múltiplas contas/prof... (0)
Captação de áudio no zorin linux começa a diminuir com o tempo (0)
dpkg: erro: gatilho de arquivo duplicado chamado pelo arquivo de nome (0)
estou na 22.1 e não é atualizado pra 22.4 via "sudo full-upgrade&... (6)









