Problemas Script Configuração Iptables

1. Problemas Script Configuração Iptables

Mauricio Otto
mauricio1241

(usa Fedora)

Enviado em 14/09/2012 - 14:36h

Boa tarde galera do VOL,

De um tempo para cá venho queimando uma boa quantidade de neurônios para criar um script de configuração para o iptables, que use uma política restritiva para as chains INPUT e FORWARD da tabela filter. Porém, devo estar deixando passar alguma coisa, pois ao executar o script os computadores da rede não conseguem ter acesso a internet.
Por usar a política restritiva de dropar tudo, exeto o que estiver explicitamente definido nas regras para aceitar, o firewall está barrando as conexões. Já tentei de tudo para liberar, porém não tive sucesso. E não quero ter de mudar a política para ACCEPT.

Obs: Pretendo rodar este firewall na máquina que faz o roteamento de pacotes. É o meu servidor DHCP, DNS, Samba, Proxy, ou seja, nada na rede acessa a internet sem passar por ela.

Peço que se alguém tiver alguma sugestão, por favor poste, segue o script:



#!/bin/bash

echo 1 > /proc/sys/net/ipv4/ip_forward #Habilita o suporte a redirecionamento de pacotes no kernel.
echo 1 > /proc/sys/net/ipv4/tcp_syncookies #Habilita a proteção contra Syn-flood

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

# Tabela nat
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
iptables -t nat -P POSTROUTING ACCEPT

iptables -t mangle -P PREROUTING ACCEPT
iptables -t mangle -P OUTPUT ACCEPT


# Tabela filter #


iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

##### Chain INPUT #####
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# Aceita todo o tráfego vindo do loopback e indo pro loopback
iptables -A INPUT -i lo -j ACCEPT
# Todo tráfego vindo da rede interna também é aceito
iptables -A INPUT -s 10.0.1.0/24 -i eth0 -j ACCEPT
# Aceita todas as conexoes ja estabelecidas
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#liberar ping
iptables -A INPUT -p icmp -m limit --limit 2/s -j ACCEPT

#Aceita o tráfego das portas necessárias
iptables -A INPUT -p tcp --dport 80 -j ACCEPT #http
iptables -A INPUT -p udp -s 10.0.1.0/24 --dport 53 -j ACCEPT #DNS
iptables -A INPUT -p tcp -s 10.0.1.0/24 --dport 53 -j ACCEPT #DNS
iptables -A INPUT -p udp -s 10.0.1.0/24 --sport 53 -j ACCEPT #DNS
iptables -A INPUT -p tcp -s 10.0.1.0/24 --sport 53 -j ACCEPT #DNS
iptables -A INPUT -p tcp --dport 443 -j ACCEPT #https
iptables -A INPUT -p tcp --dport 5901 -j ACCEPT
iptables -A INPUT -p tcp --dport 5900 -j ACCEPT
iptables -A INPUT -p tcp --dport 587 -j ACCEPT
iptables -A INPUT -p tcp --dport 8081 -j ACCEPT
iptables -A INPUT -p tcp --dport 8080 -j ACCEPT

##### Chain FORWARD ####
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -p tcp ! --dport 443 -j ACCEPT
iptables -I FORWARD -p tcp --dport 80 -j ACCEPT #http
iptables -I FORWARD -p tcp -s 10.0.1.0/24 --dport 53 -j ACCEPT #DNS
iptables -I FORWARD -p tcp -s 10.0.1.0/24 --sport 53 -j ACCEPT #DNS
iptables -I FORWARD -p tcp --dport 3017 -j ACCEPT #PinPad
iptables -I FORWARD -p tcp --dport 587 -j ACCEPT #
iptables -I FORWARD -p tcp --dport 8081 -j ACCEPT #
iptables -I FORWARD -p tcp --dport 8080 -j ACCEPT #


iptables -I FORWARD -p udp --dport 80 -j ACCEPT #www
iptables -I FORWARD -p udp -s 10.0.1.10/24 --dport 53 -j ACCEPT #DNS
iptables -I FORWARD -p udp -s 10.0.1.10/24 --sport 53 -j ACCEPT #DNS
iptables -I FORWARD -p udp --dport 3017 -j ACCEPT #PinPad
iptables -I FORWARD -p udp --dport 587 -j ACCEPT #
iptables -I FORWARD -p udp --dport 8081 -j ACCEPT #
iptables -I FORWARD -p udp --dport 8080 -j ACCEPT #


##Libera sites do HTTPS
iptables -A FORWARD -d 65.55.0.0/16 -j ACCEPT #hotmail
iptables -A FORWARD -d 74.125.229.0/24 -j ACCEPT #google
iptables -A FORWARD -d 74.125.45.84 -j ACCEPT #accounts.google.com
iptables -A FORWARD -d 189.28.143.98 -j ACCEPT #cadastro.sus.gov.br
iptables -A FORWARD -d 201.3.168.36 -j ACCEPT #unicrednet.e-unicred.com.br
iptables -A FORWARD -d 200.152.33.1 -j ACCEPT #granulito.mte.gov.br
iptables -A FORWARD -d 98.139.237.162 -j ACCEPT #yahoo.com


# Tabela nat #

##### Chain PREROUTING #####
#Redireciona tudo da porta 80 para a 3128 pro Proxy
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128

##### Chain POSTROUTING #####
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# Permite qualquer conexão vinda com destino a lo e rede local para eth0
iptables -t nat -A POSTROUTING -o lo -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.0.1.0/24 -o eth0 -j ACCEPT



