Regra no Iptables para bloquear acesso a uma rede [RESOLVIDO]

1. Regra no Iptables para bloquear acesso a uma rede [RESOLVIDO]

Alexandre
Alexandreaf

(usa Debian)

Enviado em 21/06/2011 - 17:59h

Pessoal, em Linux até que mexo há um tempinho, em casa uso o Arch e onde quero aplicar a regra é em um Debian.

Tenho a seguinte situação. Não é um provedor de wireless que montei, mas aproveitei o tutorial de montagem de um para minha situação (http://www.hardware.com.br/dicas/servidor-linux-provedor-wireless.html). No entanto, a internet sai da minha rede física (de um switch) e vai para o firewall (http://www.hardware.com.br/dicas/servidor-linux-provedor-wireless.html) que manda para meu acess point.

Está funcionando. Mas as máquinas conectados a rede wireless 192.168.0.0/24 estão conseguindo acessar minha rede física 10.1.0.0/24. Como poderia bloquear esse acesso? Obrigado.

Alexandre


  


2. Re: Regra no Iptables para bloquear acesso a uma rede [RESOLVIDO]

Natanael Henrique
n4t4n

(usa Arch Linux)

Enviado em 21/06/2011 - 23:51h

veja se resolve

iptables -A FORWARD -s 192.168.0.0/24 -d 10.1.0.0/24 -j DROP


3. Re: Regra no Iptables para bloquear acesso a uma rede [RESOLVIDO]

Alexandre
Alexandreaf

(usa Debian)

Enviado em 22/06/2011 - 09:49h

Obrigado. Mas ainda pingo e acesso compartilhamentos da rede 10.1.0.0/24 através da rede 192.168.0.0/24.


4. Re: Regra no Iptables para bloquear acesso a uma rede [RESOLVIDO]

Natanael Henrique
n4t4n

(usa Arch Linux)

Enviado em 22/06/2011 - 12:02h

Posta suas configurações de firewall

iptables -vnL

Caso tenha algum ip válido pode colocar xxx.xxx.xxx.xxx no lugar


5. Re: Regra no Iptables para bloquear acesso a uma rede [RESOLVIDO]

Alexandre
Alexandreaf

(usa Debian)

Enviado em 22/06/2011 - 12:16h

Obrigado pela atenção.


Chain INPUT (policy ACCEPT 31747 packets, 8426K bytes)
pkts bytes target prot opt in out source destination
35 2440 ACCEPT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
0 0 DROP tcp -- eth1 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:3128
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:8080
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:443

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT all -- * * 192.168.0.100 0.0.0.0/0
0 0 ACCEPT all -- * * 0.0.0.0/0 192.168.0.100
0 0 DROP all -- * * 192.168.0.0/24 10.1.0.0/16

Chain OUTPUT (policy ACCEPT 17290 packets, 7726K bytes)
pkts bytes target prot opt in out source destination



6. Re: Regra no Iptables para bloquear acesso a uma rede [RESOLVIDO]

Alexandre
Alexandreaf

(usa Debian)

Enviado em 22/06/2011 - 12:32h

Acho que estava colocando a regra no lugar errado, agora coloquei antes de tudo e funcionou. Confere?


7. Re: Regra no Iptables para bloquear acesso a uma rede [RESOLVIDO]

Natanael Henrique
n4t4n

(usa Arch Linux)

Enviado em 22/06/2011 - 12:43h

Foi o que eu desconfiei. A ordem delas é importante. Se você libera primeiro e depois bloqueia, vai ficar liberado.

Você primeiro liberou pacotes vindos de 192.168.0.100 indo para qualquer destino e também pacotes vindos de qualquer lugar indo para 192.168.0.100, então quando você colocou a regra para bloquear pacotes vindos da 192.168.0.0/24 e indo para 10.1.0.0/24 ele bloqueou, porém com a exceção do endereço que antes tinha sido liberado.

Observe que mesmo assim os pacotes vindos de 10.1.0.0/24 ainda podem acessar a rede 192.168.0.0/24, pois a regra criada só bloqueia o sentido inverso, caso queira bloquear nesse sentido também terá de especificar a origem (-s) e o destino (-d) respectivos.

Também observei que mesmo com essas regras para liberar e bloquear, sua política padrão é ACCEPT, o que significa que só serão bloqueados os pacotes que forem especificamente informados no seu script para bloquear. O recomendado é que a política padrão seja DROP e aí você libera só o necessário.


8. Re: Regra no Iptables para bloquear acesso a uma rede [RESOLVIDO]

Natanael Henrique
n4t4n

(usa Arch Linux)

Enviado em 22/06/2011 - 12:46h

Ah, outra coisa que esqueci. Sua rede é 10.1.0.0/24 ou 10.1.0.0/16?

É que você falou que era classe C e na listagem de regras do firewall ela aparece como classe B. É importante que você especifique direitinho para não ficar com a falsa impressão de segurança, sendo que o bloqueio não está funcionando efetivamente.


9. Re: Regra no Iptables para bloquear acesso a uma rede [RESOLVIDO]

Alexandre
Alexandreaf

(usa Debian)

Enviado em 22/06/2011 - 14:10h

Muito obrigado mesmo. Estou lendo um guia, mas não estava conseguindo de jeito nenhum. A rede é classe B mesmo, disse errado na primeira postagem. Sem querer abusar, como faria para inverter a política padrão, quero dizer, para ser DROP?

Na verdade só quero liberar acesso a internet para rede 192.168.0.0/24 e não quero que essa rede tenha acesso a nada no firewall ou na rede 10.1.0.0/16.

Na verdade o que está me confundindo é o seguinte: a rede que provê a internet para a 192.168.0.0/24 é a minha rede (10.1.0.0/16), ou seja, a rede 10.1.0.0/16 é a rede que tenho que deixar segura. No entanto, tenho que deixar algumas portas abetas para a rede 192.168.0.0/24 ter acesso a internet.



10. Re: Regra no Iptables para bloquear acesso a uma rede [RESOLVIDO]

Natanael Henrique
n4t4n

(usa Arch Linux)

Enviado em 22/06/2011 - 17:15h

Para mudar a política padrão você usa o comando abaixo no seu script

iptables -P INPUT DROP
iptables -P FORWARD DROP

isso vai tornar a política padrão das chains INPUT (pacotes direcionado à máquina do firewall) e FORWARD (pacotes direcionandos à outro endereço e que atravessam as placas de rede para isso).

Com essas configurações você precisará especificar cada porta que deseja liberar. Algumas que são necessárias estão listadas abaixo.

wifi=192.168.0.0/24

#Porta do DNS
iptables -A FORWARD -s $wifi -p udp --dport 53 -j ACCEPT

#Portas: 80:http, 443:https, 21,20:ftp, 123:ntp, 25,110,465,587,993:e-mail
iptables -A FORWARD -s $wifi -p tcp -m multiport --dports 80,443,21,20,123,25,110,993,465,587 -j ACCEPT

Você poderá adicionar as portas necessárias junto com essas aí.


11. Re: Regra no Iptables para bloquear acesso a uma rede [RESOLVIDO]

Natanael Henrique
n4t4n

(usa Arch Linux)

Enviado em 22/06/2011 - 17:24h

Também é necessário algumas outras regras

#Libera acesso para interface loopback
iptables -I INPUT 1 -i lo -p all -j ACCEPT

#Libera acesso ao DNS para a máquina do firewall e para a rede, caso tenha informado o ip do firewall como DNS
iptables -A INPUT -p udp --dport 53 -j ACCEPT

#Porta do Squid, caso use e esteja configurado para escutar nessa porta
iptables -A INPUT -s $wifi -p tcp --dport 3128 -j ACCEPT

#Necessário para as respostas das solicitações feitas pela máquina do firewall
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

Também é necessário uma regra dessa na FORWARD

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

Acho que com essas já vai funcionar com uma política DROP, qualquer coisa posta.


12. Re: Regra no Iptables para bloquear acesso a uma rede [RESOLVIDO]

Alexandre
Alexandreaf

(usa Debian)

Enviado em 23/06/2011 - 12:30h

Muito obrigado! Me ajudou muito mesmo.



01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts