Projetinho de firewall

Publicado por Alexandre Bargiela 01/09/2007

[ Hits: 9.569 ]

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.

  



Esconder código-fonte

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

}

Scripts recomendados

Compilação de módulos para VMware 12.5.7 no Fedora 26

Tornando seu Ubuntu uma distro para testes de intrusão

Criar .deb para sua aplicação

upload script

Script de backup interativo


  

Comentários
[1] Comentário enviado por igorcemim em 01/09/2007 - 12:25h

Ai vai uma dica.
Se voce quer manter a compatibilidade:
Nao utilize acentos pois em um computador eles podem aparecer corretamente e em outro podem nao aparecer.
por exemplor máquina ficaria: máquina
e assim por diante.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts