O 3proxy é um servidor proxy gratuito e de código aberto que é utilizado para vários fins, tais como filtragem de tráfego, armazenamento em cache e bloqueio de sítios Web específicos. Suporta vários protocolos como SOCKS v4/v4a/v5, HTTP, HTTPS, FTP, POP3, SMTP e suporta métodos de autenticação como nome de utilizador/palavra-passe SOCKS5, NTLM, LDAP, Kerberos e SSO.
O servidor é altamente personalizável, fornecendo uma gestão detalhada da utilização da largura de banda e dos parâmetros de ligação. O 3proxy pode ser instalado nas plataformas Windows, Linux e macOS. É um servidor proxy leve e fácil de usar, adequado para redes de pequena e média dimensão. É possível alugar um proxy vps.
Deve-se ter cuidado, pois não é desejável instalar o servidor sem autorização. Isso pode levar ao uso não autorizado do servidor por intrusos para organizar spamming e tráfego elevado.
Para começar, é necessário instalar vários pacotes e dependências.
Para AlmaLinux o comando:
yum -y install gcc wget tar
e para o Debian:
apt install -y build-essential wget tar
Depois descarregue os ficheiros do site oficial do projeto 3proxy, descompacte o arquivo e compile os ficheiros descarregados.
Em seguida, crie os diretórios necessários para os ficheiros de configuração e os logs, transfira o executável 3proxy
, crie um novo utilizador"proxyuser
" e atribua-lhe direitos sobre os diretórios. Para criar um novo ficheiro de configuração, execute o comando:
touch /etc/3proxy/3proxy.cfg
Atribuir permissões apenas ao utilizador root com chmod 600 /etc/3proxy/3proxy.cfg
.
Depois de criar um novo ficheiro de configuração, é necessário preenchê-lo corretamente. Para isso, anote o uid
e o gid do
utilizador"proxyuser
" e, em seguida, utilize um editor de texto para copiar e colar o texto do ficheiro de configuração de exemplo. Salve as alterações no arquivo de configuração e temos um 3proxy instalado com suporte a http(s) e socks5-proxy.
Abaixo está um exemplo de ficheiro de configuração:
Configurar o servidor para funcionar como proxyuser
(insira o uid
e o gid do
nosso utilizador que aprendemos anteriormente). setgid 991
setuid 991
Especifique os servidores de nomes corretos. Veja /etc/resolv.conf
: nserver 8.8.8.8.8
nservidor 8.8.4.4
Use timeouts padrão e tamanho de cache para consultas DNS: timeouts 1 5 30 60 180 180 1800 1800 1800 15 60
nscache 65536
Especificar o modo de arranque como daemon: daemon
Especifique o endereço IP da interface externa do servidor: external 111.111.111.111.111.111.111
(ou ignore a linha se o IP for o mesmo).
Especifique o endereço IP da interface interna do servidor: internal 192.168.0.1
(ou ignore-o para que o proxy escute todos os IPs).
Configurar o proxy http na porta padrão 3128: proxy -p3128 -n -a
(especifique sua porta, certificando-se de que ela funciona antes).
Configurar o proxy socks na porta padrão 1080: socks -p1080
(especifique a sua porta, verificando previamente se funciona).
Especifique o caminho para os registos, o formato e a rotação dos mesmos: log /var/log/3proxy/3proxy/3proxy.log D
logformat "- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T"
rodar 30
A seguir, crie um ficheiro de inicialização para o systemd
e configure as permissões corretas:
# touch /etc/systemd/system/3proxy.service
# chmod 664 /etc/systemd/system/3proxy.service
O seguinte texto deve ser inserido neste ficheiro:
[Unit]
Description=3proxy Proxy Server
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/3proxy /etc/3proxy/3proxy.cfg
ExecStop=/bin/kill `/usr/bin/pgrep proxyuser`
RemainAfterExit=yes
Restart=on-failure
[Install]
WantedBy=multi-user.target
Guardar e atualizar a configuração do systemd
:
# systemctl daemon-reload
Inicie o 3proxy e adicione-o ao autoloader:
# systemctl start 3proxy
# systemctl enable 3proxy
A configuração está completa. Agora você tem o http-proxy na porta 3128 e o socks-proxy
na porta 1080.
O primeiro problema é que existe a possibilidade de, depois de registar um novo domínio, este não estar disponível devido ao caching de nomes de domínio. Para resolver este problema, deve esperar que os registos DNS sejam actualizados ou adicionar o endereço IP do seu servidor e o novo domínio ao seu ficheiro hosts
. Isto permitir-lhe-á aceder ao novo domínio até que os registos DNS sejam actualizados.
Segundo problema - se utilizar um servidor proxy com portas predefinidas, mais cedo ou mais tarde o servidor pode ser detectado. Para resolver este problema, é recomendável alterar as portas.
Por exemplo, pode definir a porta 7834 no proxy http e 7835 no Socks. No entanto, essas portas também podem ser detectadas, pelo que pode configurar a firewall para permitir o acesso ao servidor apenas a partir de determinados endereços, enquanto outros terão o acesso negado. Esta solução é bastante fiável, embora não seja muito flexível, uma vez que pode não ter acesso a um endereço IP estático.
O terceiro problema é que se utilizar um servidor proxy e mantiver registos de todas as ligações, com o tempo estes podem tornar-se bastante grandes e ocupar a maior parte do espaço livre no seu disco. Para evitar este problema, é necessário proceder à rotação dos registos ou não manter registos de todo.
Existem vários métodos de rotação de registos que lhe permitem manter apenas os últimos ficheiros de registo e eliminar automaticamente os registos mais antigos. Por conseguinte, é melhor configurar o processo de rotação de registos com antecedência para evitar que o disco fique cheio. Isto ajudará a guardar todos os dados e a evitar a perda de informações quando se utiliza um servidor proxy.
users proxyuser:CL:password
daemon
log /var/log/3proxy/3proxy.log D
rotate 30
auth strong
proxy -n -a
setgid 65534
setuid 65534
Também é necessário criar um diretório para logs e definir permissões (iniciamos o servidor com direitos mínimos de ninguém no sistema usando as diretivas setgid/setud
):
mkdir /var/log/3proxy ; chown nobody /var/log/3proxy
Vamos considerar a instalação do 3proxy no Docker.
Primeiro de tudo, precisamos instalar alguns pacotes (e para os sistemas operacionais Debian e Ubuntu instalados recentemente, também podemos precisar atualizar o índice de pacotes apt
com # apt update
).
Para AlmaLinux e CentOS:
# yum install docker docker-compose
Para Ubuntu e Debian:
# apt install docker docker.io docker-compose
Baixar imagem:
# docker pull 3proxy/3proxy
Por defeito, o 3proxy usa um ambiente chroot seguro em /usr/local/3proxy
com uid 65535
e gid 65535
, e espera que o ficheiro de configuração do 3proxy seja colocado em /usr/local/etc/3proxy
. Os caminhos no ficheiro de configuração devem ser especificados relativamente a /usr/local/3proxy
, ou seja, deve ser /logs
em vez de /usr/local/3proxy/logs
. No chroot, é necessária permissão para o nserver
.
Para isso, crie um diretório e um ficheiro de configuração 3proxy
:
# mkdir -p /etc/dockerapp/3proxy
# touch /etc/dockerapp/3proxy/3poxy.conf
Em seguida, use qualquer editor de texto que desejar para editar o arquivo de configuração 3proxy .conf
criado. Para executar o 3proxy no Docker, a configuração mínima é suficiente:
nserver 8.8.8.8.8.8
socks -p3129
Para adicionar o registo e o utilizador, é necessário adicionar ao ficheiro de configuração 3proxy
:
log /logs/3proxy.log
auth strong
users "proxyuser:CR:87beeef3f4ee4661ac1897eca216fc26"
Em vez de"87beeef3f4ee4661ac1897eca216fc26
" é necessário especificar o hash MD5 da palavra-passe para o utilizador proxy
. Pode descobrir o hash MD5 utilizando geradores online.
Vamos iniciar o 3proxy usando o docker-compose
. Para isso, é necessário criar um ficheiro de configuração em formato .yml
:
# touch /etc/dockerapp/3proxy/docker-compose.yml
Insira o seguinte texto usando um editor de texto:
version: "2.1"
services:
3proxysvc:
image: 3proxy/3proxy:latest
container_name: 3proxy
volumes:
- /etc/dockerapp/3proxy/conf:/usr/local/3proxy/conf
ports:
- 8080:3129
restart: unless-stopped
Salvar. Neste ficheiro, especificámos a porta externa 8080. Agora podemos executá-lo:
# docker-compose -f /etc/dockerapp/3proxy/docker-compose.yml up -d
Obteremos uma resposta como esta:
Criando a rede"3proxy_default
" com o driver padrão
Criando 3proxy ... concluído
Teste:
# docker ps
Obtemos uma resposta com o ID do contentor, a imagem, o estado, as portas utilizadas e o nome:
48cc0cd140cd 3proxy/3proxy:latest "/bin/3proxy /etc/3p..." 5