Iptables maluco.

1. Iptables maluco.

Christian Marra da Silva
Sodomyzer

(usa Debian)

Enviado em 15/03/2012 - 11:09h

Olá pessoal, estou com um problema que ainda não consegui resolver e não acho em lugar algum a resposta, por isso gostaria da ajuda dos mais experientes no assunto.

Bem, sou novo no ambiente Linux, logo não tenho muito conhecimento no assunto, trabalho em uma empresa de desenvolvimento de software(mas cuido da manutenção) e o pessoal estava matando serviço para acessar coisas indevidas, por isso meu patrão pediu para criar um Proxy e por fim na malandragem do pessoal, e assim eu o fiz.

Cerca de 5 meses atras fiz um Proxy com Squid autenticado e algumas regras no iptables, como sempre davam um jeitinho pra burlar o Squid eu fiz uns bloqueios por ip(do site) no iptables, porém algumas pessoas precisam ter acesso a esses sites, ou seja, libera uns e trava outros. Fiz isso, funcionou perfeitamente, porém por INCRÍVEL coincidencia quando mudou o horário de verão na segunda nada quiz funcionar, deu pane no iptables, não sei o que ocorreu, só sei que não funciona mais desde então.

Meu Squid funciona normal, mas preciso do iptables funcionando também.

Achei um script para bloqueio do facebook que eu utilizava:

FACEBOOK_ALLOW="192.168.1.12 192.168.1.14 192.168.1.111"
iptables -N FACEBOOK

iptables -I FORWARD -m tcp -p tcp -m iprange --dst-range 66.220.144.0-66.220.159.255 --dport 443 -j FACEBOOK
iptables -I FORWARD -m tcp -p tcp -m iprange --dst-range 69.63.176.0-69.63.191.255 --dport 443 -j FACEBOOK
iptables -I FORWARD -m tcp -p tcp -m iprange --dst-range 204.15.20.0-204.15.23.255 --dport 443 -j FACEBOOK
iptables -I FORWARD -m tcp -p tcp -m iprange --dst-range 66.220.144.0-66.220.159.255 --dport 80 -j FACEBOOK
iptables -I FORWARD -m tcp -p tcp -m iprange --dst-range 69.63.176.0-69.63.191.255 --dport 80 -j FACEBOOK
iptables -I FORWARD -m tcp -p tcp -m iprange --dst-range 204.15.20.0-204.15.23.255 --dport 80 -j FACEBOOK

## FACEBOOK ALLOW
for face in $FACEBOOK_ALLOW; do
iptables -A FACEBOOK -s $face -j ACCEPT
done
iptables -A FACEBOOK -j REJECT

Esse script funcionou legal, bloqueia geral menos os "FACEBOOK_ALLOW", então parou de funcionar como disse, resolvi fazer como fazia antes.

iptables -A FORWARD -d www.vivaolinux.com.br -p tcp --dport 80 -j DROP

Não funciona mais nem INPUT nem FORWARD. Se eu colocar com OUTPUT funciona, bloqueia geral, porém para liberar simplesmente não libera para nenhum outro computador.

Usava antes essas regras:
iptables -A OUTPUT -s 192.168.0.4 -d www.vivaolinux.com.br -j ACCEPT
iptables -A OUTPUT -d www.vivaolinux.com.br -j DROP

Funcionava normal, porém também parou de funcionar, simplesmente bloqueia tudo e não libera pra ninguém.

Resolvi formatar logo de uma vez e refazer tudo do zero, resultado: continua sem funcionar, o pior de tudo é que o script que estou testando não tem NADA praticamente, ele está como abaixo:

----------------
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
iptables -Z

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

iptables -A OUTPUT -d 192.168.0.4 -s www.vivaolinux.com.br -j ACCEPT
iptables -A OUTPUT -d www.vivaolinux.com.br -j DROP

--------------------------
Só o básico do básico do básico pra testar mesmo.

Não sei o que fiz de errado, ou deixei de fazer, só sei que está tenso o negócio.

Obs.: Não pretendo bloquear o site diretamente no iptables, senão o squid seria inutil, pretendo bloquear alguns ips, principalmente de programas que não passam pelo squid como o skype(pra bloquear o facebook integrado nele), o problema é que não posso bloquear geral, tem que ter excessões, e essas excessões não podem passar completamente fora do firewall, ou seja, fulano tenho que bloquear o acesso a 1.1.1.1 mas ta liberado pra 2.2.2.2.

