[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Script de firewall não funciona, pq ?



Olá hamacker.

Não li todo seu script, mas antes disso faça um teste.

Quando eu escrevi um script iptables pro meu roteador, tive que criar
uma nova chain e inserir nessa nova chain as chains INPUT e FORWARD,
como:

$iptables -N FIREWALL
$iptables -A INPUT -j FIREWALL
$iptables -A FORWARD -j FIREWALL

E todas as regras você escreve pra chain FIREWALL.

Dá uma tentada nisso antes de darmos mais um passo.

Atenciosamente,
Allan Carvalho

Em 24 de maio de 2010 11:23, hamacker <sirhamacker@gmail.com> escreveu:
> Olá pessoal, será que seria possivel uma mãozinha aqui :
> Estou desenvolvendo um script para firewall que bloqueia/libera
> portas, dá acesso transparente a alguns ips, etc...
> O script funciona perfeitamente no servidor onde coloco, porém quando
> vou a uma estação e ponho tal servidor como gateway simplesmente não
> funciona.
> Sei que tá funcionando porque faço um ssh neste servidor e as regras
> alí estão funcionando sem problemas, além disso, coloquei até um
> proxy lá e com o proxy tá funcionando.
> Vou colar aqui o script, só em suas regras e se alguem for ninja em
> iptables e puder me dizer qual é o problema, eu seria muito grato.
>
> Gostaria de dizer que comentei todas as linhas para depurar e mesmo
> que eu dê um :
> $IPTABLES -t nat -A POSTROUTING  -o $WAN -j MASQUERADE
>
> para mascarar tudo, não adianta.
>
> Falha com DNS estão descartados.
> Qualquer ajuda será bem vinda.
>
> #
> # Inicio do Script
> #
>
> # Declaração de variaveis
> IPTABLES="/sbin/iptables"
> FWDIR="$FIREWALL/config"
>
> # criando arquivos importantes para servirem de samples
> . /home/servidor/fw-scripts/firewall.files
>
> # Interfaces de Rede
> # Se precisar mudar a ordem das placas fisicamente, entao
> # edite o arquivo :
> # /etc/udev/rules.d/70-persistent-net.rules
> LAN=eth1
> WAN=eth0
> REDE_INTERNA="192.168.0.0/16"
>
> # Os diversos módulos do iptables são chamdos através do modprobe
> modprobe ip_tables
> modprobe iptable_nat
> modprobe ip_conntrack
> modprobe ip_conntrack_ftp
> modprobe ip_nat_ftp
> modprobe ipt_LOG
> modprobe ipt_REJECT
> modprobe ipt_MASQUERADE
> modprobe ipt_state
> modprobe ipt_multiport
> modprobe iptable_mangle
> modprobe ipt_tos
> modprobe ipt_limit
> modprobe ipt_mark
> modprobe ipt_MARK
>
> # Mensagem de inicialização do script
> echo "########################################"
> echo "# Script de Firewall - v2010.05   by Hamacker    #"
> echo "########################################"
>
> $IPTABLES -F
> $IPTABLES -F INPUT
> $IPTABLES -F OUTPUT
> $IPTABLES -F FORWARD
> $IPTABLES -t mangle -F
> $IPTABLES -t nat -F
> $IPTABLES -X
>
> $IPTABLES -P INPUT DROP
> $IPTABLES -P OUTPUT ACCEPT
> $IPTABLES -P FORWARD DROP
>
> echo "Ativando o redirecionamento entre as placas de rede (ip_forward)"
> echo "1" > /proc/sys/net/ipv4/ip_forward
>
> echo "Ativando entrada/saida da interface de loopback"
> $IPTABLES -I INPUT -i lo -j ACCEPT
> $IPTABLES -I OUTPUT -o lo -j ACCEPT
>
> echo "Liberando portas do servidor ($WAN):"
> while read LINHA ; do
>  PORTA=`semremarks "$LINHA"`
>  if [ "$PORTA" != "" ] ; then
>    echo -e "\tPorta : $PORTA"
>    $IPTABLES -A INPUT -p tcp --dport $PORTA -j ACCEPT
>    $IPTABLES -A FORWARD -p tcp --dport $PORTA -j ACCEPT
>    $IPTABLES -A OUTPUT -p tcp --sport $PORTA -j ACCEPT
>  fi
> done <"$LISTA_PORTAS_LIBERADAS"
> $IPTABLES -I INPUT -m state --state ESTABLISHED -j ACCEPT
> $IPTABLES -I INPUT -m state --state RELATED -j ACCEPT
> $IPTABLES -I OUTPUT -p icmp -o $WAN -j ACCEPT
> $IPTABLES -I INPUT -p icmp -j ACCEPT
>
> echo "Redirecionando portas ($WAN) a outros servidores :"
> while read LINHA ; do
>  i=`semremarks "$LINHA"`
>  if [ "$i" != "" ] ; then
>    REDIPROTO=`echo $i | cut -d ';' -f 1` #recebe o protocolo a ser
> redirecionado
>    REDIPORTA=`echo $i | cut -d ';' -f 2` #recebe a porta a ser redirecionado
>    REDIP=`echo $i | cut -d ';' -f 3` #recebe o ip a ser redirecionado
>    REDISERVICO=`echo $i | cut -d ';' -f 4` #recebe o nome do serviço
>    REDIHOST=`echo $i | cut -d ';' -f 5` #recebe o nome do host
>    echo -e "\t$WAN:$REDIPORTA($REDISERVICO) ->$REDIP($REDIHOST)"
>    $IPTABLES -A FORWARD -p $REDIPROTO --dport $REDIPORTA -j ACCEPT
>    $IPTABLES -t nat -A PREROUTING -p $REDIPROTO -i $WAN --dport
> $REDIPORTA -j DNAT --to $REDIP
>  fi
> done <"$LISTA_REDIRECIONAMENTOS"
>
> echo "Bloqueando MacAddr da lista $LISTA_MACLIST_BLOQUEADOS :"
> echo "(este bloqueio precede outras permissoes)"
> while read LINHA ; do
>  MACSOURCE=`semremarks "$LINHA"`
>  if [ "$MACSOURCE" != "" ] ; then
>    echo -e "\tBloqueado MacAddr:$LINHA"
>    $IPTABLES -t filter -A FORWARD -m mac --mac-source $MACSOURCE -j DROP
>    $IPTABLES -t filter -A INPUT -m mac --mac-source $MACSOURCE -j DROP
>    #$IPTABLES -t filter -A PREROUTING -m mac --mac-source $MACSOURCE -j DROP
>  fi
> done < "$LISTA_MACLIST_BLOQUEADOS"
>
> echo "Liberando IPs/Sites com acesso transparente e direito"
> while read LINHA ; do
>  LIBERAR_SITE=`semremarks "$LINHA"`
>  if [ "$LIBERAR_SITE" != "" ] ; then
>     echo -e "\tSite transparente : $LINHA"
>     $IPTABLES -t nat -A POSTROUTING -s $REDE_INTERNA -d $LIBERAR_SITE
> -j MASQUERADE
>  fi
> done <"$SQUIDACL/sites_diretos.txt"
>
> echo "Liberando IPs transparentes fixos a partir de
> $LISTA_IP_TRANSPARENTES_FIXO"
> while read LINHA ; do
>  LIBERAR_IP=`semremarks "$LINHA"`
>  if [ "$LIBERAR_IP" != "" ] ; then
>     echo -e "\tIP transparente [fixo] : $LINHA"
>     $IPTABLES -t nat -A POSTROUTING -s $LIBERAR_IP -j MASQUERADE
>  fi
> done <"$LISTA_IP_TRANSPARENTES_FIXO"
>
> echo "Liberando IPs transparentes temporarios a partir de
> $LISTA_IP_TRANSPARENTES_TEMP"
> while read LINHA ; do
>  LIBERAR_IP=`semremarks "$LINHA"`
>  if [ "$LIBERAR_IP" != "" ] ; then
>     echo -e "\tIP transparente [temp] : $LINHA"
>     $IPTABLES -t nat -A POSTROUTING -s $LIBERAR_IP -j MASQUERADE
>  fi
> done <"$LISTA_IP_TRANSPARENTES_TEMP"
>
> echo "Bloqueando o acesso de nossa rede a algumas redes externas :"
> while read LINHA ; do
>  SITE=`semremarks "$LINHA"`
>  if [ "$SITE" != "" ] ; then
>    echo -e "\tSite :$SITE"
>    $IPTABLES -t filter -A FORWARD -s $REDE_INTERNA -d $SITE -j DROP
>    $IPTABLES -t filter -A FORWARD -s $SITE -d $REDE_INTERNA -j DROP
>    $IPTABLES -t filter -A INPUT -s $SITE -j DROP
>    $IPTABLES -t filter -A OUTPUT -d $SITE -j DROP
>  fi
> done <"$LISTA_SITES_NEGADOS"
>
> echo "Bloqueando algumas de portas :"
> while read LINHA ; do
>  PORTA=`semremarks "$LINHA"`
>  if [ "$i" != "" ] ; then
>    echo -e "\tPorta :$i"
>    $IPTABLES -A INPUT -p tcp -i $WAN --dport $PORTA -j DROP
>    $IPTABLES -A INPUT -p udp -i $WAN --dport $PORTA -j DROP
>    $IPTABLES -A FORWARD -p tcp --dport $PORTA -j DROP
>  fi
> done <"$LISTA_PORTAS_BLOQUEADAS"
>
> exit 0;
>
>
> --
> To UNSUBSCRIBE, email to debian-user-portuguese-REQUEST@lists.debian.org
> with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
> Archive: AANLkTilpFkvJF2AqKIoEJ0Z5xEgPkSRv_4L3yut9dCM2@mail.gmail.com">http://lists.debian.org/AANLkTilpFkvJF2AqKIoEJ0Z5xEgPkSRv_4L3yut9dCM2@mail.gmail.com
>
>


Reply to: