A autenticação de proxy consiste em verificar a identidade do usuário por meio de um nome de usuário e uma senha antes de conceder acesso a um proxy, garantindo um uso controlado e seguro dos recursos de rede.
A autenticação de proxy serve para restringir o acesso ao proxy, impedir o uso não autorizado, gerenciar a banda e atribuir o consumo a usuários ou aplicações específicas. Isso é essencial para manter a segurança, aplicar políticas de uso e monitorar a atividade dentro de uma organização ou em serviços comerciais de proxy.
Como funciona a autenticação de proxy
Quando um cliente tenta se conectar a um recurso através de um proxy autenticado, o proxy solicita as credenciais ao cliente. O cliente, normalmente um navegador ou uma aplicação, envia então o nome de usuário e a senha na requisição seguinte.
A sequência de eventos costuma ser:
1. O cliente envia uma requisição (por exemplo, GET /resource HTTP/1.1) ao proxy.
2. O proxy responde com o código de status 407 Proxy Authentication Required e um cabeçalho Proxy-Authenticate, indicando o(s) esquema(s) de autenticação suportado(s) (por exemplo, Basic realm="Proxy Realm").
3. O cliente recebe o desafio. Se estiver configurado com credenciais, reenvia a requisição original incluindo o cabeçalho Proxy-Authorization com o nome de usuário e a senha codificados conforme o esquema indicado.
4. O proxy verifica as credenciais. Se forem válidas, encaminha a requisição do cliente ao recurso de destino e devolve a resposta ao cliente. Se forem inválidas, retorna outro status 407.
Tipos de autenticação de proxy
HTTP Basic Authentication
A HTTP Basic Authentication é a forma mais comum e mais simples de autenticação de proxy. O cliente envia as credenciais (nome de usuário e senha) codificadas em Base64 dentro do cabeçalho Proxy-Authorization.
Exemplo de cabeçalho Proxy-Authorization:
Proxy-Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ= (onde dXNlcm5hbWU6cGFzc3dvcmQ= é a codificação Base64 de username:password).
Características:
* Simplicidade: fácil de implementar tanto no cliente quanto no servidor.
* Segurança: as credenciais são apenas codificadas em Base64, não criptografadas. Ou seja, são facilmente decodificáveis se interceptadas. Por isso, a Basic Authentication deve ser usada preferencialmente sobre um túnel criptografado (HTTPS) ou quando o caminho de rede entre cliente e proxy é confiável.
* Sem estado: cada requisição carrega as credenciais.
HTTP Digest Authentication
A HTTP Digest Authentication é uma alternativa mais segura à Basic Authentication. Ela usa um mecanismo de desafio-resposta que evita a transmissão direta da senha pela rede. Em vez disso, envia-se um hash do nome de usuário, da senha, de um nonce (uma string única gerada pelo servidor) e de outros detalhes da requisição.
Características:
* Segurança: as senhas não são enviadas em texto puro nem em codificação facilmente reversível. Mitiga em certa medida os ataques de repetição.
* Complexidade: mais complexa de implementar do que a Basic Authentication.
* Menos comum: apesar de mais segura, é menos suportada por serviços de proxy e aplicações cliente do que a Basic Authentication.
Autenticação SOCKS5
O SOCKS5 é um protocolo de proxy que opera em um nível mais baixo que o HTTP. Ele lida com qualquer tipo de tráfego de rede (TCP e UDP). Os proxies SOCKS5 suportam um método de autenticação por nome de usuário/senha.
Características:
* Neutralidade de protocolo: pode encaminhar qualquer tráfego TCP/UDP, não apenas HTTP.
* Autenticação: suporta autenticação por nome de usuário/senha, com as credenciais enviadas como parte do handshake SOCKS.
* Segurança: as credenciais são enviadas sem criptografia durante o handshake, a menos que a própria conexão SOCKS seja tunelada por uma conexão segura (por exemplo, SSH).
Whitelist de IP (método complementar)
A whitelist de IP não é em si um método de autenticação, mas um mecanismo de controle de acesso. Ela permite o acesso ao proxy apenas a partir de uma lista predefinida de endereços IP confiáveis. Embora não exija nome de usuário/senha a cada requisição, pode ser usada em conjunto com a autenticação por credenciais ou como alternativa em cenários específicos nos quais os IPs dos clientes são estáticos e conhecidos.
Como configurar a autenticação de proxy
Configurar a autenticação de proxy envolve dois passos principais: gerenciar as credenciais junto ao seu provedor de proxy e configurar as aplicações cliente para usá-las.
Gerenciando credenciais no seu provedor de proxy
Em um serviço comercial de proxy, o gerenciamento de credenciais normalmente é feito pelo painel web do provedor ou por API.
- Acesse o painel: faça login no painel ou portal de gerenciamento do seu provedor de proxy.
- Seção de usuários/credenciais: vá até a seção dedicada a usuários de proxy, credenciais ou gerenciamento de acesso.
- Crie/edite credenciais:
- Nome de usuário: defina um nome de usuário único.
- Senha: defina uma senha forte e única. Alguns provedores geram senhas automaticamente.
- Atribuição de proxies: associe essas credenciais a proxies, pools ou cotas de banda específicos, conforme o modelo do serviço.
Exemplo (chamada de API conceitual para criação de credenciais):
Muitos serviços de proxy avançados oferecem uma API para o gerenciamento programático de credenciais.
POST /api/v1/users
Content-Type: application/json
Authorization: Bearer YOUR_API_KEY
{
"username": "my_proxy_user",
"password": "StrongPassword123!",
"assigned_proxy_group": "datacenter_proxies_us"
}
Essa chamada de API criaria um novo usuário my_proxy_user com a senha indicada e o atribuiria a um grupo específico de proxies.
Configurando as aplicações cliente para usar as credenciais
Depois de criar as credenciais no seu serviço de proxy, é preciso configurar as aplicações cliente para fornecê-las na conexão através do proxy.
Navegadores
Os navegadores normalmente usam as configurações de proxy do sistema ou extensões dedicadas.
-
Configurações de proxy do sistema:
- Windows:
Configurações > Rede e Internet > Proxy > Configuração manual de proxy. Informe o endereço e a porta do proxy e ative "Não usar o servidor proxy para endereços locais". O navegador pedirá as credenciais na primeira vez que encontrar um proxy autenticado. - macOS:
Ajustes do Sistema > Rede > Wi-Fi/Ethernet > Detalhes... > Proxies. ConfigureWeb Proxy (HTTP)eSecure Web Proxy (HTTPS). Marque "O servidor proxy requer senha" e informe as credenciais, ou deixe desmarcado para receber o prompt. - Linux (GNOME/KDE):
Configurações > Rede > Proxy de rede. Configure o proxy HTTP e HTTPS. As credenciais serão solicitadas pelo ambiente de trabalho.
- Windows:
-
Extensões de navegador (por exemplo, FoxyProxy, SwitchyOmega):
Essas extensões oferecem controle granular, permitindo proxies específicos para diferentes URLs ou padrões.- Instale a extensão.
- Adicione uma nova configuração de proxy.
- Informe o
Hoste aPortdo proxy. - Selecione o tipo
HTTPouSOCKS. - Marque "Autenticação necessária" e informe seu
UsernameePassword. - Configure os padrões de URL que ativam o proxy.
Ferramentas de linha de comando
-
curl:
bash curl -x http://username:[email protected]:8080 http://target.com
Como alternativa, use opções separadas:
bash curl --proxy http://proxy.example.com:8080 --proxy-user username:password http://target.com -
wget:
bash wget -e use_proxy=yes -e http_proxy=http://username:[email protected]:8080 http://target.com
Linguagens de programação/bibliotecas
-
Python (biblioteca
requests):
```python
import requestsproxy_host = "proxy.example.com"
proxy_port = 8080
proxy_user = "username"
proxy_pass = "password"proxies = {
"http": f"http://{proxy_user}:{proxy_pass}@{proxy_host}:{proxy_port}",
"https": f"http://{proxy_user}:{proxy_pass}@{proxy_host}:{proxy_port}"
}try:
response = requests.get("http://httpbin.org/ip", proxies=proxies)
print(response.json())
except requests.exceptions.RequestException as e:
print(f"Request failed: {e}")
``` -
Node.js (biblioteca
axioscomhttps-proxy-agent):
Primeiro, instaleaxiosehttps-proxy-agent:npm install axios https-proxy-agent
```javascript
const axios = require('axios');
const HttpsProxyAgent = require('https-proxy-agent');const proxyHost = "proxy.example.com";
const proxyPort = 8080;
const proxyUser = "username";
const proxyPass = "password";const proxyAgent = new HttpsProxyAgent(
http://${proxyUser}:${proxyPass}@${proxyHost}:${proxyPort});axios.get('http://httpbin.org/ip', {
proxy: false, // Importante: desativa o tratamento interno de proxy do axios
httpAgent: proxyAgent,
httpsAgent: proxyAgent
})
.then(response => {
console.log(response.data);
})
.catch(error => {
console.error("Request failed:", error.message);
});
```
Variáveis de ambiente do sistema operacional
Muitas aplicações e ferramentas de linha de comando respeitam variáveis de ambiente para as configurações de proxy.
- Linux/macOS:
bash export HTTP_PROXY="http://username:[email protected]:8080" export HTTPS_PROXY="http://username:[email protected]:8080" export ALL_PROXY="socks5://username:[email protected]:1080" # Para SOCKS # Em algumas ferramentas, pode ser necessário exportar a autenticação do proxy separadamente: export PROXY_AUTH="username:password" - Windows (Prompt de Comando):
cmd set HTTP_PROXY=http://username:[email protected]:8080 set HTTPS_PROXY=http://username:[email protected]:8080
Essas variáveis valem para a sessão atual do shell e seus processos filhos.
Boas práticas de autenticação de proxy
- Senhas fortes e únicas: use senhas complexas nas contas de proxy, combinando letras maiúsculas e minúsculas, números e símbolos. Não reutilize senhas de outros serviços.
- Rotação periódica de credenciais: troque as senhas das contas de proxy regularmente para reduzir o risco de credenciais comprometidas.
- Use HTTPS nos recursos de destino: mesmo com Basic Authentication, garantir que a conexão final com o site de destino seja HTTPS criptografa o conteúdo, protegendo informações sensíveis depois do proxy.
- Combine com whitelist de IP: para mais segurança, restrinja o acesso ao proxy a endereços IP de cliente específicos, além de exigir credenciais. Isso cria uma defesa em camadas.
- Monitore os logs de acesso: revise regularmente os logs de acesso do proxy em busca de atividade incomum, tentativas de login malsucedidas ou padrões de acesso não autorizado.
- Menor privilégio: conceda aos usuários de proxy apenas as permissões necessárias. Se o serviço oferece grupos de proxies ou limites de banda distintos, configure-os adequadamente.
Comparação dos métodos de autenticação
| Recurso | HTTP Basic Authentication | HTTP Digest Authentication | Autenticação SOCKS5 |
|---|---|---|---|
| Nível de protocolo | HTTP/HTTPS | HTTP/HTTPS | SOCKS (camada 5) |
| Credenciais enviadas | username:password em Base64 |
Desafio-resposta com hash | Texto puro durante o handshake (geralmente) |
| Segurança | Baixa (fácil de decodificar) | Moderada (senha não é transmitida) | Baixa (texto puro) |
| Uso | Apenas tráfego HTTP/HTTPS | Apenas tráfego HTTP/HTTPS | Qualquer tráfego TCP/UDP (FTP, SSH, DNS) |
| Implementação | Simples | Complexa | Moderada |
| Suporte em navegadores | Universal (com prompt) | Limitado | Via extensões ou configurações do sistema |
| Frequência de uso | Muito comum em proxies comerciais | Pouco comum | Comum em proxying de uso geral |
| Criptografia | Depende de HTTPS para segurança ponta a ponta | Depende de HTTPS para segurança ponta a ponta | Depende de túnel externo (por exemplo, SSH) |
Solução de problemas comuns de autenticação
- Credenciais incorretas: confira o nome de usuário e a senha. Atenção a maiúsculas/minúsculas e caracteres especiais.
- Endereço/porta do proxy divergentes: verifique se o endereço e a porta configurados na aplicação cliente coincidem com os fornecidos pelo serviço.
- Esquema de autenticação divergente: confirme que o cliente está configurado para o tipo correto de autenticação (por exemplo, Basic se o proxy espera Basic). A maioria dos clientes faz isso automaticamente em proxies HTTP.
- Conectividade de rede: confirme que a máquina cliente alcança o IP e a porta do proxy. Regras de firewall no cliente ou no servidor podem estar bloqueando as conexões.
- Status do servidor proxy: o proxy pode estar temporariamente fora do ar ou com problemas. Consulte a página de status do seu provedor.
- Configuração do software cliente: algumas aplicações ou bibliotecas têm requisitos específicos ou bugs relacionados à autenticação de proxy. Consulte a documentação delas.
- Conflito com whitelist de IP: se a whitelist de IP está ativa no proxy, verifique se o IP público do seu cliente está autorizado. Se o seu IP mudar, atualize a whitelist.
