Projetinho de firewall
Publicado por Alexandre Bargiela 01/09/2007
[ Hits: 9.812 ]
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
}
POSTFIX AUTOMÁTICO COM MYSQL E IPTABLES - ATUALIZANDO QUOTA
Instalação do Cacti v0.8.7g + Plugins
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
Como implementar Raid (0, 1, 5, 6, 10 e 50)
fusermount3 no Ubuntu 25.10 - mantenha o perfil do AppArmor
[Resolvido] dlopen(): error loading libfuse.so.2 AppImages require FUSE to run.
Criação de diretórios e aplicação de restrições de acesso no Linux
Como programar um sistema de controle para distribuições linux em c? (0)
Compartilhar ZEBRA ZD220 na rede (2)
Como programar um software que seja utilizado para coleta de dados em ... (1)