A única coisa que me intriga é que funcionava normal, não fiz nada e ninguém fez, somente eu tenho a senha do servidor.

Alguém por favor me dá um luz.
Grato

Edit: Esqueci de mencionar que uso o Debian 6, recompilado pra funfar o Layer7 que nem testei ainda, e o iptables ta na versão 1.4.2, não tenho certeza da versão, após as panes eu tentei atualizar pra outras versões, mas não sei se funcionou, tentei 1.4.0 deu erro, 1.4.8 diz que atualizou, mas quando faço o iptables dar erro ele mostra 1.4.2 no erro, por isso fico na dúvida.


  


2. Re: Iptables maluco.

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 15/03/2012 - 11:34h

Vamos começar separando as funções d cada um. Iptables não serve para bloquear nomes, mas serviços, quem pode ou não acessar e estado d conexão. O squid bloqueia os acessos através d nomes na URL, traffic shapping, cache etc.
Entendendo a função d cada um, vamos configurar. Primeiramente, vamos impor as políticas d entrada e saída dos pacotes com o iptables:


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


Começando por aki, todos os pacotes q entram, sae, e são encaminhados estão sendo bloqueados por padrão. A partir dae, qq regra q vc declare ACCEPT estará sendo liberada. Ex.:


iptables -A FORWARD -p tcp --dport 53 -d 8.8.8.8 -j ACCEPT
iptables -A FORWARD -p udp --dport 53 -d 8.8.8.8 -j ACCEPT


Este código acima libera as consultas DNS apenas para o servidor 8.8.8.8 (DNS Google).

Então podemos fazer com q os usuários acessem a internet apenas pelo proxy. Pra fazer isso, basta liberar o acesso à porta 3128 para todos. Ae qq acesso direto às portas 80, 443 etc. estarão bloqueadas.
Dentro do squid, ae sim, vc usa todo o seu poder d bloqueio para impedir q sites como facebook, youtube etc. sejam acessados. Como vc já pegou a prática do squid, não entrarei em detalhes d configuração aki. Isso é só um norte pra vc se guiar. Ah! Proxy transparente nem pensar!


3. Re: Iptables maluco.

Christian Marra da Silva
Sodomyzer

(usa Debian)

Enviado em 15/03/2012 - 13:20h

Mas antes funcionava, sempre bloquiei site pelo iptables e coloquie excessões normal, o que aconteceu?

E aqui nós não podemos adotar a política de bloquear tudo e liberar o necessário, tem que ser ao contrário, libera tudo e bloqueia o que não deve ser acessado.

Meu problema não é nem com o bloqueio em sí, pois meu iptables bloqueia o que eu colocar pra bloquear, o problema é para fazer a excessão, não quero bloquear para todos, apenas para alguns.

O principal motivo para ter colocado o Proxy foi por causa de usuários acessando facebook, o squid bloqueia a palavra facebook e o site, mas não bloqueia os ips, logo se o usuário abrir o skype e for conversar no facebook ele vai conseguir, porque o squid não bloqueia isso, e não posso bloquear o skype por completo.


4. Re: Iptables maluco.

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 15/03/2012 - 13:32h

Kra, vc tá enganado. Tem como vc bloquear o skype sim pelo squid, tem muitos tutoriais explicando como fazer.
O bloqueio por iptables não é indicado para essa função justamente pela dificuldade d manipular as regras d quem pode ou não acessar. Regras d firewall não foram feitas pra ser modificadas a todo instante.
Com relação às políticas d acesso, devo discordar d vc, pois o q vc tá fazendo é totalmente inseguro, pois ter controle do q é liberado é mais fácil d q ter controle daquilo q é bloqueado. Pense nisso...


5. Re: Iptables maluco.

Christian Marra da Silva
Sodomyzer

(usa Debian)

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

Então da pra bloquear o facebook do skype sem bloquear o skype pelo squid?

No caso das políticas, é que é o seguinte, aqui na empresa a gente trabalha com vários servidores, vários clientes a todo instante, e como aqui é uma empresa de programação e web toda hora tem que ta alterando portas, liberando, bloqueando, vários clientes acessando de fora, a gente acessando vários, ou seja, é uma zona danada, aqui na verdade não da certo colocar proxy, pois mais atrapalha do que ajuda pra dizer a verdade, por isso tem que deixar tudo liberado e bloquear apenas algumas coisas, entre elas o facebook tem que sumir, porém tem que estar liberado para o pessoal da Web(isso meu squid faz tranquilo), mas ao mesmo tempo o resto do pessoal consegue mexer no facebook apartir do skype e do msn, coisa que não pode acontecer, a solução seria bloquear o skype e o msn, mas não posso fazer isso pois grande parte dos atendimentos aqui ocorrem pelo skype e msn. Entende o drama? E ainda tem mais, o facebook é travado e liberado por horário para os demais, antes o iptables controlava isso também, agora independente do horário ele bloqueia tudo, só o squid consegue controlar os horários sem pane.


