3proxy è un server proxy gratuito e open source che viene utilizzato per vari scopi, come il filtraggio del traffico, il caching e il blocco di siti web specifici. Supporta vari protocolli come SOCKS v4/v4a/v5, HTTP, HTTPS, FTP, POP3, SMTP e supporta metodi di autenticazione come SOCKS5 username/password, NTLM, LDAP, Kerberos e SSO.
Il server è altamente personalizzabile e fornisce una gestione dettagliata dell'utilizzo della larghezza di banda e dei parametri di connessione. 3proxy può essere installato su piattaforme Windows, Linux e macOS. È un server proxy leggero e facile da usare, adatto a reti di piccole e medie dimensioni. È possibile noleggiare un proxy vps.
È necessario prestare attenzione perché non è auspicabile installare il server senza autorizzazione. Questo può portare a un uso non autorizzato del server da parte di intrusi per organizzare spamming e traffico elevato.
Per iniziare, è necessario installare diversi pacchetti e dipendenze.
Per AlmaLinux il comando:
yum -y install gcc wget tar
e per Debian:
apt install -y build-essential wget tar
Scaricare quindi i file dal sito ufficiale del progetto 3proxy, decomprimere l'archivio e compilare i file scaricati.
Quindi, creare le directory necessarie per i file di configurazione e i log, trasferire l'eseguibile 3proxy
, creare un nuovo utente"proxyuser
" e assegnargli i diritti sulle directory. Per creare un nuovo file di configurazione, eseguire il comando:
touch /etc/3proxy/3proxy.cfg
Assegnare i permessi solo all'utente root con chmod 600 /etc/3proxy/3proxy.cfg
.
Dopo aver creato un nuovo file di configurazione, è necessario riempirlo correttamente. A tale scopo, annotare uid
e gid
dell'utente"proxyuser
", quindi utilizzare un editor di testo per copiare e incollare il testo dal file di configurazione di esempio. Salvate le modifiche al file di configurazione e avrete installato 3proxy con supporto http(s) e socks5-proxy.
Di seguito è riportato un file di configurazione di esempio:
Configurazione del server per l'esecuzione come proxyuser
(inserire l'uid
e il gid del
nostro utente che abbiamo imparato in precedenza). setgid 991
setuid 991
Specificare i nameserver corretti. Vedere /etc/resolv.conf
: nserver 8.8.8.8.8
nserver 8.8.4.4
Utilizzare i timeout e la dimensione della cache predefiniti per le query DNS: timeout 1 5 30 60 180 180 1800 1800 15 60
nscache 65536
Specificare la modalità di avvio come demone: daemon
Specificare l'indirizzo IP dell'interfaccia esterna del server: external 111.111.111.111.111.111
(o ignorare la riga se l'IP è lo stesso).
Specificare l'indirizzo IP dell'interfaccia interna del server: internal 192.168.0.1
(oppure ignorarlo in modo che il proxy ascolti tutti gli IP).
Configurare il proxy http sulla porta standard 3128: proxy -p3128 -n -a
(specificate la vostra porta, assicurandovi prima che funzioni).
Configurare il proxy socks sulla porta standard 1080: socks -p1080
(specificare la propria porta, verificando prima che funzioni).
Specificare il percorso dei log, il formato e la rotazione dei log: log /var/log/3proxy/3proxy/3proxy.log D
logformat "- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T"
rotazione 30
Successivamente, creare un file di inizializzazione per systemd
e configurare i permessi corretti:
# touch /etc/systemd/system/3proxy.service
# chmod 664 /etc/systemd/system/3proxy.service
In questo file va inserito il seguente testo:
[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
Salvare e aggiornare la configurazione di systemd
:
# systemctl daemon-reload
Avviare 3proxy e aggiungerlo all'autoloader:
# systemctl start 3proxy
# systemctl enable 3proxy
La configurazione è completa. Ora si dispone di http-proxy sulla porta 3128 e di socks-proxy
sulla porta 1080.
Il primo problema è che c'è la possibilità che dopo aver registrato un nuovo dominio, questo non sia disponibile a causa del caching dei nomi di dominio. Per risolvere questo problema, è necessario attendere l'aggiornamento dei record DNS o aggiungere l'indirizzo IP del server e il nuovo dominio al file hosts
. In questo modo sarà possibile accedere al nuovo dominio fino all'aggiornamento dei record DNS.
Secondo problema: se si utilizza un server proxy con porte predefinite, prima o poi il server potrebbe essere rilevato. Per risolvere questo problema, si consiglia di modificare le porte.
Ad esempio, è possibile impostare la porta 7834 sul proxy http e 7835 su Socks. Tuttavia, anche queste porte possono essere rilevate, quindi è possibile configurare il firewall in modo da consentire l'accesso al server solo da determinati indirizzi, mentre agli altri sarà negato l'accesso. Questa soluzione è abbastanza affidabile, anche se non troppo flessibile, dato che potreste non avere accesso a un indirizzo IP statico.
Il terzo problema è che se si utilizza un server proxy e si conservano i registri di tutte le connessioni, con il tempo questi possono diventare piuttosto grandi e occupare la maggior parte dello spazio libero sul disco. Per evitare questo problema, è necessario provvedere alla rotazione dei registri o non conservarli affatto.
Esistono vari metodi di rotazione dei registri che consentono di conservare solo gli ultimi file di registro e di eliminare automaticamente quelli più vecchi. Pertanto, è meglio impostare il processo di rotazione dei registri in anticipo per evitare di riempire eccessivamente il disco. In questo modo è possibile salvare tutti i dati ed evitare di perdere informazioni quando si utilizza un server proxy.
users proxyuser:CL:password
daemon
log /var/log/3proxy/3proxy.log D
rotate 30
auth strong
proxy -n -a
setgid 65534
setuid 65534
È inoltre necessario creare una directory per i log e impostare i permessi (avviamo il server con i diritti minimi di nessuno nel sistema usando le direttive setgid/setud
):
mkdir /var/log/3proxy ; chown nobody /var/log/3proxy
Consideriamo l'installazione di 3proxy in Docker.
Prima di tutto, dobbiamo installare alcuni pacchetti (e per i sistemi operativi Debian e Ubuntu di recente installazione, potrebbe essere necessario aggiornare l'indice dei pacchetti apt
con # apt update
).
Per AlmaLinux e CentOS:
# yum install docker docker-compose
Per Ubuntu e Debian:
# apt install docker docker.io docker-compose
Scaricare l'immagine:
# docker pull 3proxy/3proxy
Per impostazione predefinita, 3proxy utilizza un ambiente chroot sicuro in /usr/local/3proxy
con uid 65535
e gid 65535
e si aspetta che il file di configurazione di 3proxy sia collocato in /usr/local/etc/3proxy
. I percorsi nel file di configurazione devono essere specificati relativamente a /usr/local/3proxy
, cioè dovrebbero essere /logs
invece di /usr/local/3proxy/logs
. In chroot, sono necessari i permessi per nserver
.
Per fare questo, creare una directory e un file di configurazione 3proxy
:
# mkdir -p /etc/dockerapp/3proxy
# touch /etc/dockerapp/3proxy/3poxy.conf
Quindi, utilizzare un editor di testo a piacere per modificare il file di configurazione 3proxy .conf
creato. Per eseguire 3proxy in Docker, è sufficiente la configurazione minima:
nserver 8.8.8.8.8
socks -p3129
Per aggiungere il logging e l'utente, è necessario aggiungerli al file di configurazione di 3proxy
:
log /logs/3proxy.log
auth strong
users "proxyuser:CR:87beeef3f4ee4661ac1897eca216fc26"
Al posto di"87beeef3f4ee4661ac1897eca216fc26
" è necessario specificare l'hash MD5 della password del proxyuser
. È possibile trovare l'hash MD5 utilizzando i generatori online.
Avviamo 3proxy usando docker-compose
. Per questo è necessario creare un file di configurazione in formato .yml
:
# touch /etc/dockerapp/3proxy/docker-compose.yml
Inserire il seguente testo con un editor di testo:
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
Salva. In questo file abbiamo specificato la porta esterna 8080. Ora possiamo eseguirlo:
# docker-compose -f /etc/dockerapp/3proxy/docker-compose.yml up -d
Otterremo una risposta come questa:
Creazione della rete"3proxy_default
" con il driver predefinito
Creazione di 3proxy ... fatto
Test:
# docker ps
Otteniamo una risposta con l'ID del contenitore, l'immagine, lo stato, le porte utilizzate e il nome:
48cc0cd140cd 3proxy/3proxy:latest "/bin/3proxy /etc/3p..." 5