Configurar um servidor proxy SOCKS5 no Linux usando o Dante envolve instalar o pacote dante-server, configurar o /etc/danted.conf para definir interfaces de rede, métodos de autenticação e regras de acesso, e então iniciar o serviço danted. O Dante funciona como um servidor SOCKS, roteando o tráfego de rede entre os clientes e os destinos finais, aumentando a segurança da rede e permitindo o acesso a recursos restritos.
Pré-requisitos
Antes de prosseguir, garanta o seguinte:
- Um servidor Linux (por exemplo, Debian, Ubuntu, CentOS, RHEL, Fedora) com privilégios de root ou sudo.
- Entendimento básico da linha de comando do Linux e de conceitos de rede.
- Uma interface de rede disponível para o proxy escutar (interna) e uma interface para as conexões de saída (externa). Elas podem ser a mesma.
Instalação
Instale o pacote do servidor Dante específico da sua distribuição Linux.
Debian/Ubuntu
sudo apt update
sudo apt install dante-server
RHEL/CentOS/Fedora
sudo dnf install dante-server # Para Fedora/RHEL 8+
# Ou, para CentOS/RHEL 7 mais antigos:
sudo yum install dante-server
Configuração
O arquivo de configuração principal do Dante é o /etc/danted.conf. O arquivo padrão pode conter configurações de exemplo; muitas vezes é melhor fazer backup do original e começar com uma configuração mínima e limpa.
sudo mv /etc/danted.conf /etc/danted.conf.bak
sudo nano /etc/danted.conf
Estrutura básica da configuração
Um danted.conf mínimo define a interface de escuta (internal), a interface de saída (external) e as regras básicas de acesso.
logoutput: /var/log/danted.log
internal: 0.0.0.0 port=1080
external: eth0 # Substitua eth0 pela interface de rede externa do seu servidor
socksmethod: none
user.privileged: root
user.notprivileged: nobody
client pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
log: error connect disconnect
}
socks pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
log: error connect disconnect
}
Explicação das diretivas:
logoutput: especifica o caminho do arquivo de log.internal: define a interface de rede e a porta em que o Dante escuta as conexões de entrada dos clientes.0.0.0.0faz o bind em todas as interfaces de rede disponíveis.port=1080é a porta SOCKS padrão.- Você pode especificar um endereço IP específico (por exemplo,
internal: 192.168.1.10 port=1080).
external: define a interface de rede que o Dante usa para as conexões de saída até os destinos. Substituaeth0pela interface pública ou de saída real do seu servidor (por exemplo,ens3,enp0s3).socksmethod: especifica os métodos de autenticação que os clientes SOCKS podem usar.nonesignifica sem autenticação.user.privileged: o usuário sob o qual o Dante roda ao executar operações privilegiadas (por exemplo, fazer bind em portas baixas).user.notprivileged: o usuário para o qual o Dante muda nas operações sem privilégio, depois da inicialização.- Regras
client pass: controlam quais clientes podem se conectar ao servidor Dante.from: 0.0.0.0/0permite conexões de qualquer endereço IP. Restrinja isso por segurança.to: 0.0.0.0/0especifica o destino das conexões do cliente (neste contexto, sempre o próprio proxy).
- Regras
socks pass: controlam quais destinos os clientes SOCKS podem alcançar através do proxy.from: 0.0.0.0/0refere-se aos clientes que se autenticaram com sucesso ou passaram pelas regras de cliente.to: 0.0.0.0/0permite conexões para qualquer destino. Restrinja isso por segurança.log: error connect disconnecthabilita o log dos eventos de conexão.
Métodos de autenticação
O Dante suporta vários métodos de autenticação. Os mais comuns são none (sem autenticação) e username (usuário/senha).
1. Sem autenticação (anônimo)
Este método serve para redes privadas confiáveis, em que todos os clientes são conhecidos e autorizados a usar o proxy sem credenciais explícitas. Não é recomendado para proxies expostos à internet.
# ... (restante da configuração básica)
socksmethod: none
client pass {
from: 192.168.1.0/24 to: 0.0.0.0/0 # Restringe a uma sub-rede específica
log: error connect disconnect
}
socks pass {
from: 192.168.1.0/24 to: 0.0.0.0/0 # Clientes desta sub-rede podem alcançar qualquer destino
log: error connect disconnect
}
2. Autenticação por usuário/senha
Este é o método mais comum e recomendado para proxies SOCKS5, especialmente quando os clientes são externos ou não confiáveis. O Dante usa usuários do sistema para a autenticação.
Passos:
-
Crie um usuário de sistema para o proxy. Não crie um diretório home nem atribua um shell, por segurança.
bash sudo useradd -r -s /bin/false proxyuser sudo passwd proxyuser # Digite e confirme uma senha forte
Repita para usuários adicionais, se necessário. -
Altere o
danted.conf:
```
logoutput: /var/log/danted.log
internal: 0.0.0.0 port=1080
external: eth0socksmethod: username # Habilita a autenticação por usuário/senha
user.privileged: root
user.notprivileged: nobodyclient pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
log: error connect disconnect
}socks pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
socksmethod: username # Exige usuário/senha nas conexões SOCKS
log: error connect disconnect
}
`` A diretivasocksmethod: usernamedentro da regrasocks pass` garante que apenas usuários autenticados possam usar o proxy.
3. Autenticação por IP
Este método permite que endereços IP ou sub-redes específicas usem o proxy sem usuário/senha. Pode ser combinado com a autenticação username.
# ... (restante da configuração)
socksmethod: username # Permite usuário/senha como opção
client pass {
from: 192.168.1.0/24 to: 0.0.0.0/0 # Permite uma sub-rede específica sem autenticação
log: error connect disconnect
}
client pass {
from: 0.0.0.0/0 to: 0.0.0.0/0 # Permite todos os demais clientes, mas exige autenticação
socksmethod: username
log: error connect disconnect
}
socks pass {
from: 192.168.1.0/24 to: 0.0.0.0/0 # Clientes desta sub-rede podem alcançar qualquer destino (sem autenticação)
log: error connect disconnect
}
socks pass {
from: 0.0.0.0/0 to: 0.0.0.0/0 # Clientes autenticados podem alcançar qualquer destino
socksmethod: username
log: error connect disconnect
}
Nessa configuração, os clientes de 192.168.1.0/24 não precisam de autenticação, enquanto todos os outros clientes devem informar usuário e senha.
Configuração do firewall
Depois de configurar o Dante, abra a porta SOCKS (1080 por padrão) no firewall do sistema para permitir conexões de entrada.
Firewalld (CentOS/RHEL/Fedora)
sudo firewall-cmd --permanent --add-port=1080/tcp
sudo firewall-cmd --reload
UFW (Debian/Ubuntu)
sudo ufw allow 1080/tcp
sudo ufw enable # Se o UFW ainda não estiver habilitado
Gerenciamento do serviço
Após a configuração e os ajustes de firewall, inicie e habilite o serviço Dante.
sudo systemctl start danted
sudo systemctl enable danted
sudo systemctl status danted
Verifique o status do serviço para garantir que ele esteja rodando sem erros. Revise o /var/log/danted.log em busca de problemas de configuração.
Testando o proxy
Use uma máquina cliente para testar o proxy SOCKS5.
Usando curl (sem autenticação)
curl -x socks5://YOUR_SERVER_IP:1080 http://ifconfig.me/ip
A saída deve ser o endereço IP público do seu servidor, indicando que o tráfego está passando pelo proxy.
Usando curl (com autenticação por usuário/senha)
curl -x socks5://proxyuser:your_password@YOUR_SERVER_IP:1080 http://ifconfig.me/ip
Substitua proxyuser e your_password pelas credenciais configuradas antes.
Usando proxychains (utilitário cliente para Linux)
-
Instale o
proxychains:
bash sudo apt install proxychains4 # Debian/Ubuntu sudo dnf install proxychains-ng # RHEL/CentOS/Fedora -
Configure o
proxychains.conf:
Edite o/etc/proxychains.confou o~/.proxychains/proxychains.conf.
Comentestrict_chaine descomentedynamic_chain.
No fim do arquivo, adicione os dados do seu servidor proxy:```
... (outras configurações do proxychains)
dynamic_chain
strict_chain
random_chain
round_robin_chain
dynamic_chain # Usa a cadeia dinâmica para ter flexibilidade
[ProxyList]
add proxy here ...
socks5 127.0.0.1 9050
socks5 YOUR_SERVER_IP 1080 proxyuser your_password # Com autenticação
Ou, sem autenticação:
socks5 YOUR_SERVER_IP 1080
```
-
Teste com o
proxychains:
bash proxychains curl http://ifconfig.me/ip
A saída deve mostrar o endereço IP do seu servidor proxy.
Boas práticas de segurança
- Restrinja o acesso: use regras
client passpara limitar quais IPs de clientes podem se conectar ao seu proxy. - Senhas fortes: na autenticação por usuário/senha, garanta que todos os usuários do proxy tenham senhas fortes e únicas.
- Privilégio mínimo: não conceda privilégios desnecessários ao usuário
nobodynem aos usuários do proxy. - Atualizações regulares: mantenha o sistema operacional Linux e o pacote Dante atualizados para corrigir vulnerabilidades de segurança.
- Logs e monitoramento: revise regularmente os logs do Dante (
/var/log/danted.log) em busca de atividade suspeita. Implemente soluções de monitoramento de logs. - Regras de firewall: configure o firewall para aceitar conexões na porta SOCKS (1080) apenas de faixas de IP confiáveis.
- Usuário dedicado: use um usuário de sistema dedicado para o acesso ao proxy, em vez de contas de usuário já existentes.
- Desative métodos não usados: habilite apenas as opções de
socksmethodestritamente necessárias.