6. Re: Iptables maluco.

Christian Marra da Silva
Sodomyzer

(usa Debian)

Enviado em 15/03/2012 - 14:05h

Ah, tem outro detalhe, como disse antes, mesmo formatando continuou do mesmo jeito, então pensei que fosse alguma atualização que ocorreu nos dias em que trocou pro horário novo, então eu ia baixar o Debian 5 e refazer tudo no 5 com pacotes antigos, mas para minha surpresa, tanto o etch quanto o lenny desapareceram do site, só tem pra baixar o squeeze. Maior doidera.


7. Squeeze

André Canhadas
andrecanhadas

(usa Debian)

Enviado em 15/03/2012 - 14:17h

Sodomyzer escreveu:

Ah, tem outro detalhe, como disse antes, mesmo formatando continuou do mesmo jeito, então pensei que fosse alguma atualização que ocorreu nos dias em que trocou pro horário novo, então eu ia baixar o Debian 5 e refazer tudo no 5 com pacotes antigos, mas para minha surpresa, tanto o etch quanto o lenny desapareceram do site, só tem pra baixar o squeeze. Maior doidera.

Usa a versão 6 do Debian (Squeeze)que esta bem estável e leve.



8. Re: Iptables maluco.

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 15/03/2012 - 14:35h

Então tente fazer uns testes. Pegue uma VM qualquer com um IP qualquer. Utilize o comando abaixo:


tail -f /var/log/squid/access.log | grep IP_VM


E acesse o facebook, tentando utilizar o MSN e o Skype por ele. Veja quais links e portas eles estão utilizando para acessar os serviços. Identificados, utilize-as nas regras d bloqueio.


9. Re: Iptables maluco.

Phillip Vieira
phrich

(usa Slackware)

Enviado em 15/03/2012 - 18:32h

Isso deve lhe ajudar:

http://www.vivaolinux.com.br/artigo/Squid-+-Iptables-Combinacao-Infalivel/


10. Re: Iptables maluco.

Joca (Altemir Braz Dantas Junior)
jocajuni

(usa Debian)

Enviado em 18/03/2012 - 15:22h

renato_pacheco escreveu:

Vamos começar separando as funções d cada um. Iptables não serve para bloquear nomes, mas serviços, quem pode ou não acessar e estado d conexão. O squid bloqueia os acessos através d nomes na URL, traffic shapping, cache etc.
Entendendo a função d cada um, vamos configurar. Primeiramente, vamos impor as políticas d entrada e saída dos pacotes com o iptables:


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


Começando por aki, todos os pacotes q entram, sae, e são encaminhados estão sendo bloqueados por padrão. A partir dae, qq regra q vc declare ACCEPT estará sendo liberada. Ex.:


iptables -A FORWARD -p tcp --dport 53 -d 8.8.8.8 -j ACCEPT
iptables -A FORWARD -p udp --dport 53 -d 8.8.8.8 -j ACCEPT


Este código acima libera as consultas DNS apenas para o servidor 8.8.8.8 (DNS Google).

Então podemos fazer com q os usuários acessem a internet apenas pelo proxy. Pra fazer isso, basta liberar o acesso à porta 3128 para todos. Ae qq acesso direto às portas 80, 443 etc. estarão bloqueadas.
Dentro do squid, ae sim, vc usa todo o seu poder d bloqueio para impedir q sites como facebook, youtube etc. sejam acessados. Como vc já pegou a prática do squid, não entrarei em detalhes d configuração aki. Isso é só um norte pra vc se guiar. Ah! Proxy transparente nem pensar!


Houve um equivoco nesta regra a regra certa para essa politica FOWARD DROP seria


iptables -A FORWARD -p tcp --dport 53 -d 8.8.8.8 -j ACCEPT
iptables -A FORWARD -p udp --sport 53 -s 8.8.8.8 -j ACCEPT


pois vc tem que liberar a ida e a volta do pacote.

[]s
Joca









Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts