3proxy é um conjunto de servidor proxy leve e de alto desempenho que pode ser instalado e configurado para fornecer serviços de proxy HTTP, HTTPS, SOCKSv4/4.5/5 e FTP, além de mapeamento de portas TCP e redirecionamento de tráfego, principalmente por meio de compilação a partir do código-fonte em sistemas Unix-like ou usando binários pré-compilados no Windows.
3proxy é um servidor proxy compacto e versátil, projetado para ambientes que exigem consumo mínimo de recursos e alta configurabilidade. Seu tamanho reduzido e sua eficiência o tornam adequado para sistemas embarcados, uso pessoal ou cenários em que um proxy completo como o Squid é exagero.
Pré-requisitos
Antes de instalar o 3proxy, verifique se o sistema de destino atende aos seguintes requisitos:
- Sistema operacional: um sistema Unix-like (Linux, FreeBSD, macOS) para compilação, ou Windows para a distribuição binária. Este guia foca no Linux.
- Compilador: GCC ou Clang (para compilação a partir do código-fonte).
- Ferramentas de build: utilitário
make. - Acesso à rede: capacidade de baixar os arquivos-fonte.
- Privilégios de usuário: acesso
rootousudopara instalação e configuração do serviço de sistema.
Instalação
Instalar o 3proxy normalmente envolve baixar o código-fonte, compilá-lo e depois colocar os binários e os arquivos de configuração nos locais apropriados.
Baixar o código-fonte
Sempre baixe a versão estável mais recente do site oficial do 3proxy ou do seu repositório no GitHub.
# Navegue até um diretório temporário
cd /tmp
# Baixe a versão estável mais recente (substitua pela versão atual, se for diferente)
# Confira https://3proxy.ru/ ou https://github.com/3proxy/3proxy para o link mais recente
wget https://3proxy.ru/0.9.4/3proxy-0.9.4.tar.gz
# Extraia o arquivo
tar -xzf 3proxy-0.9.4.tar.gz
# Entre no diretório extraído
cd 3proxy-0.9.4
Compilar e instalar
O 3proxy usa um Makefile simples. A compilação é direta.
# Compile o 3proxy
make -f Makefile.Linux
# Crie os diretórios de instalação
mkdir -p /usr/local/3proxy/bin
mkdir -p /usr/local/3proxy/etc
mkdir -p /usr/local/3proxy/logs
# Instale o binário compilado e a configuração de exemplo
cp src/3proxy /usr/local/3proxy/bin/
cp 3proxy.cfg.sample /usr/local/3proxy/etc/3proxy.cfg
# Defina as permissões adequadas (opcional, mas é boa prática)
chmod 755 /usr/local/3proxy/bin/3proxy
chmod 640 /usr/local/3proxy/etc/3proxy.cfg
Para sistemas que exigem recursos específicos (por exemplo, autenticação NTLM, suporte a IPv6), consulte o src/Makefile.Linux para ver as flags de compilação. Por exemplo, para habilitar o NTLM: make -f Makefile.Linux NTLM.
Configuração básica
O arquivo de configuração principal do 3proxy é o 3proxy.cfg. Ele define portas de escuta, tipos de proxy, métodos de autenticação e regras de acesso. O local padrão é /usr/local/3proxy/etc/3proxy.cfg.
Diretivas principais
Um 3proxy.cfg mínimo inclui:
nserver: especifica os servidores DNS para resolução de nomes de host.timeouts: define os diversos timeouts de conexão.log: define o caminho e o formato do arquivo de log.users: declara os usuários para autenticação.auth: especifica o método de autenticação.proxy,socks,tcppm: definem os serviços de proxy.
Exemplo: proxy HTTP/HTTPS simples
Esta configuração cria um proxy HTTP/HTTPS na porta 3128, exigindo autenticação básica para um usuário chamado testuser com a senha password123.
# /usr/local/3proxy/etc/3proxy.cfg
# Configurações globais
nserver 8.8.8.8 # DNS público do Google
nserver 8.8.4.4
# Timeouts em segundos
timeouts 1 5 30 60 180 1800 15 60
# Configurações de log
# log /usr/local/3proxy/logs/3proxy.log D # Rotação diária
log /usr/local/3proxy/logs/3proxy.log
logformat "- +_L%t.%. %N.%O %I %E %U %C:%c %R:%r %O %h %T"
# Usuários para autenticação: usuario:senha
users testuser:CL:password123
# Método de autenticação
# CL: senha em texto puro (não recomendado em produção)
# LM: hash LAN Manager
# NT: hash NTLM
# P: senha criptografada (formato interno do 3proxy, use `3proxy -e` para gerar)
auth strong # Usa autenticação forte (requer LM/NT ou P)
# Para senhas CL simples, use 'auth iponly,basic'
# Libera o acesso para usuários autenticados
allow testuser
# Define o serviço de proxy HTTP/HTTPS
# -p 3128: escuta na porta 3128
# -n: desativa a autenticação NTLM para este serviço (se o NTLM global estiver ativo)
# -a: ativa a autenticação básica
proxy -p3128
Para gerar uma senha criptografada usando 3proxy -e:
/usr/local/3proxy/bin/3proxy -e password123
A saída (por exemplo, _E_01000000010000000000000000000000) pode então ser usada na diretiva users com o prefixo _E_: users testuser:_E_01000000010000000000000000000000.
Executando o 3proxy
Depois de configurar o 3proxy.cfg, inicie o servidor:
/usr/local/3proxy/bin/3proxy /usr/local/3proxy/etc/3proxy.cfg
Para executá-lo em segundo plano como daemon:
/usr/local/3proxy/bin/3proxy /usr/local/3proxy/etc/3proxy.cfg -d
Tópicos avançados de configuração
Métodos de autenticação
O 3proxy suporta vários métodos de autenticação:
iponly: autenticação baseada apenas no endereço IP do cliente (sem usuário/senha).basic: autenticação HTTP Basic (envia as credenciais em texto puro).digest: autenticação HTTP Digest.ntlm: autenticação NTLM (exige compilação com suporte a NTLM).strong: seleciona automaticamente o método mais forte disponível.
Exemplo com auth iponly:
# /usr/local/3proxy/etc/3proxy.cfg
auth iponly
allow 192.168.1.0/24 # Libera todos os clientes desta sub-rede sem autenticação explícita de usuário
proxy -p3128
Controle de acesso
As diretivas allow e deny controlam o acesso dos clientes com base em vários critérios. As regras são processadas em ordem. A primeira regra que corresponder é aplicada.
# /usr/local/3proxy/etc/3proxy.cfg
# Bloqueia endereços IP específicos
deny 192.168.1.10
# Libera um usuário específico
allow myuser
# Libera uma sub-rede específica para HTTP/HTTPS
allow * 192.168.1.0/24 * * HTTP HTTPS
# Bloqueia o acesso a domínios de destino específicos
deny * * .example.com
A sintaxe de allow/deny é allow [user] [src_ip] [dst_ip] [target_port] [protocol]. O * funciona como curinga.
Encadeamento de proxies (proxies pai)
O 3proxy pode encaminhar requisições para outro servidor proxy usando a diretiva parent.
# /usr/local/3proxy/etc/3proxy.cfg
# Encadeia para um proxy HTTP upstream
parent 1000 http 192.168.1.100 8080 myuser:mypass
# Encadeia para um proxy SOCKS5 upstream
parent 1000 socks5 192.168.1.101 1080
O primeiro argumento, 1000, é um timeout em milissegundos.
Proxy SOCKS
Para configurar um proxy SOCKS (v4, v4.5, v5), use a diretiva socks.
# /usr/local/3proxy/etc/3proxy.cfg
# Define o serviço de proxy SOCKS na porta 1080
socks -p1080
Mapeamento de portas TCP (TCPPM)
A diretiva tcppm permite encaminhar conexões TCP de uma porta local para um host e porta remotos.
# /usr/local/3proxy/etc/3proxy.cfg
# Encaminha conexões da porta local 2222 para remotehost:22 (SSH)
tcppm -p2222 remotehost.example.com 22
Configuração de logs
A diretiva log especifica o arquivo de log. logformat define a estrutura da saída. rotate configura a rotação de logs.
# /usr/local/3proxy/etc/3proxy.cfg
# Grava o log em /usr/local/3proxy/logs/access.log
log /usr/local/3proxy/logs/access.log
# Formato de log personalizado
logformat "- +_L%t.%. %N.%O %I %E %U %C:%c %R:%r %O %h %T"
# Rotação diária (D), semanal (W), mensal (M) ou por tamanho (S<bytes>)
rotate D /usr/local/3proxy/logs/archive
Integração com o sistema (serviço systemd)
Para uma operação robusta, execute o 3proxy como serviço do systemd.
-
Crie um arquivo de serviço:
/etc/systemd/system/3proxy.service```ini
[Unit]
Description=3proxy Lightweight Proxy Server
After=network.target[Service]
Type=forking
ExecStart=/usr/local/3proxy/bin/3proxy /usr/local/3proxy/etc/3proxy.cfg -d
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
User=nobody # Ou um usuário dedicado sem privilégios, como '3proxy'
Group=nogroup # Ou um grupo dedicado[Install]
WantedBy=multi-user.target
`` *Observação*: crie o usuário/grupo3proxyse desejar:sudo useradd -r -s /sbin/nologin 3proxy. Ajuste a propriedade dos arquivos em/usr/local/3proxy/logs`. -
Recarregue o systemd, habilite e inicie o serviço:
bash sudo systemctl daemon-reload sudo systemctl enable 3proxy.service sudo systemctl start 3proxy.service sudo systemctl status 3proxy.service
Dicas de troubleshooting
- Confira os logs: sempre consulte o arquivo de log do 3proxy (
/usr/local/3proxy/logs/3proxy.logpor padrão) em busca de mensagens de erro ou problemas de acesso. - Regras de firewall: garanta que o firewall (por exemplo,
ufw,firewalld,iptables) permita conexões de entrada nas portas de escuta do 3proxy (por exemplo, 3128, 1080).
bash # Exemplo para o ufw sudo ufw allow 3128/tcp - Sintaxe da configuração: verifique se há erros de sintaxe no
3proxy.cfg. O 3proxy é exigente quanto ao formato da sua configuração. - Permissões: garanta que o binário do 3proxy tenha permissão de execução e que o diretório de logs seja gravável pelo usuário que roda o serviço.
- Reinicie o serviço: após qualquer alteração na configuração, recarregue ou reinicie o serviço do 3proxy (
sudo systemctl restart 3proxy).
3proxy vs. Squid
| Recurso | 3proxy | Squid |
|---|---|---|
| Uso de recursos | Mínimo (pouca CPU e RAM) | Moderado a alto (depende da carga/recursos) |
| Complexidade | Relativamente simples, config em texto | Complexo, muitas opções de configuração |
| Tipos de proxy | HTTP, HTTPS, SOCKS, FTP, TCPPM | HTTP, HTTPS, FTP, ICP, ESI |
| Cache | Sem cache nativo | Robusto e altamente configurável |
| Interceptação SSL | Limitada/básica | Avançada, baseada em certificados |
| Autenticação | Basic, Digest, NTLM, por IP | Abrangente (LDAP, Kerberos, RADIUS) |
| Caso de uso | Leve, pessoal, embarcado | Corporativo, alto tráfego, filtragem de conteúdo |
| Desenvolvimento | Ativo, um único desenvolvedor | Ativo, conduzido pela comunidade |
