mitos e fatos transparentes sobre proxy SSL

8

Estou pesquisando há muitas horas agora sobre uma maneira de configurar um proxy transparente para SSL (não o Squid). A resposta geral é que não posso, mas sei que existem algumas maneiras . Meu objetivo é apenas o seguinte:

  1. Nomes de domínio da lista negra / lista de permissões (não números de IP). O conteúdo não será filtrado nem modificado.
  2. Force os usuários através dessas listas. Se eu modificar essas configurações nos navegadores da Web, elas poderão desfazê-las.

A página a seguir diz que eu poderia passar o tráfego sem modificação, mas não diz como: iptables https proxy transparente com privoxy?

A página a seguir mostra uma regra do iptables para 443 que eu mesmo não consegui trabalhar: http://alien.slackbook.org/dokuwiki/doku.php?id=slackware:proxy

A página a seguir mostra como fazer isso funcionar apenas com o Squid: http://www.rahulpahade.com/content/squid-transparent-proxy-over-ssl-https

EDIT: Uma pessoa diz aqui: Como uso o IPTABLES para criar um pasto HTTPS (443) em torno do Squid? "A melhor coisa a fazer é bloquear o acesso direto à porta 443 e informar aos usuários que, se eles querem usar HTTPS, eles devem configurar o navegador para usar o proxy". Mas eu sei como bloquear o 443 completamente, para não fazê-lo funcionar sob um proxy.

Teresa e Junior
fonte

Respostas:

7

Se você deseja filtrar nomes de domínio, tem duas maneiras possíveis: você pode usar o método CONNECT emitido pelo cliente se souber que precisa usar um proxy para condições HTTPS e filtrá-lo (o Squids suporta isso BTW). Ou, se você realmente realmente precisa fazê-lo de forma transparente, você precisa olhar para as (criptografadas) cabeçalhos de solicitação.

Se você quiser ver os cabeçalhos de solicitação criptografados, precisará de uma chave. Se você deseja ter uma chave, precisa de um certificado que seja a) confiável pelo cliente para ser o certificado "correto" eb) certifique todos os hosts possíveis (curinga-tudo).

Então, o que você precisaria fazer é

  1. configure um certificado para seu proxy. Depende do seu software como fazer isso - você pode usar o stunnel para encerrar a conexão SSL no lado do proxy, ter algum proxy HTTP de filtragem por trás e restabelecer o SSL para todo o tráfego de saída usando destinos DNAT do iptables e stunnel novamente. Pode haver soluções "in a box" para proxy MitM SSL também.
  2. instale o certificado acima mencionado em todos os seus clientes que vão usar o proxy

Principalmente, se você precisar de proxy transparente, é porque não deseja ou não pode reconfigurar os clientes para usar o proxy. Se esse também for o caso da sua solicitação, você provavelmente não terá a opção de instalar certificados nos clientes e marcá-los como "confiáveis". Portanto, mesmo que exista uma maneira técnica de proxy SSL transparente, suspeito que pouco será ganho para você.

o wabbit
fonte
Isso foi o suficiente para deixar bem claro os fatos sobre proxies transparentes. Obrigado!
Teresa e Junior
Como você "... pega o nome do método CONNECT emitido pelo cliente se ele sabe que precisa usar um proxy para condições HTTPS e filtrar esse"?
Big McLargeHuge
@ davidkennedy85 com o Squid da mesma maneira que você filtraria por outros métodos de acesso - basta usar as ACLs. Exemplo: servercomputing.blogspot.de/2012/01/…
the-wabbit
Sua explicação é quase imperceptível; Eu aprendi muito. Obrigado. Alguém que duvide é que o nome do host (nome de domínio) seja conhecido por qualquer pessoa que monitore o tráfego. security.stackexchange.com/questions/2914/…
Albert Netymk
4

Sei que essa é uma pergunta antiga, mas se o OP quiser apenas colocar na lista negra / lista branca certos nomes de domínio, eles não precisam usar nenhum proxy, apenas uma lista negra baseada em DNS.

  • configure seus servidores DNS no local para retornar 127.0.0.1 para qualquer domínio que você deseja colocar na lista negra
  • no seu gateway da Internet, bloqueie todos os IPs, exceto os servidores DNS, de acessar as portas TCP / UDP 53, para que apenas seus servidores DNS possam fazer solicitações DNS de servidores baseados na Internet.

Qualquer outro domínio será permitido. Todo o tráfego da Web SSL ou de outra forma passará pelo gateway inalterado.

Editar: visto que o OP está preparado para forçar os usuários através de suas listas, ele pode bloquear outros métodos de acesso ao DNS. Dessa forma, se o usuário tentar usar um desses outros métodos DNS bloqueados, os sites simplesmente não funcionarão. aka "Meu caminho ou a estrada"

Para DNS sobre HTTPS mencionado pela @wheeler, basta bloquear pesquisas regulares de DNS em sites como https://dns.google.com e https://cloudflare-dns.com/dns-query e https: // doh.cleanbrowsing.org/doh/family-filter/ . Embora isso rapidamente se torne insustentável, à medida que mais e mais serviços ficam online.

Você também pode precisar de uma maneira de bloquear tipos MIME, como application / dns-udpwireformat, para outros métodos de DNS em desenvolvimento.

BeowulfNode42
fonte
Não é mais uma solução muito eficaz, já que o DNS sobre HTTPS é uma coisa agora.
veículo com rodas
2

O representante pode trabalhar como proxy Man-In-The-Middle para HTTPS.

AlexD
fonte
Obrigado, de fato, mas não consegui fazê-lo funcionar! Parece que precisa de regras diferentes para o iptables que as da porta 80, ou há alguma opção que não consigo descobrir para o Delegado.
Teresa e Junior
1

Para o modo transparente, o sistema Inline IPS (Suricata, Snort) pode ajudá-lo a bloquear sites SSL.

https://redmine.openinfosecfoundation.org/projects/suricata/wiki/Setting_up_IPSinline_for_Linux

Bloquear regras do site SSL para usuário específico:

drop ip any 443 -> 192.168.3.x any (content:".facebook.com"; msg:"Simplewall block facebook.com  ";sid:7;rev:1;)

drop ip any 443 -> 192.168.3.204 any (content:".youtube"; msg:"Simplewall block youtube.com" ;sid:4;rev:1;)

Regras de download de arquivo de bloqueio com base em extensões:

drop ip any any -> 192.168.3.63 any (msg:"File exe block"; fileext:"exe"; filestore ;sid:1;rev:1;)

drop ip any ssl -> 192.168.3.63 any (msg:"File mp3 block"; fileext:"mp3"; filestore ;sid:11;rev:1;)

drop ip any ssl -> 192.168.3.63 any (msg:"File pdf block"; fileext:"pdf"; filestore ;sid:21;rev:1;)

Experimente isso com o SimpleWall

É muito simples adicionar regras de bloqueio com a interface da web Simplewall.

Você também pode adicionar regras Simplewall => Content Filterusando as mesmas regras para o IPS, juntamente com o filtro de conteúdo http.

chetan-simplewall
fonte