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

2010-05-25 Por tôpico Junior Polegato - Linux

Olá,

Entrei na conversa agora, então me desculpe se estiver 
repetindo alguma coisa. Com seu firewall configurado, execute 
iptables-save para ver o que realmente está configurado e quais as 
regras em cada tabela, dando então para analisar um pacote, não esqueça 
de verificar suas rotas com route e interfaces com ifconfig. Use 
iptables -t  -L -v para ver quantos pacotes estão "morrendo" em 
cada regra e quais regras não estão sendo atingidas.


Uma dica para iniciar é começar com o bloqueio do INPUT e 
FORWARD na filter, fazer a regra do FORWARD para rede local nos dois 
sentidos, na nat fazer o MASQUERADE além do "echo 1 > 
/proc/sys/net/ipv4/ip_forward", se isso estiver funcionando, vai 
colocando as regras pertinentes e depois automatize isso por script, 
assim dá para entender melhor regra por regra e se alguma está afetando 
o andamento do firewall.



[]'s
  Junior Polegato




--
To UNSUBSCRIBE, email to debian-user-portuguese-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/4bfbcb42.1040...@juniorpolegato.com.br



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

2010-05-24 Por tôpico hamacker
Pois é, é outros também fizeram algumas sugestões.

Gostaria, se for possivel, que você pudesse acessar este link :
http://pastebin.com/A4hQSrLu

E fizesse as modificações sugeridas.
Daí já testo o efeito delas.

2010/5/24 Allan Carvalho :
> Hamacker, você criou a nova chain como recomendei?
>
> Atenciosamente,
> Allan carvalho
>
> 2010/5/24 hamacker :
>> nada.
>>
>> 2010/5/24 Anderson Silva :
>>>
>>>
>>> 2010/5/24 hamacker 

 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

>>>
>>> Olá Hamacker
>>> Experimente colocar as seguintes regras logo após estas acima:
>>> $IPTABLES -I FORWARD -i $LAN -j ACCEPT
>>> $IPTABLES -I FORWARD -i $LAN  -o $WAN -m state --state ESTABLISHED,RELATED
>>> -j ACCEPT
>>
>>
>> --
>> To UNSUBSCRIBE, email to debian-user-portuguese-requ...@lists.debian.org
>> with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
>> Archive: 
>> http://lists.debian.org/aanlktincrrky3wiivn9pd10gfefmrfs9m3wemnl7z...@mail.gmail.com
>>
>>
>


--
To UNSUBSCRIBE, email to debian-user-portuguese-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: 
http://lists.debian.org/aanlktikrsuvt6imyflxlc5vracs9i9ebzfxurggbi...@mail.gmail.com



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

2010-05-24 Por tôpico Allan Carvalho
Hamacker, você criou a nova chain como recomendei?

Atenciosamente,
Allan carvalho

2010/5/24 hamacker :
> nada.
>
> 2010/5/24 Anderson Silva :
>>
>>
>> 2010/5/24 hamacker 
>>>
>>> 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
>>>
>>
>> Olá Hamacker
>> Experimente colocar as seguintes regras logo após estas acima:
>> $IPTABLES -I FORWARD -i $LAN -j ACCEPT
>> $IPTABLES -I FORWARD -i $LAN  -o $WAN -m state --state ESTABLISHED,RELATED
>> -j ACCEPT
>
>
> --
> To UNSUBSCRIBE, email to debian-user-portuguese-requ...@lists.debian.org
> with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
> Archive: 
> http://lists.debian.org/aanlktincrrky3wiivn9pd10gfefmrfs9m3wemnl7z...@mail.gmail.com
>
>


--
To UNSUBSCRIBE, email to debian-user-portuguese-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: 
http://lists.debian.org/aanlktinffhzbz4fav5u7cwmif8scn04g5szlbunrt...@mail.gmail.com



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

2010-05-24 Por tôpico hamacker
nada.

2010/5/24 Anderson Silva :
>
>
> 2010/5/24 hamacker 
>>
>> 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
>>
>
> Olá Hamacker
> Experimente colocar as seguintes regras logo após estas acima:
> $IPTABLES -I FORWARD -i $LAN -j ACCEPT
> $IPTABLES -I FORWARD -i $LAN  -o $WAN -m state --state ESTABLISHED,RELATED
> -j ACCEPT


--
To UNSUBSCRIBE, email to debian-user-portuguese-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: 
http://lists.debian.org/aanlktincrrky3wiivn9pd10gfefmrfs9m3wemnl7z...@mail.gmail.com



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

2010-05-24 Por tôpico Anderson Silva
2010/5/24 hamacker 

>
> 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
>
>
Olá Hamacker
Experimente colocar as seguintes regras logo após estas acima:
$IPTABLES -I FORWARD -i $LAN -j ACCEPT
$IPTABLES -I FORWARD -i $LAN  -o $WAN -m state --state ESTABLISHED,RELATED
-j ACCEPT


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

2010-05-24 Por tôpico hamacker
dentro do script já há um :
echo "1" > /proc/sys/net/ipv4/ip_forward

Em 24 de maio de 2010 12:01, Allison Vollmann
 escreveu:
> -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 -

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

2010-05-24 Por tôpico hamacker
Na realidade, é um script que tento fazê-lo ser modular e flexivel,
daí também as referencias em arquivos externos.

Em 24 de maio de 2010 13:05, Joel A. Silva  escreveu:
> (...)
> Hamacker, se a sua politica padrão é DROP, não faz sentido vc adicionar 
> regras bloqueando algo, não é mesmo? Por padrão, no seu firewall tudo já se 
> encontrará bloqueado.
>
> abraços
> Joel
>


--
To UNSUBSCRIBE, email to debian-user-portuguese-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: 
http://lists.debian.org/aanlktikgdhdjttxxhtscym__vrwurob_mip5rxy0j...@mail.gmail.com



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

2010-05-24 Por tôpico Joel A. Silva

--- Em seg, 24/5/10, hamacker  escreveu:

> De: hamacker 
> Assunto: Script de firewall não funciona, pq ?
> Para: "Lista Debian" 
> Data: Segunda-feira, 24 de Maio de 2010, 14:23
> 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.
> 

(...)
Hamacker, se a sua politica padrão é DROP, não faz sentido vc adicionar regras 
bloqueando algo, não é mesmo? Por padrão, no seu firewall tudo já se encontrará 
bloqueado.

abraços
Joel






--
To UNSUBSCRIBE, email to debian-user-portuguese-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/209967.340...@web114513.mail.gq1.yahoo.com



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

2010-05-24 Por tôpico Joel A. Silva
--- Em seg, 24/5/10, Allison Vollmann  escreveu:

De: Allison Vollmann 
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 $

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

2010-05-24 Por tôpico Allison Vollmann
-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

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

2010-05-24 Por tôpico Allan Carvalho
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  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 t