Bloquear tudo e liberar apenas para uma lista de ips
Bom dia!
Galera seguinte, editei uma lista com alguns ips e no squid liberei o acesso pra eles. Todo o resto da rede bloqueado, para http beleza funcionou, mas como posso fazer para bloquear o resto? Msn e outlook o squid não barra.
No squid mesmo ou alguma regra no iptables?
Desde já obrigado!
Re: Bloquear tudo e liberar apenas para uma lista de ips
A solução é fazer o NAT apenas para uma range da sua rede, ou para alguns IP's... tente a regra abaixo.
Código :
# iptables -t nat -A POSTROUTING -m iprange --src-range $RANGE_COMECO-$RANGE_FINAL -o $INTERFACE_SAIDA -j MASQUREADE
Abraços!
Re: Bloquear tudo e liberar apenas para uma lista de ips
ele ta me retornando esse erro
iptables: No chain/target/match by that name
usei a regra abaixo
iptables -t nat -A POSTROUTING -m iprange --src-range 10.x.x.2-10.x.x.8 -o eth1 -j MASQUERADE
Re: Bloquear tudo e liberar apenas para uma lista de ips
Talvez você não tenha o kernel compilado com esse módulo do IPTables. Qual distro e versão do kernel você tá usando?
Re: Bloquear tudo e liberar apenas para uma lista de ips
Slackware 10.2
Kernel 2.4
Re: Bloquear tudo e liberar apenas para uma lista de ips
Estranho... bem... eu não sou usuário de Slackware, mas no Debian os módulos do IPTables ficam em /lib/modules/`uname -r`/kernel/net/ipv4/netfilter. Isso na versão 2.6 do kernel, mas acho que não muda para a 2.4. Dá uma olhada dentro do diretório e procura o arquivo chamado ipt_iprange.o. Se você não encontrar, muito provavelmente o seu kernel não foi compilado com suporte à ele.
Abraços!
Re: Bloquear tudo e liberar apenas para uma lista de ips
Valeu cara vo da uma olhada!
Brigado!!!
Re: Bloquear tudo e liberar apenas para uma lista de ips
Magina... mas se não tiver compilado, tu pode adicionar IP por IP também... claro que é mais trabalhoso, mas também dá certo.
Re: Bloquear tudo e liberar apenas para uma lista de ips
Você também pode deixar o NAT(MASQUERADE) para todos:
iptables -t nat -A POSTROUTING -o eth_net -j MASQUERADE
E bloquear o resto na FORWARD.
Eu pelo menos uso assim.
De uma olhada nesse script e ve se te ajuda...
eth1 -> a rede local
eth0 -> internet
# Lembrando que a output e input são somente para o que sai ou entra da maquina firewall, as estações se enquadram apenas na chain FORWARD!
# OUTPUT
# Liberando a rede interna
iptables -A OUTPUT -o eth1 -d 192.168.0.0/24 -j ACCEPT
# Acessos para o squid
iptables -A OUTPUT -o eth0 -p tcp --dport 80 -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --dport 443 -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --dport 20 -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --dport 21 -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --dport ! 1:1024 -j ACCEPT
# Resolver nomes
iptables -A OUTPUT -o eth0 -d dns-primario -p tcp --dport 53 -j ACCEPT
iptables -A OUTPUT -o eth0 -d dns-primario -p udp --dport 53 -j ACCEPT
iptables -A OUTPUT -o eth0 -d dns-secundario -p tcp --dport 53 -j ACCEPT
iptables -A OUTPUT -o eth0 -d dns-secundario -p udp --dport 53 -j ACCEPT
# Detalhe, eu liberei a rede interna para tudo, mas se for o caso vc poderia liberar apenas a porta do squid (por padrao 3128) pois os outros acessos como ja disse se enquadrarao na FORWARD.
#INPUT
iptables -A INPUT -i eth1 -d rede_interna -m state --state ESTABLISHED,RELATED -j ACCEPT
# Essa seria uma forma mais simples de liberar o retorno dos pacotes, porém essas flags de pacotes podem ser burladas... e como o iptables nao tem recursos como keep state tem que ser assim mesmo
# Mas eu te recomendo fazer uma regra de retorno para cada regra de saida com base na porta de destino da saida, entendeu? por exemplo:
para a saida com destino a porta 80 vc faria o retorno assim:
iptables -A INPUT -i eth0 -p tcp --sport 80 -m state --state ESTABLISHED,RELATED -j ACCEPT
# por fim a FORWARD
# aqui vc tem que fazer a ida e volta dos acessos de todas as estaçoes
Que o básico seria acessos na 25 e 110 (smtp e pop3) e também 53 tcp e udp se você nao tiver um server dns tb no seu firewall.
Fora isso, vao te aparecer problemas relacionados a aplicativos que usam portas especificas assim como servidores especificos, seria o caso daqueles programas da caixa federal, alguns internet banking e etc, mas ai cabe a vc verificar a necessidade do cliente e conceder apenas os acessos necessários.
Vou te dar um exemplo para a porta smtp e o resto seria igual:
iptables -A FORWARD -o eth0 -s 192.168.0.0/24 -d provedor -p tcp --dport 25 -j ACCEPT
iptables -A FORWARD -i eth0 -d 192.168.0.0/24 -s provedor -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
Bom, espero ter ajudado....
Um abraço.
Fernando.
Re: Bloquear tudo e liberar apenas para uma lista de ips
Beleza cara, com certeza vai me ajudar!!!
Abraço e obrigado!
Re: Bloquear tudo e liberar apenas para uma lista de ips
o mais simples...
iptables -t nat -A POSTROUTING -p tcp --dport 80 -j MASQUERADE
mascara apenas a porta 80 ... :)
talvez nem precisa do mascaramento.. se voce fizer proxy transparente...
tenta assim:
iptablest -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.0.1:3128
onde 192.168.0.1 eh seu servidor proxy e 3128 eh a porta
e DEIXE sem o MASQUERADE.. e faça um teste...
assim.. todo mundo acessa WEB... mas tudo que nao for web.. fica bloqueado..
MAS skype e msn consegue usar a porta 80 para funcionarem... ai precisa fazer um bloqueio usando o modulo STRING/MATCH do iptables..