Obs2: Peço desculpas caso esteja cometendo alguma falha boba, pois não sou muito experiente na área.

Obrigado pela atenção


  


2. Re: Problemas Script Configuração Iptables

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 14/09/2012 - 14:46h

Qual é a porta do seu proxy?


3. Re: Problemas Script Configuração Iptables

Mauricio Otto
mauricio1241

(usa Fedora)

Enviado em 14/09/2012 - 14:47h

É a 3128

Nessa linha ele redireciona da 80 para ela:

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128

Ou pelo menos é o que deveria fazer.


Valeu pela atenção aí.


4. Re: Problemas Script Configuração Iptables

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 14/09/2012 - 14:50h

Agora q vi, heheh! Eu acho q ficou faltando vc liberar a porta 3128:


iptables -A INPUT -p tcp --dport 3128 -j ACCEPT



5. Re: Problemas Script Configuração Iptables

Mauricio Otto
mauricio1241

(usa Fedora)

Enviado em 14/09/2012 - 15:00h

Valeu pelo apoio aí Renato.
Pois é, realmente eu havia esquecido de liberar essa porta. hehe
Acrescentei a linha:

iptables -A INPUT -p tcp --dport 3128 -j ACCEPT

Mas ainda não funciona... Se tiver mais alguma sugestão, fico muito grato. =D


6. Re: Problemas Script Configuração Iptables

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 14/09/2012 - 15:45h

Na regra d estados da conexão, acrescente o NEW, junto ao RELATED,ESTABLISHED (NEW,RELATED,ESTABLISHED) e tente d novo.


7. Re: Problemas Script Configuração Iptables

Alam Luiz
acolatto

(usa Debian)

Enviado em 14/09/2012 - 18:43h

Eae cara....

Olhei seu script e não entendi essas regras, qual a funcionalidade delas?
# Tabela nat
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
iptables -t nat -P POSTROUTING ACCEPT

iptables -t mangle -P PREROUTING ACCEPT
iptables -t mangle -P OUTPUT ACCEPT

Você esta conseguindo dar ping no DNS? ou em outros sites?
O squid esta instalado e rodando certinho?

Vi que você deu um ACCEPT na porta 80... se voce vai fazer uma nat da 80 para a 3128 só é preciso liberar a 3128 como sugestão que o amigo passou, senão, os sites acessam direto.

Outro ponto é que faltou dar um PREROUTING no DNS. ex.:
IPTABLES -t nat -A PREROUTING -p udp --dport 53 -s REDE_INTERNA -j DNAT --to-destination DNS:53

faça o teste e vamos ver o que acontece....




8. Re: Problemas Script Configuração Iptables

Mauricio Otto
mauricio1241

(usa Fedora)

Enviado em 17/09/2012 - 09:25h

Muito bem, valeu pela força aí,

Alterei esta linha:

iptables -A FORWARD -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT

acrescentei esta:

iptables -t nat -A PREROUTING -p udp --dport 53 -s 10.0.1.0/24 -j DNAT --to-destination 10.0.1.179:53

sendo o 10.0.1.179 o servidor DNS, e o mesmo onde está o firewall.

e retirei as linhas do inicio para modificar a politica das tabelas nat e mangle. Mas continua bloqueando o acesso a internet, por qualquer tipo de protocolo, nem ping nos sites funciona, ping no servidor DNS funciona.

Não sei mais o que fazer, se alguém tiver mais alguma sugestão, fico muito grato.

Um abraço.


9. Re: Problemas Script Configuração Iptables

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 17/09/2012 - 12:06h

Desculpe, mas essa regra d PREROUTING do DNS não tem nada a v. Remova essa regra, por favor. Vamos fazer um teste: comente toda regra relacionada à opção -m state e as regras d segurança (ex.: limit etc.). Vamos v se pode ser isso.


10. Problemas Script Configuração Iptables

magnopeem_rj
magnopeem_rj

(usa Ubuntu)

Enviado em 17/09/2012 - 14:43h

caro colega voce ja compartilho a internet?? pois nao vi no seu escript nao


11. Re: Problemas Script Configuração Iptables

Mauricio Otto
mauricio1241

(usa Fedora)

Enviado em 17/09/2012 - 14:47h

Boa tarde,

Renato, fiz como você pediu, removi todas as regras que continham -m state e -m limit, inclusive a regra do DNAT lá. Ficou só as regras que teoricamente fariam o seguinte:
Define as políticas padrão da table filter para DROP (exeto da chain output);
Libera as portas necessárias (exeto a 443, pois quero que o firewall bloqueie alguns sites);
Libera os domínios que terão acesso pela porta 443;

Não entendo porque ainda não funciona. Devo estar deixando escapar algum detalhe.

Essa foi a idéia que eu tive para implementar o firewall. Pois ficaria bem seguro, bloqueando tudo que não estivesse explicitamente declarado como ACCEPT no firewall. Desta forma, sites como Facebook e Orkut, e downloads por torrents estariam bloqueados.

Vou continuar tentando resolver aqui, se alguém tiver mais alguma idéia, peço que por favor, compartilhe.
Obrigado.




12. Re: Problemas Script Configuração Iptables

Mauricio Otto
mauricio1241

(usa Fedora)

Enviado em 17/09/2012 - 14:51h

magnopeem_rj escreveu:

caro colega voce ja compartilho a internet?? pois nao vi no seu escript nao


Acho que sim, não seria essa aqui?

echo 1 > /proc/sys/net/ipv4/ip_forward  


Se não for, como faço entao?


Valeu =)



01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts