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

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



--- Em seg, 24/5/10, Allison Vollmann <allisonvoll@yahoo.com.br> escreveu:

De: Allison Vollmann <allisonvoll@yahoo.com.br>
Assunto: Re: Script de firewall não funciona, pq ?
Para: debian-user-portuguese@lists.debian.org
Data: Segunda-feira, 24 de Maio de 2010, 15:01

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
 
Você habilitou o forwarding de pacotes no kernel?

Para ter certeza o comando deve retornar "= 1"
# sysctl net.ipv4.ip_forward

(para ipv6: net.ipv6.conf.all.forwarding)

Caso não tenha habilitado você pode setar esta configuração no arquivo
"/etc/sysctl.conf" para persistir ao boot do sistema, e para não
precisar reiniciar pode habilitá-la utilizando o comando sysctl também
(ou da maneira tradicional através do sistema de arquivos proc)

A[]'s

Em 24/5/2010 11:23, hamacker 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;


Ele habilitou sim, é so olhar o script que ele enviou. 








Reply to: