Desejo bloquear alguns sites que também funcionam com https, como facebook, twitter e gmail, em minha organização. O Lula não deve ser usado aqui de acordo com as ordens da alta gerência. Podemos usar o pacote Untangle Lite e iptables
.
Existe outra opção além do Squid para fazer isso? Além disso, algumas iptables
regras para bloquear esse tipo de tráfego seriam realmente úteis.
Eu achei 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 https ainda funciona em máquinas, exceto na máquina local.
Respostas:
Em vez de corresponder com base no URL, tente corresponder com base no conteúdo do certificado.
Você também pode corresponder à impressão digital, mas se o destino alterar ou atualizar seu certificado, invalidará sua regra.
fonte
nat
tabela (e não há cadeia INPUT na tabela nat), acho que você quis dizerfilter
lá. Além disso, há uma chance (muito) remota de corresponder aos pacotes em que 443 é a porta do cliente-p tcp
para a regra, isso não parece ser algo útil ..O firewall não pode controlar quais URLs HTTPS o cliente está tentando acessar, porque a URL está criptografada. O firewall pode controlar apenas em 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 na mesma URL (e mesmo se não estiverem, você teria para manter uma enorme lista de endereços IP).
A única maneira realista de bloquear o HTTPS é bloqueá-lo completamente. Insista para que todas as conexões sejam HTTP válidas (ou seja, o cliente começa enviando uma
HTTP
linha e assim por diante). Isso não pode ser feito apenas com IPtables, você precisa de um proxy com reconhecimento de protocolo, como o Squid. (Não sei do que o Untangle Lite é capaz.)Você pode bloquear a maioria do tráfego HTTPS bloqueando o tráfego de saída para a porta 443, pois quase todos os servidores HTTPS estão nessa porta. Ou, seguindo uma abordagem da lista de permissões, permita apenas o tráfego de saída na porta 80 (a porta HTTP normal).
Uma abordagem diferente seria fazer proxy de todas as conexões HTTP e HTTPS. Em seguida, você pode corresponder por URLs. Isso requer a realização de um ataque man-in-the-middle aos 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 configuram um proxy fora do seu ambiente e executam o IP sobre HTTP ou algo assim.
Parece que você está tentando corrigir um problema social com meios técnicos, o que quase nunca funciona, ou está fazendo o possível para implementar um requisito bobo do gerenciamento (nesse caso, eu iria bloquear a porta 443, talvez apenas para determinados IPs, o que permitiria que você informasse que fez seu trabalho, por mais inútil que seja).
fonte
Eu sei de uma opção.
Se você tiver servidores DNS internos para uso, coloque algumas referências estáticas nos dados da zona do seu 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 da sua rede resolverão domínios (facebook.com/twitter.com per se) em um endereço de loopback, o que não levará a lugar algum.
Isso funcionará se você tiver controle total de autoridade na configuração do resolvedor de máquinas clientes da sua rede. Se as estações de trabalho / clientes tiverem permissões para alterar / editar / etc / hosts ou /etc/resolv.conf, eles poderão contornar esta opção.
fonte
/etc/hosts
arquivo. Por exemplo:127.0.0.1 www.facebook.com
Uma opção é blackhole rotas para blocos de rede: (Listados são para FB)
fonte
O filtro de conteúdo simples não pode bloquear o site ssl.
Use ferramentas de proteção contra intrusões, como o snort / suricata.
Regra IPS de amostra : Para bloquear URLs SSL para um 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 política do simplewall compartilhadas pelo Squid + Suricata IPS.
fonte
Você deve colocar isso na cadeia FORWARD, por exemplo
Isso afetará outros sistemas na rede, exceto o firewall.
fonte