Erro ao obter proxy transparente de encaminhamento do Squid trabalhando com ssl

1

Eu tenho um ambiente que consiste em quatro servidores conectados em rede. Um servidor atua como o servidor e os outros três atuam como clientes para executar testes automatizados e benchmarking do Linux usando o Phoromatic.

Os quatro sistemas estão todos atrás de um firewall corporativo. Se eu definir as variáveis de ambiente "http_proxy" e "https_proxy" nos clientes, elas poderão se conectar ao mundo externo e fazer o download de testes, mas não se conectarão ao servidor enquanto tentam se conectar ao servidor local usando o proxy . Desde que eu queria armazenar em cache os downloads de pacotes, testes, etc ... eu configurei um proxy Squid no sistema servidor, e configurei-o como um proxy transparente, mas ele só funciona com requisições http.

O que eu gostaria de fazer é ter as solicitações http manipuladas por meio do cache e encaminhadas ao proxy pai conforme necessário. Obviamente, não consigo descriptografar as sessões ssl, mas não consigo descobrir como fazer com que o proxy Squid envie solicitações https ao proxy pai. Além disso, o proxy squid está sendo executado na mesma caixa do servidor Phoromatic, que é baseado na Web, mas usa uma porta não padrão configurável pelo usuário, mas o Squid gosta de bloquear solicitações à porta mencionada, mesmo quando é adicionado à configuração como permitido.

Eu ficaria bem se os clientes usassem o firewall corporativo diretamente para solicitações https e ftp e apenas usassem o cache do Squid para solicitações http, ou abandonassem o proxy Squid e tivessem os clientes configurados para não usar o proxy para anfitriões locais.

É realmente frustrante para mim, já que na maioria das vezes eu sou ótimo em procurar informações e fazer as coisas funcionarem sozinhas, sem ter que escolher o cérebro de outra pessoa sobre isso, mas acho que tenho uma situação única! E sim, eu tentei o fórum Phoronix para Phoromatic sem sucesso.

Servidores são sistemas de chassi duplo SuperMicro X8DTT rodando o Fedora 24. Configuração de rede consiste de uma conexão GbE a um switch (usado como conexão ao mundo externo) assim como dois 10Gb em cada sistema, também conectados através de um switch, mas o sistema de 10Gb não está conectado ao mundo externo - eles são usados para teste de largura de banda (os drivers para as placas de 10Gb são o que o sistema está configurado para testar)

    
por Andrew Bowers 17.02.2016 / 19:30

2 respostas

2

Vou ser curto (sim, não parece curto, mas de outra forma seria muito mais longo e totalmente ilegível).

  • não parece que você precise de proxy. como totalmente.
  • em um ambiente moderno, uma relação de cache pode estar entre zero e 40% (e estou julgando com base em minhas taxas de bytes de proxies), portanto, se você quiser salvar essa quantidade de dados, pode, claro, usar proxy. Mas considere isto: no ambiente corporativo de hoje, o papel de um proxy é mais de autorizar usuários a caminho do acesso à WAN, do que dados de armazenamento em cache. E essa é a principal razão para duvidar de sua escolha.
  • se você ainda precisar do proxy, isso não significa que você tenha para descriptografar o HTTPS. apenas deixe viver. não será armazenado em cache, e daí? Está no seu design.
  • se você ainda está insistindo em descriptografar o HTTPS - você pode usar a técnica sslBump . Mas isso pode ser ilegal em alguns países e, além disso, isso complica muito as coisas. Como muito . Eu aconselho que você não faça isso apenas para fins de cache.
  • não atende tráfego local via proxy: ele adiciona latência, carrega o proxy, com tráfego desnecessário (já que é barato e os canais LAN são muito mais largos que a WAN), complica a depuração e adiciona dependências de rede parasita, então é imprudente.
  • desde que eu duvido que você precisa de proxy, duvido ainda mais que você precisa de um proxy pai. Parece que você está apenas tendo essa coisa ... você sabe, sendo em proxies. use um, se precisar.
  • pode ser em vez do proxy, você só precisa de um servidor web rápido e decente, o nginx da linha. Portanto, em uma situação em que seus servidores da web ficam sobrecarregados, ele pode atuar como um balanceador para um farm com um cache de l2.
  • squid não está bem dimensionado. para 10 gigabytes de largura de banda, você terá que usar os recursos SMP squid , e isso tem suas desvantagens. Como carga desequilibrada em trabalhadores de lula, problemas de SMP em internos de lula e assim por diante. Pode ser solucionável se você tiver experiência anterior com squid , mas é improvável se você configurá-lo como pela primeira vez.
  • finalmente, se você está decidido a ficar com o squid, não precisa ser transparente: você pode configurar o WPAD para clientes e permitir que os servidores decidam como acessar a Internet.
