iptables para bloquear sites https

7

Desejo bloquear alguns sites que também são executados em https, como facebook, twitter e gmail, na minha organização. O Squid não deve ser usado aqui de acordo com as ordens da gerência superior. Podemos usar o Untangle Lite Package e iptables .

Existe alguma outra opção além do Squid para fazer isso? Além disso, alguma regra de iptables para bloquear esse tipo de tráfego seria realmente útil.

Eu encontrei isto

iptables -t filter -I INPUT -m string --string facebook.com -j LOG --algo bm
iptables -t filter -I INPUT -m string --string facebook.com -j REJECT --algo bm

mas o https ainda funciona em máquinas, exceto na máquina local.

    
por Dharmit 11.01.2012 / 15:32

6 respostas

10

Em vez de corresponder com base no URL, tente corresponder com base no conteúdo do certificado.

iptables -t nat -I INPUT --sport 443 -m string \
                 --string www.facebook.com --algo bm -j REJECT

Você também pode combinar na impressão digital, mas se o destino alterar ou atualizar seu certificado, isso invalidará sua regra.

    
por 27.01.2012 / 21:39
9

O firewall não pode controlar quais URLs HTTPS o cliente está tentando acessar, porque o URL é criptografado. O firewall só pode controlar a quais sites o cliente está se conectando, usando endereços IP, mas isso não ajuda se as versões HTTP e HTTPS do site estiverem no mesmo URL (e mesmo que não estejam, você teria para manter uma lista enorme de endereços IP).

A única forma realista de bloquear o HTTPS é bloqueá-lo completamente. Insista para que todas as conexões sejam HTTP válidas (ou seja, o cliente inicia enviando uma linha HTTP e assim por diante). Isso não pode ser feito apenas com IPtables, você precisa de um proxy real com reconhecimento de protocolo, como o Squid. (Eu não sei o que Untangle Lite é capaz de fazer.)

Você pode bloquear a maioria do tráfego HTTPS bloqueando o tráfego de saída para a porta 443, já que quase todos os servidores HTTPS estão nessa porta. Ou, seguindo uma abordagem de lista de permissões, permita somente o tráfego de saída para a porta 80 (a porta HTTP normal).

Uma abordagem diferente seria fazer proxy de todas as conexões HTTP e HTTPS. Então você pode combinar por URLs. Isso requer a realização de um ataque man-in-the-middle nos clientes. Você pode fazer isso se implantar sua própria autoridade de certificação em todas as máquinas clientes e registrá-la como uma raiz de confiança. Isso pode ser considerado antiético.

Não importa o que você faça, determinados usuários configurarão um proxy fora de seu ambiente e executarão IP por HTTP ou algo assim.

Você parece estar tentando consertar um problema social com meios técnicos, o que quase nunca funciona, ou estar fazendo o seu melhor para implementar um requisito bobo da administração (nesse caso, eu iria com o bloqueio da porta 443, talvez apenas para determinados IPs, o que permitiria relatar que você fez o seu trabalho, não importa o quanto seja inútil).

    
por 12.01.2012 / 03:09
4

Eu sei de uma opção.

Se você tiver servidores DNS internos para uso, coloque algumas referências estáticas nos dados da zona TLD que resolvam os domínios (que você não deseja estabelecer as conexões externas) para apenas 127.0.0.1. Dessa forma, todos os hosts que usam o DNS central em sua rede resolverão domínios (facebook.com/twitter.com per se) em endereços de loopback, o que não levará a lugar algum.

Isso funcionará se você tiver total controle autoritativo na configuração do resolvedor de máquinas clientes de sua rede. Se as estações de trabalho / clientes tiverem permissões para alterar / editar / etc / hosts, ou /etc/resolv.conf, eles podem contornar essa opção.

    
por 11.01.2012 / 15:40
2

Uma opção é fazer rotas de blackhole para blocos de rede: (Listados são para FB)

ip route add blackhole 69.171.224.0/19
ip route add blackhole 74.119.76.0/22 
ip route add blackhole 204.15.20.0/22
ip route add blackhole 66.220.144.0/20
ip route add blackhole 69.63.176.0/20
ip route add blackhole 173.252.64.0/18
    
por 23.07.2012 / 22:05
2

O filtro de conteúdo simples não pode bloquear o site ssl.

Use ferramentas de proteção contra invasões como snort / suricata.

Regra IPS de amostra : para bloquear URLs SSL para endereço IP específico.

drop ip any 443 -> 192.168.3.30 any (content:".facebook.com"; msg:"Simplewall Ssl block for User30 : Urls => .facebook.com " sid:26648513;rev:1;)

drop ip any 443 -> 192.168.3.30 any (content:".fbcdn.net"; msg:"Simplewall Ssl block for User30 : Urls => .fbcdn.net " ;sid:11469443;rev:1;)

drop ip any 443 -> 192.168.3.30 any (content:".youtube.com"; msg:"Simplewall Ssl block for User30 : Urls => .youtube.com " ;sid:13989722;rev:1;)

Faça o download do Simplewall : nas regras de diretivas do simplewall compartilhadas pelo IPS do Squid + Suricata.

    
por 07.03.2013 / 20:15
0

Você deve colocar isso na cadeia FORWARD, por exemplo

iptables -I FORWARD  -m string --string "facebook.com" \
                     --algo bm --from 1 --to 600 -j REJECT

Isso afetará outros sistemas na rede, exceto o firewall.

    
por 05.10.2012 / 16:17