3proxy er en gratis og open source proxyserver, der bruges til forskellige formål som filtrering af trafik, caching og blokering af specifikke hjemmesider. Den understøtter forskellige protokoller som SOCKS v4/v4a/v5, HTTP, HTTPS, FTP, POP3, SMTP og understøtter autentificeringsmetoder som SOCKS5 brugernavn/password, NTLM, LDAP, Kerberos og SSO.
Serveren kan i høj grad tilpasses og giver detaljeret styring af båndbreddeforbrug og forbindelsesparametre. 3proxy kan installeres på Windows-, Linux- og macOS-platforme. Det er en let og brugervenlig proxyserver, der er velegnet til små og mellemstore netværk. Det er muligt at leje en vps-proxy.
Man bør være forsigtig, da det ikke er ønskeligt at installere serveren uden tilladelse. Det kan føre til uautoriseret brug af serveren af ubudne gæster til at organisere spamming og høj trafik.
Til at begynde med skal flere pakker og afhængigheder installeres.
For AlmaLinux er kommandoen:
yum -y install gcc wget tar
og for Debian:
apt install -y build-essential wget tar
Download derefter filerne fra 3proxy-projektets officielle side, pak arkivet ud, og kompiler de downloadede filer.
Opret derefter de nødvendige mapper til konfigurationsfilerne og logfilerne, overfør den eksekverbare 3proxy-fil
, og opret en ny bruger"proxyuser
", og giv ham rettigheder til mapperne. Kør kommandoen for at oprette en ny konfigurationsfil:
touch /etc/3proxy/3proxy.cfg
Tildel kun rettigheder til root-brugeren med chmod 600 /etc/3proxy/3proxy.cfg
.
Når du har oprettet en ny konfigurationsfil, er det nødvendigt at udfylde den korrekt. For at gøre dette skal du skrive uid
og gid
for brugeren"proxyuser
" ned og derefter bruge en teksteditor til at kopiere og indsætte teksten fra eksempelkonfigurationsfilen. Gem ændringerne i konfigurationsfilen, og vi har en installeret 3proxy med understøttelse af http(s) og socks5-proxy.
Nedenfor er et eksempel på en konfigurationsfil:
Konfiguration af serveren til at køre som proxyuser
(indsæt uid
og gid
for vores bruger, som vi lærte tidligere). setgid 991
setuid 991
Angiv de korrekte navneservere. Se /etc/resolv.conf:
nserver 8.8.8.8.8
nserver 8.8.4.4
Brug standard timeouts og cache-størrelse for DNS-forespørgsler: timeouts 1 5 30 60 180 180 1800 1800 15 60
nscache 65536
Angiv opstartstilstanden som daemon: daemon
Angiv IP-adressen for serverens eksterne grænseflade: external 111.111.111.111.111
(eller ignorer linjen, hvis IP'en er den samme).
Angiv IP-adressen på serverens interne grænseflade: internal 192.168.0.1
(eller ignorer den, så proxyen lytter til alle IP'er).
Konfigurer http-proxy på standardport 3128: proxy -p3128 -n -a
(angiv din port, og sørg for, at den virker på forhånd).
Konfigurer socks-proxy på standardport 1080: socks -p1080
(angiv din port, og sørg for, at den virker på forhånd).
Angiv sti til logfiler, logformat og rotation: log /var/log/3proxy/3proxy/3proxy.log D
logformat "- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T"
roter 30
Dernæst skal du oprette en initialiseringsfil til systemd
og konfigurere de korrekte tilladelser:
# touch /etc/systemd/system/3proxy.service
# chmod 664 /etc/systemd/system/3proxy.service
Følgende tekst skal indsættes i denne fil:
[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
Gem og opdater systemd-konfigurationen
:
# systemctl daemon-reload
Start 3proxy, og føj den til autoloaderen:
# systemctl start 3proxy
# systemctl enable 3proxy
Konfigurationen er færdig. Du har nu http-proxy på port 3128 og socks-proxy
på port 1080.
Det første problem er, at der er en chance for, at når du har registreret et nyt domæne, vil det ikke være tilgængeligt for dig på grund af caching af domænenavne. For at løse dette problem skal du vente på, at DNS-posterne bliver opdateret, eller tilføje IP-adressen på din server og det nye domæne til din hosts-fil
. På den måde kan du få adgang til det nye domæne, indtil DNS-posterne er opdateret.
Problem to - hvis du bruger en proxyserver med standardporte, kan serveren før eller siden blive opdaget. For at løse dette problem anbefales det at ændre portene.
Du kan f.eks. indstille port 7834 på http-proxy og 7835 på Socks. Men sådanne porte kan også blive opdaget, så du kan konfigurere firewallen til kun at tillade adgang til serveren fra bestemte adresser, mens andre vil blive nægtet adgang. Denne løsning er ret pålidelig, men ikke så fleksibel, da du måske ikke har adgang til en statisk IP-adresse.
Det tredje problem er, at hvis du bruger en proxyserver og gemmer logfiler over alle forbindelser, kan de med tiden blive ret store og optage det meste af den ledige plads på din disk. For at undgå dette problem bør du sørge for logrotation eller helt undlade at føre logs.
Der findes forskellige metoder til logrotation, som gør det muligt kun at gemme de sidste par logfiler og automatisk slette ældre logfiler. Derfor er det bedst at sætte logrotationsprocessen op på forhånd for at undgå at overfylde disken. Det vil hjælpe med at gemme alle data og undgå at miste information, når man bruger en proxyserver.
users proxyuser:CL:password
daemon
log /var/log/3proxy/3proxy.log D
rotate 30
auth strong
proxy -n -a
setgid 65534
setuid 65534
Det er også nødvendigt at oprette en mappe til logfiler og indstille tilladelser (vi starter serveren med minimale rettigheder for ingen i systemet ved hjælp af setgid/setud-direktiver
):
mkdir /var/log/3proxy ; chown nobody /var/log/3proxy
Lad os overveje at installere 3proxy i Docker.
Først skal vi installere nogle pakker (og for nyligt installerede Debian- og Ubuntu-operativsystemer skal vi muligvis også opdatere apt-pakkeindekset
med # apt update
).
For AlmaLinux og CentOS:
# yum install docker docker-compose
For Ubuntu og Debian:
# apt install docker docker.io docker-compose
Download billedet:
# docker pull 3proxy/3proxy
Som standard bruger 3proxy et sikkert chroot-miljø i /usr/local/3proxy
med uid 65535
og gid 65535
og forventer, at 3proxy-konfigurationsfilen er placeret i /usr/local/etc/3proxy
. Stierne i konfigurationsfilen skal angives i forhold til /usr/local/3proxy
, dvs. det skal være /logs
i stedet for /usr/local/3proxy/logs
. I chroot kræves der tilladelse til nserver
.
For at gøre dette skal du oprette en mappe og en 3proxy-konfigurationsfil
:
# mkdir -p /etc/dockerapp/3proxy
# touch /etc/dockerapp/3proxy/3poxy.conf
Brug derefter en hvilken som helst teksteditor til at redigere den oprettede 3proxy .conf-konfigurationsfil
. For at køre 3proxy i Docker er minimumskonfigurationen tilstrækkelig:
nserver 8.8.8.8.8
sokker -p3129
For at tilføje logning og bruger skal du tilføje til 3proxy-konfigurationsfilen
:
log /logs/3proxy.log
auth strong
users "proxyuser:CR:87beeef3f4ee4661ac1897eca216fc26"
I stedet for"87beeef3f4ee4661ac1897eca216fc26
" skal du angive MD5-hashværdien af adgangskoden til proxybrugeren
. Du kan finde ud af MD5-hash'en ved hjælp af online-generatorer.
Lad os starte 3proxy ved hjælp af docker-compose
. Det kræver, at der oprettes en konfigurationsfil i .yml-format
:
# touch /etc/dockerapp/3proxy/docker-compose.yml
Indsæt følgende tekst med en teksteditor:
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
Gem. I denne fil har vi angivet den eksterne port 8080. Nu kan vi køre den:
# docker-compose -f /etc/dockerapp/3proxy/docker-compose.yml up -d
Vi vil få et svar som dette:
Oprettelse af netværk"3proxy_default
" med standarddriveren
Oprettelse af 3proxy ... færdig
Vi tester:
# docker ps
Vi får et svar med container-ID, image, status, anvendte porte og navn:
48cc0cd140cd 3proxy/3proxy:latest "/bin/3proxy /etc/3p..." 5