Projetinho de firewall
Publicado por Alexandre Bargiela 01/09/2007
[ Hits: 9.508 ]
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 }
pptd - Simples daemon para controle de conexões pptp.
Cluster multi-master com MariaDB 10.1 + Galera
Script que gera um relatório diário do sistema!!!
Criação de pasta com senha no Apache
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
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
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Tem como instalar o gerenciador AMD Adrenalin no Ubuntu 24.04? (21)