Re: Script de firewall não funciona, pq ?
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 ?
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 ?
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 ?
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/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 ?
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 ?
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 ?
--- 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 ?
--- 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 ?
-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 ?
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