Definir manualmente um proxy em um comando funciona, mas não defini-lo em proxychains

2

192.168.2.4 é uma máquina rodando um Squid Proxy na porta 3128, e um servidor web na porta 80 somente acessível através deste proxy.

Se eu correr:

$ curl 192.168.2.4 --proxy 192.168.2.4:3128

Funciona perfeitamente e cURL exibe o conteúdo da página inicial. Agora, quando tento usar ProxyChains:

$ cat proxychains.conf
strict_chain
tcp_read_time_out 15000
tcp_connect_time_out 8000
[ProxyList]
http 192.168.2.4 3128

$ proxychains curl 192.168.2.4
ProxyChains-3.1 (http://proxychains.sf.net)
|S-chain|-<>-192.168.2.4:3128-<><>-192.168.2.4:80-<--denied
curl: (7) Couldn't connect to server

Não funciona. Parece conectar-se corretamente ao Squid Proxy, mas não ao servidor web final.

Alguma idéia de por que isso seria o caso?

    
por christophetd 08.04.2017 / 12:26

1 resposta

1

Descobri com wireshark que, ao falar com um proxy, curl usa GET , enquanto proxychains usa CONNECT . A diferença é explicada aqui: Qual é a diferença entre “CONNECT” e “GET HTTPS”?

Outra resposta menciona o encadeamento de proxy com CONNECT . Acho que GET não pode ser encadeado, é por isso que proxychains usa CONNECT .

Agora, o artigo da Wikipedia sobre o tunelamento HTTP diz o seguinte sobre CONNECT :

Not all HTTP Proxy Servers support this feature, and even those that do, may limit the behaviour (for example only allowing connections to the default HTTPS port 443, or blocking traffic which doesn't appear to be SSL).

De fato, o Wiki do Cache de Squid declara (ênfase minha):

It is important to notice that the protocols passed through CONNECT are not limited to the ones Squid normally handles. Quite literally anything that uses a two-way TCP connection can be passed through a CONNECT tunnel. This is why the Squid default ACLs start with deny CONNECT !SSL_Ports and why you must have a very good reason to place any type of allow rule above them.

Eu acho que o seu squid.conf inclui uma linha como esta:

http_access deny CONNECT !SSL_Ports

Encontrei uma resposta que diz que é suficiente comentar esta linha . Verificado, funciona. No entanto, se você não quiser fazer um buraco tão grande em seu proxy, tente adicionar as três linhas a seguir ao seu squid.conf :

acl myserver dst 192.168.2.4
acl myport port 80
http_access allow CONNECT myserver myport
# the original uncommented line must be below, like this
http_access deny CONNECT !SSL_Ports
    
por 18.04.2017 / 00:18