Projetinho de firewall
Publicado por Alexandre Bargiela 01/09/2007
[ Hits: 9.490 ]
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 }
Firewall com proxy transparente completo
Vou voltar moderar conteúdos de Dicas e Artigos (0)
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Vou voltar moderar conteúdos de Dicas e Artigos (0)
Instalação Uefi com o instalador clássico do Mageia (0)
É cada coisa que me aparece! - não é só 3% (2)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta