3proxy er en gratis proxy-server med åpen kildekode som brukes til ulike formål, for eksempel filtrering av trafikk, caching og blokkering av bestemte nettsteder. Den støtter ulike protokoller som SOCKS v4/v4a/v5, HTTP, HTTPS, FTP, POP3, SMTP, og støtter autentiseringsmetoder som SOCKS5-brukernavn/passord, NTLM, LDAP, Kerberos og SSO.
Serveren kan i stor grad tilpasses, og gir detaljert styring av båndbreddebruk og tilkoblingsparametere. 3proxy kan installeres på Windows-, Linux- og macOS-plattformer. Det er en lett og brukervennlig proxy-server som egner seg for små og mellomstore nettverk. Det er mulig å leie en vps-proxy.
Vær forsiktig, da det ikke er ønskelig å installere serveren uten autorisasjon. Dette kan føre til at uvedkommende uautorisert bruker serveren til å organisere spamming og høy trafikk.
Til å begynne med må flere pakker og avhengigheter installeres.
For AlmaLinux er kommandoen:
yum -y install gcc wget tar
og for Debian:
apt install -y build-essential wget tar
Last deretter ned filene fra det offisielle nettstedet til 3proxy-prosjektet, pakk ut arkivet og kompiler de nedlastede filene.
Deretter oppretter du de nødvendige katalogene for konfigurasjonsfilene og loggene, overfører den kjørbare filen 3proxy
og oppretter en ny bruker"proxyuser
" og tildeler ham rettigheter til katalogene. Kjør kommandoen for å opprette en ny konfigurasjonsfil:
touch /etc/3proxy/3proxy.cfg
Tildel rettigheter kun til root-brukeren med chmod 600 /etc/3proxy/3proxy.cfg
.
Når du har opprettet en ny konfigurasjonsfil, er det nødvendig å fylle den riktig. Dette gjør du ved å skrive ned uid
og gid
for brukeren"proxyuser
", og deretter bruke et tekstredigeringsprogram til å kopiere og lime inn teksten fra eksempelkonfigurasjonsfilen. Lagre endringene i konfigurasjonsfilen, og vi har nå en installert 3proxy med støtte for http(s) og socks5-proxy.
Nedenfor er et eksempel på en konfigurasjonsfil:
Konfigurere serveren til å kjøre som proxyuser
(sett inn uid
og gid
for brukeren vår som vi lærte tidligere). setgid 991
setuid 991
Angi de riktige navneserverne. Se /etc/resolv.conf:
nserver 8.8.8.8.8.8
nserver 8.8.4.4
Bruk standard tidsavbrudd og bufferstørrelse for DNS-spørringer: timeouts 1 5 30 60 180 180 1800 1800 1800 15 60
nscache 65536
Angi oppstartsmodus som daemon: daemon
Angi IP-adressen til det eksterne grensesnittet til serveren: external 111.111.111.111.111.111.111
(eller ignorer linjen hvis IP-adressen er den samme).
Angi IP-adressen til serverens interne grensesnitt: internal 192.168.0.1
(eller ignorer den slik at proxyen lytter til alle IP-er).
Konfigurer http-proxy på standardport 3128: proxy -p3128 -n -a
(spesifiser porten din, og sørg for at den fungerer på forhånd).
Konfigurer socks-proxy på standardport 1080: socks -p1080
(spesifiser porten din, og kontroller at den fungerer på forhånd).
Angi sti til logger, loggformat og rotasjon: log /var/log/3proxy/3proxy/3proxy/3proxy.log D
logformat "- +_L%t.%. %N.%p %E %E %U %C:%c %R:%r %O %I %h %T"
rotere 30
Deretter oppretter du en initialiseringsfil for systemd
og konfigurerer de riktige tillatelsene:
# touch /etc/systemd/system/3proxy.service
# chmod 664 /etc/systemd/system/3proxy.service
Følgende tekst skal settes inn i denne filen:
[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
Lagre og oppdater systemd-konfigurasjonen
:
# systemctl daemon-reload
Start 3proxy og legg den til i autoladeren:
# systemctl start 3proxy
# systemctl enable 3proxy
Konfigurasjonen er fullført. Du har nå http-proxy på port 3128 og socks-proxy
på port 1080.
Det første problemet er at det er en sjanse for at du ikke får tilgang til et nytt domene etter at du har registrert det, på grunn av caching av domenenavn. For å løse dette problemet bør du vente på at DNS-postene oppdateres, eller legge til IP-adressen til serveren din og det nye domenet i hosts-filen
. På denne måten får du tilgang til det nye domenet inntil DNS-postene er oppdatert.
Problem to - hvis du bruker en proxy-server med standardporter, kan serveren før eller senere bli oppdaget. For å løse dette problemet anbefales det å endre portene.
Du kan for eksempel angi port 7834 på http-proxy og 7835 på Socks. Imidlertid kan slike porter også oppdages, slik at du kan konfigurere brannmuren for å tillate tilgang til serveren bare fra bestemte adresser, mens andre vil bli nektet tilgang. Denne løsningen er ganske pålitelig, men ikke så fleksibel, siden du kanskje ikke har tilgang til en statisk IP-adresse.
Det tredje problemet er at hvis du bruker en proxy-server og fører logger over alle tilkoblinger, kan de etter hvert bli ganske store og ta opp mesteparten av den ledige plassen på disken din. For å unngå dette problemet bør du sørge for å rotere loggene eller la være å føre logger i det hele tatt.
Det finnes ulike metoder for loggrotasjon som gjør at du bare beholder de siste loggfilene og automatisk sletter eldre logger. Derfor er det best å sette opp loggrotasjonsprosessen på forhånd for å unngå at disken blir overfylt. På denne måten kan du lagre alle data og unngå å miste informasjon når du bruker en proxy-server.
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ødvendig å opprette en katalog for logger og angi tillatelser (vi starter serveren med minimale rettigheter for ingen i systemet ved hjelp av setgid/setud-direktiver
):
mkdir /var/log/3proxy ; chown nobody /var/log/3proxy
La oss se på installasjonen av 3proxy i Docker.
Først må vi installere noen pakker (og for nylig installerte Debian- og Ubuntu-operativsystemer kan det hende vi også må oppdatere apt-pakkeindeksen
med # apt update
).
For AlmaLinux og CentOS:
# yum install docker docker-compose
For Ubuntu og Debian:
# apt install docker docker.io docker-compose
Last ned image:
# docker pull 3proxy/3proxy
Som standard bruker 3proxy et sikkert chroot-miljø i /usr/local/3proxy
med uid 65535
og gid 65535
, og forventer at 3proxy-konfigurasjonsfilen er plassert i /usr/local/etc/3proxy
. Stiene i konfigurasjonsfilen skal angis relativt til /usr/local/3proxy
, dvs. det skal være /logs
i stedet for /usr/local/3proxy/logs
. I chroot kreves det tillatelse for nserver
.
For å gjøre dette oppretter du en katalog og en 3proxy-konfigurasjonsfil
:
# mkdir -p /etc/dockerapp/3proxy
# touch /etc/dockerapp/3proxy/3poxy.conf
Deretter bruker du et tekstredigeringsprogram til å redigere den opprettede konfigurasjonsfilen 3proxy .conf.
For å kjøre 3proxy i Docker er minimumskonfigurasjonen tilstrekkelig:
nserver 8.8.8.8.8.8
sokker -p3129
For å legge til logging og bruker, må du legge til i 3proxy-konfigurasjonsfilen
:
log /logs/3proxy.log
auth strong
users "proxyuser:CR:87beeef3f4ee4661ac1897eca216fc26"
I stedet for"87beeef3f4ee4661ac1897eca216fc26
" må du spesifisere MD5-hashverdien av passordet for proxybrukeren
. Du kan finne ut MD5-hashverdien ved hjelp av generatorer på nettet.
La oss starte 3proxy ved hjelp av docker-compose
. Dette krever at du oppretter en konfigurasjonsfil i .yml-format
:
# touch /etc/dockerapp/3proxy/docker-compose.yml
Sett inn følgende tekst der ved hjelp av en tekstredigerer:
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
Lagre. I denne filen har vi spesifisert den eksterne porten 8080. Nå kan vi kjøre den:
# docker-compose -f /etc/dockerapp/3proxy/docker-compose.yml up -d
Vi vil få et svar som dette:
Oppretter nettverk"3proxy_default
" med standarddriveren
Oppretter 3proxy ... ferdig
Vi tester:
# docker ps
Vi får et svar med container-ID, image, status, porter som brukes og navn:
48cc0cd140cd 3proxy/3proxy:latest "/bin/3proxy /etc/3p..." 5