Tinyproxy é um servidor proxy HTTP/HTTPS leve e de código aberto, projetado para consumo mínimo de recursos em sistemas Linux. Ele oferece a funcionalidade básica de proxy adequada para dispositivos embarcados, uso pessoal ou ambientes de rede de pequena escala em que a eficiência de recursos é crítica.
Visão geral e casos de uso
O Tinyproxy prioriza uma pegada pequena e uma configuração direta em vez de recursos extensos como cache avançado, métodos abrangentes de autenticação ou capacidades de proxy SOCKS presentes em soluções de proxy maiores. Ele funciona principalmente como um proxy HTTP/HTTPS (método CONNECT).
Casos de uso típicos do Tinyproxy incluem:
- Proxy pessoal: ocultar endereços IP de clientes ou contornar geo-restrições básicas para usuários individuais.
- Sistemas embarcados: fornecer serviços de proxy em dispositivos com CPU, RAM e armazenamento limitados.
- Ambientes de desenvolvimento: testes locais de aplicações que usam proxy ou inspeção de tráfego de rede.
- Gateway de rede pequena: um proxy simples, sem cache, para um número limitado de clientes.
- Encadeamento de proxies: atuar como intermediário em uma configuração com múltiplos proxies.
Instalação
O Tinyproxy está disponível nos repositórios de pacotes padrão da maioria das distribuições Linux.
Debian/Ubuntu
sudo apt update
sudo apt install tinyproxy
RHEL/CentOS/Fedora
sudo dnf install tinyproxy
# Ou para CentOS/RHEL mais antigos:
# sudo yum install tinyproxy
Após a instalação, o Tinyproxy normalmente inicia automaticamente e escuta na porta 8888.
Configuração
A configuração do Tinyproxy é gerenciada por um único arquivo, normalmente localizado em /etc/tinyproxy/tinyproxy.conf. Todas as diretivas estão comentadas dentro do arquivo padrão, o que fornece autodocumentação.
Diretivas essenciais
-
Port: especifica a porta em que o Tinyproxy escuta.
Port 8888
Alterar esse valor exige reiniciar o serviço do Tinyproxy. -
Listen: vincula o Tinyproxy a um endereço IP específico. Por padrão, ele escuta em todas as interfaces disponíveis (0.0.0.0). Especificar um endereço restringe o acesso.
Listen 192.168.1.10 -
Allow: define os endereços IP ou sub-redes autorizados a se conectar ao proxy. Várias diretivasAllowpodem ser usadas. Se nenhuma diretivaAllowfor especificada, o Tinyproxy permite conexões de todos os hosts. Negar tudo explicitamente e então liberar faixas específicas é uma prática comum de segurança.
# Deny all by default (if no Allow directives are present, this is implicitly false) # Allow 127.0.0.1 # Allow 192.168.1.0/24 -
Timeout: define o tempo limite de inatividade das conexões, em segundos.
Timeout 600 -
User/Group: especifica o usuário e o grupo para os quais o Tinyproxy deve reduzir privilégios após a inicialização. Rodar como usuário não-root é uma boa prática de segurança.
User tinyproxy Group tinyproxy -
LogLevel: controla o nível de detalhe dos logs. As opções incluemCritical,Error,Warning,Notice,Info,Debug.
LogLevel Info -
LogFile: especifica o caminho do arquivo de log.
LogFile "/var/log/tinyproxy/tinyproxy.log" -
MaxClients: define o número máximo de conexões simultâneas de clientes que o Tinyproxy vai atender. Ultrapassar esse limite resulta em rejeição da conexão.
MaxClients 100 -
DisableViaHeader: quando ativada, o Tinyproxy não adiciona o cabeçalhoViaàs requisições de saída. Isso pode aumentar a privacidade ao evitar a revelação da presença do proxy.
DisableViaHeader Yes -
ConnectPort: especifica quais portas o Tinyproxy vai permitir em requisiçõesCONNECT(usadas para tunelamento HTTPS). Várias diretivasConnectPortpodem ser usadas.
ConnectPort 443 ConnectPort 563
Diretivas de configuração avançada
-
Upstream: encadeia o Tinyproxy a outro servidor proxy. Essa diretiva especifica um proxy upstream para domínios específicos ou para todo o tráfego.
```
# Use upstream_proxy.example.com:8080 for all requests
Upstream http upstream_proxy.example.com:8080Use a different upstream for specific domains
Upstream http 10.0.0.1:3128 "example.com"
Upstream http 10.0.0.1:3128 ".example.org"
`` A palavra-chavehttpindica um proxy HTTP. As diretivasUpstream` são processadas em ordem; a primeira correspondência prevalece. -
NoCache: impede que o Tinyproxy envie determinados cabeçalhos HTTP que poderiam causar cache no lado do cliente. Isso não significa que o próprio Tinyproxy tenha um mecanismo de cache.
NoCache -
Filter/FilterURLs/FilterBypass: fornece filtragem básica de conteúdo com base em expressões regulares.Filter "/etc/tinyproxy/filter.txt": especifica um arquivo com expressões regulares de URLs a bloquear.FilterURLs Yes: ativa a filtragem por URL.FilterBypass "192.168.1.0/24": permite que os clientes indicados ignorem a filtragem.
O arquivo
filter.txtdeve conter uma expressão regular por linha. Por exemplo, para bloquear o Facebook:
.*facebook\.com.*
Esse é um mecanismo rudimentar de filtragem e não substitui soluções dedicadas de filtragem de conteúdo.
Gerenciamento do serviço
Depois de modificar o tinyproxy.conf, o serviço do Tinyproxy precisa ser reiniciado para que as alterações entrem em vigor.
Systemd (distribuições Linux modernas)
sudo systemctl restart tinyproxy
sudo systemctl enable tinyproxy # Garante que ele inicie no boot
sudo systemctl status tinyproxy
SysVinit (distribuições Linux antigas)
sudo /etc/init.d/tinyproxy restart
sudo /etc/init.d/tinyproxy status
Testando o proxy
Depois da configuração e do reinício do serviço, o proxy pode ser testado.
Usando curl
curl -x http://localhost:8888 http://ipinfo.io/ip
Substitua localhost:8888 pelo IP e pela porta do servidor Tinyproxy se o teste for feito a partir de outra máquina. A saída deve refletir o IP público do servidor Tinyproxy, e não o do cliente.
Configuração do navegador
Configure seu navegador (por exemplo, Firefox, Chrome) para usar um proxy HTTP no endereço IP e na porta do servidor Tinyproxy. Acesse um site para confirmar a conectividade.
Considerações de segurança
- Controle de acesso: sempre restrinja o acesso ao proxy usando a diretiva
Allow. Por padrão, o Tinyproxy pode aceitar conexões de todos os hosts se nenhuma diretivaAllowestiver presente. - Firewall: configure o firewall do sistema (por exemplo,
ufw,firewalld) para permitir conexões de entrada na porta do Tinyproxy apenas a partir de faixas de IP confiáveis.
bash # Exemplo usando ufw sudo ufw allow from 192.168.1.0/24 to any port 8888 sudo ufw enable - Usuário não-root: garanta que o Tinyproxy rode como usuário não-root (diretivas
UsereGroup) para minimizar riscos de segurança. - Logs: monitore os logs do Tinyproxy em busca de atividade incomum.
DisableViaHeader: considere ativar essa opção para mais privacidade, embora ela não garanta anonimato.
Comparação com o Squid
Tinyproxy e Squid são servidores proxy HTTP para Linux, mas atendem a casos de uso diferentes e oferecem conjuntos de recursos distintos.
| Recurso | Tinyproxy | Squid |
|---|---|---|
| Objetivo principal | Uso mínimo de recursos, simplicidade | Alto desempenho, recursos extensos, cache |
| Uso de recursos | Pegada de CPU/RAM muito baixa | CPU/RAM de moderada a alta, sobretudo com caches grandes e tráfego intenso |
| Cache | Sem cache integrado | Cache extenso e configurável para objetos HTTP |
| Autenticação | Nenhuma nativamente | Basic, Digest, NTLM, Kerberos, helpers externos |
| Controle de acesso | Por IP (diretiva Allow) |
ACLs muito granulares por IP, domínio, URL, usuário, horário, métodos etc. |
| Protocolos | HTTP, HTTPS (CONNECT) | HTTP, HTTPS (CONNECT), FTP, Gopher, SOCKS (lado cliente para upstream) |
| Transparência | Sem suporte a proxy transparente | Suporte completo a proxy transparente |
| Complexidade | Configuração simples, poucas diretivas | Configuração complexa, muitas diretivas, scripts poderosos |
| Uso típico | Sistemas embarcados, proxy pessoal, LAN pequena | Redes corporativas, ISPs, grandes organizações, filtragem de conteúdo, segurança |
Solução de problemas
- Verifique os logs: a diretiva
LogFiledefine onde o Tinyproxy grava seus logs. Aumente oLogLevelparaDebugpara obter saída mais detalhada durante a análise.
bash sudo tail -f /var/log/tinyproxy/tinyproxy.log - Status do serviço: verifique se o Tinyproxy está rodando com
systemctl status tinyproxyou/etc/init.d/tinyproxy status. - Firewall: confirme que o firewall não está bloqueando conexões à porta do Tinyproxy. Se necessário, desative o firewall temporariamente para testar.
- Sintaxe da configuração: revise o
tinyproxy.confem busca de erros de sintaxe. O Tinyproxy costuma não iniciar ou registra erros nos logs quando a configuração está malformada. - Conectividade de rede: verifique se o servidor Tinyproxy tem conectividade de rede com os destinos pretendidos.
