Para montar seu próprio servidor proxy, normalmente você instala e configura um software de proxy dedicado, como Squid para cache HTTP/HTTPS, 3proxy para HTTP/SOCKS leve ou Dante para SOCKS5 robusto, definindo portas de escuta, controles de acesso e mecanismos de autenticação em um servidor Linux.
Montar um servidor proxy auto-hospedado dá controle sobre o tráfego de rede, privacidade, acesso a conteúdo com restrição geográfica ou segurança reforçada para redes internas. A escolha do software depende de requisitos específicos, como suporte a protocolos (HTTP, HTTPS, SOCKS), necessidades de cache e complexidade desejada.
Pré-requisitos gerais
Antes de configurar qualquer proxy, garanta que seu servidor atenda a estes requisitos básicos:
* Sistema operacional: costuma-se usar uma distribuição Linux (por exemplo, Ubuntu, Debian, CentOS).
* Acesso à rede: o servidor precisa ter conectividade de rede adequada e um endereço IP público, caso seja necessário acesso externo.
* Configuração do firewall: abra as portas necessárias (por exemplo, 3128 para HTTP, 1080 para SOCKS) no firewall do servidor (por exemplo, ufw, firewalld).
Servidor proxy Squid
O Squid é um proxy de cache poderoso e completo para clientes web, com suporte a HTTP, HTTPS, FTP e outros protocolos. Ele se destaca no cache de conteúdo acessado com frequência, reduzindo o consumo de banda e melhorando os tempos de resposta.
Instalação (Debian/Ubuntu)
sudo apt update
sudo apt install squid
No CentOS/RHEL: sudo yum install squid ou sudo dnf install squid.
Configuração básica
O arquivo principal de configuração fica normalmente em /etc/squid/squid.conf.
1. Definir a porta de escuta:
Localize ou adicione a diretiva http_port.
http_port 3128
2. Listas de controle de acesso (ACLs):
O Squid usa ACLs para definir segmentos de rede, usuários ou outros critérios, e regras http_access para aplicar ações.
```
# Define uma ACL de rede local (substitua pela sub-rede local do seu servidor ou pelo IP do cliente)
acl localnet src 192.168.1.0/24 # Exemplo: permitir clientes desta sub-rede
acl localhost src 127.0.0.1/32
# Permitir acesso para as ACLs definidas
http_access allow localhost
http_access allow localnet
# Negar todo o restante
http_access deny all
```
Para permitir acesso de qualquer endereço IP (menos seguro, use com cautela e com autenticação):
```
acl all src 0.0.0.0/0
http_access allow all
```
- Reiniciar o Squid:
bash sudo systemctl restart squid sudo systemctl enable squid sudo systemctl status squid
Autenticação de usuário (Basic Auth)
Implemente autenticação básica por usuário/senha para mais segurança.
1. Instalar os utilitários do Apache (para o htpasswd):
bash
sudo apt install apache2-utils
2. Criar o arquivo de senhas:
bash
sudo htpasswd -c /etc/squid/passwd yourusername
# Digite e confirme a senha. Para adicionar mais usuários, omita o -c:
# sudo htpasswd /etc/squid/passwd anotheruser
3. Configurar a autenticação no Squid:
Adicione estas linhas ao squid.conf (por exemplo, no topo ou na seção AUTH):
```
auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/passwd
auth_param basic children 5 startup=5 idle=1
auth_param basic realm "Squid Proxy Authentication"
auth_param basic credentialsttl 2 hours
acl authenticated proxy_auth REQUIRED
http_access allow authenticated
http_access deny all
```
Garanta que `http_access allow authenticated` apareça *antes* de qualquer regra `http_access deny all` que bloquearia usuários autenticados.
- Reinicie o Squid.
Interceptação de HTTPS (proxy transparente)
O Squid pode interceptar e descriptografar tráfego HTTPS, o que exige gerar e confiar em um certificado SSL personalizado nas máquinas cliente. Essa é uma configuração complexa, usada principalmente em ambientes corporativos para filtragem e monitoramento de conteúdo, e em geral não é recomendada para uso pessoal por causa das implicações de segurança e privacidade.
Servidor proxy 3proxy
O 3proxy é um servidor proxy leve e versátil, com suporte a HTTP, HTTPS (CONNECT), SOCKS4/5, FTP e outros protocolos. É conhecido pelo pequeno consumo de recursos e pela configuração flexível.
Instalação (compilando a partir do código-fonte)
O 3proxy costuma ser compilado a partir do código-fonte para obter a versão mais recente e o máximo de controle.
1. Instalar as ferramentas de compilação:
bash
sudo apt update
sudo apt install build-essential git
2. Baixar e compilar:
bash
git clone https://github.com/z3APA3A/3proxy.git
cd 3proxy
make -f Makefile.Linux
sudo make -f Makefile.Linux install
Os binários normalmente serão instalados em /usr/local/bin/3proxy.
Configuração básica
Crie um arquivo de configuração, por exemplo /etc/3proxy/3proxy.cfg.
1. Resolvedor DNS:
nserver 8.8.8.8 # DNS do Google
nserver 1.1.1.1 # DNS da Cloudflare
2. Autenticação (se desejar):
auth strong
users yourusername:CL:yourpassword # CL para texto puro, use hash em produção
3. Definir os proxies:
* Proxy HTTP:
proxy -p3128
* Proxy SOCKS5:
socks -p1080
* HTTP e SOCKS combinados:
proxy -p3128
socks -p1080
4. Controle de acesso:
Depois das linhas users e antes das linhas proxy/socks:
allow yourusername # Permitir apenas o usuário especificado
# Ou para permitir todos os usuários autenticados:
# allow *
# Ou para permitir a partir de um IP específico:
# allow 192.168.1.0/24
Uma configuração básica e menos segura, que permite qualquer pessoa de qualquer lugar:
allow * *
proxy -p3128
socks -p1080
5. Iniciar o 3proxy:
bash
/usr/local/bin/3proxy /etc/3proxy/3proxy.cfg
Para execução em segundo plano, use start 3proxy /etc/3proxy/3proxy.cfg dentro do arquivo de configuração, ou use systemd para um gerenciamento de serviço adequado.
Serviço systemd (opcional)
Crie /etc/systemd/system/3proxy.service:
[Unit]
Description=3proxy Proxy Server
After=network.target
[Service]
ExecStart=/usr/local/bin/3proxy /etc/3proxy/3proxy.cfg
Restart=always
User=nobody # Executar como usuário sem privilégios
[Install]
WantedBy=multi-user.target
Em seguida:
sudo systemctl daemon-reload
sudo systemctl enable 3proxy
sudo systemctl start 3proxy
sudo systemctl status 3proxy
Servidor SOCKS Dante
O Dante é um servidor proxy SOCKS robusto, com suporte principal a SOCKS4 e SOCKS5. É conhecido pela estabilidade e pelo desempenho, o que o torna adequado para tunelamento SOCKS de alto tráfego.
Instalação (Debian/Ubuntu)
sudo apt update
sudo apt install dante-server
No CentOS/RHEL: sudo yum install dante-server ou sudo dnf install dante-server.
Configuração básica
O arquivo principal de configuração é /etc/danted.conf.
1. Definir interfaces de rede e portas:
logoutput: stderr
internal: eth0 port = 1080 # Substitua eth0 pelo nome da interface interna do seu servidor
external: eth0 # Substitua eth0 pelo nome da interface externa do seu servidor
Se você tiver apenas uma interface, use-a tanto em internal quanto em external.
2. Privilégios de usuário:
user.privileged: root
user.notprivileged: nobody
3. Métodos de autenticação:
Para autenticação por usuário/senha, o Dante usa usuários do sistema.
socksmethod: username none
username exige autenticação do cliente; none permite acesso sem autenticação.
4. Regras de acesso:
Defina regras client (quem pode se conectar ao proxy) e regras socks (que tráfego o proxy vai encaminhar).
```
# Regra de cliente: permitir que qualquer um se conecte ao proxy
client pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
socksmethod: username none # Aplica os métodos de autenticação definidos acima
}
# Regra SOCKS: permitir que o proxy encaminhe tráfego para qualquer lugar
socks pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
socksmethod: username none
}
```
Para restringir o acesso do cliente a uma faixa de IP específica:
```
client pass {
from: 192.168.1.0/24 to: 0.0.0.0/0
socksmethod: username none
}
```
- Criar um usuário de sistema para autenticação:
Sesocksmethod: usernamefor usado, crie um usuário de sistema (sem diretório home nem acesso a shell, por segurança).
bash sudo adduser --no-create-home --shell /usr/sbin/nologin proxyuser # Defina uma senha forte para o proxyuser - Reiniciar o Dante:
bash sudo systemctl restart danted sudo systemctl enable danted sudo systemctl status danted
Tabela comparativa: Squid vs. 3proxy vs. Dante
| Recurso | Squid | 3proxy | Servidor SOCKS Dante |
|---|---|---|---|
| Tipo | HTTP/HTTPS, cache, direto/reverso | HTTP, HTTPS (CONNECT), SOCKS4/5, FTP | SOCKS4/5 |
| Complexidade | Média a alta (por causa dos muitos recursos) | Baixa a média (configuração compacta) | Média (implementação SOCKS robusta) |
| Uso principal | Cache web, filtragem de conteúdo, controle de acesso | Proxy leve, gateway SOCKS, versátil | Proxy SOCKS de alto desempenho, tunelamento |
| Desempenho | Alto (especialmente com cache) | Muito leve, eficiente | Alto, otimizado para tráfego SOCKS |
| Autenticação | Basic, Digest, NTLM, helpers externos | Basic, NTLM, por IP, helpers externos | Usuário/senha (usuários do sistema), por IP |
| Suporte a SO | Linux, FreeBSD, Windows (via Cygwin) | Linux, Windows, BSD, macOS | Linux, FreeBSD, Solaris, macOS |
| Configuração | Extensa, granular, em texto | Compacta, tipo script, em texto | Em texto, com seções claras |
Considerações gerais de segurança e desempenho
- Firewall: configure sempre o firewall do servidor (por exemplo,
ufw,firewalld) para permitir conexões de entrada nas portas do proxy apenas a partir de IPs ou faixas de IP confiáveis. - Autenticação: use senhas fortes e únicas para a autenticação do proxy. Para proxies expostos publicamente, sempre ative a autenticação.
- Privilégio mínimo: execute os serviços de proxy sob um usuário dedicado e sem privilégios (por exemplo,
nobodyou um usuário personalizado) para limitar os danos em caso de comprometimento. - Monitoramento: revise regularmente os logs do proxy em busca de atividade incomum e monitore os recursos do servidor (CPU, RAM, I/O de rede) para identificar gargalos de desempenho ou possíveis ataques.
- Atualizações: mantenha o software de proxy e o sistema operacional atualizados para corrigir vulnerabilidades de segurança.
- Hardware: garanta que o servidor tenha CPU, RAM e banda de rede adequadas à carga esperada. Para o Squid com cache pesado, armazenamento SSD é vantajoso.