por 17.02.2016 / 20:04
1

I set up a Squid proxy on the server system, and configured it as a transparent proxy, but it only works with http requests.

Isso é esperado, pois o HTTP e o HTTPS funcionam de maneira diferente e não podem ser tratados da mesma maneira por um proxy. Quando uma solicitação HTTPS é redirecionada para uma porta proxy de forma transparente, o proxy não pode examinar o tráfego criptografado e, portanto, não pode manipulá-lo. Um proxy transparent na verdade funciona mais como um "Man in the Middle" que intercepta o tráfego HTTP sem que os usuários saibam, o que é possível devido à falta de segurança no protocolo http.

link

HTTPS (also called HTTP over TLS,[1][2] HTTP over SSL,[3] and HTTP Secure[4][5]) is a protocol for secure communication over a computer network which is widely used on the Internet. HTTPS consists of communication over Hypertext Transfer Protocol (HTTP) within a connection encrypted by Transport Layer Security or its predecessor, Secure Sockets Layer. The main motivation for HTTPS is authentication of the visited website and protection of the privacy and integrity of the exchanged data.

In its popular deployment on the internet, HTTPS provides authentication of the website and associated web server with which one is communicating, which protects against man-in-the-middle attacks. Additionally, it provides bidirectional encryption of communications between a client and server, which protects against eavesdropping and tampering with and/or forging the contents of the communication.[6] In practice, this provides a reasonable guarantee that one is communicating with precisely the website that one intended to communicate with (as opposed to an impostor), as well as ensuring that the contents of communications between the user and site cannot be read or forged by any third party.

Como você pode ver, o HTTPS deve proteger contra o homem no ataque do meio e não permitir isso. A seguinte página do Squid explica todas as suas dúvidas e confusões em detalhes.

link

When a browser comes across an https:// URL, it does one of two things:

  • opens an SSL/TLS connection directly to the origin server or

  • opens a TCP tunnel through Squid to the origin server using the CONNECT request method.

Squid interaction with these two traffic types is discussed below.

CONNECT tunnel

The CONNECT method is a way to tunnel any kind of connection through an HTTP proxy. By default, the proxy establishes a TCP connection to the specified server, responds with an HTTP 200 (Connection Established) response, and then shovels packets back and forth between the client and the server, without understanding or interpreting the tunnelled traffic. For the gory details on tunnelling and the CONNECT method, please see RFC 2817 and the expired Tunneling TCP based protocols through Web proxy servers draft.

CONNECT tunnel through Squid

When a browser establishes a CONNECT tunnel through Squid, Access Controls are able to control CONNECT requests, but only limited information is available. For example, many common parts of the request URL do not exist in a CONNECT request:

  • the URL scheme or protocol (e.g., http://, https://, ftp://, voip://, itunes://, or telnet://),

  • the URL path (e.g., /index.html or /secure/images/),

  • and query string (e.g. ?a=b&c=d)

With HTTPS, the above parts are present in encapsulated HTTP requests that flow through the tunnel, but Squid does not have access to those encrypted messages. Other tunnelled protocols may not even use HTTP messages and URLs (e.g., telnet).

Quando um navegador é configurado para usar um proxy manualmente, ele usa o método CONNECT mencionado acima e funciona. Dito isto, existem maneiras de configurar o proxy transparente para interceptar o tráfego https (ssl-bump), que não é recomendado e deve ser usado com cuidado.

Bumping CONNECT tunnels

{X} WARNING: {X} HTTPS was designed to give users an expectation of privacy and security. Decrypting HTTPS tunnels without user consent or knowledge may violate ethical norms and may be illegal in your jurisdiction. Squid decryption features described here and elsewhere are designed for deployment with user consent or, at the very least, in environments where decryption without consent is legal. These features also illustrate why users should be careful with trusting HTTPS connections and why the weakest link in the chain of HTTPS protections is rather fragile. Decrypting HTTPS tunnels constitutes a man-in-the-middle attack from the overall network security point of view. Attack tools are an equivalent of an atomic bomb in real world: Make sure you understand what you are doing and that your decision makers have enough information to make wise choices.

Squid SslBump and associated features can be used to decrypt HTTPS CONNECT tunnels while they pass through a Squid proxy. This allows dealing with tunnelled HTTP messages as if they were regular HTTP messages, including applying detailed access controls and performing content adaptation (e.g., check request bodies for information leaks and check responses for viruses). Configuration mistakes, Squid bugs, and malicious attacks may lead to unencrypted messages escaping Squid boundaries.

From the browser point of view, encapsulated messages are not sent to a proxy. Thus, general interception limitations, such as inability to authenticate individual embedded requests, apply here as well.

    
por 17.02.2016 / 20:04