3proxy is een gratis en open source proxyserver die wordt gebruikt voor verschillende doeleinden, zoals het filteren van verkeer, caching en het blokkeren van specifieke websites. Het ondersteunt verschillende protocollen zoals SOCKS v4/v4a/v5, HTTP, HTTPS, FTP, POP3, SMTP en ondersteunt authenticatiemethoden zoals SOCKS5 gebruikersnaam/wachtwoord, NTLM, LDAP, Kerberos en SSO.
De server is in hoge mate aanpasbaar en biedt gedetailleerd beheer van bandbreedtegebruik en verbindingsparameters. 3proxy kan geïnstalleerd worden op Windows, Linux en macOS platformen. Het is een lichtgewicht en gebruiksvriendelijke proxyserver die geschikt is voor kleine tot middelgrote netwerken. Het is mogelijk om een vps proxy te huren .
Wees voorzichtig, want het is ongewenst om de server zonder toestemming te installeren. Dit kan leiden tot ongeautoriseerd gebruik van de server door indringers om spamming en veel verkeer te organiseren.
Om te beginnen moeten verschillende pakketten en afhankelijkheden worden geïnstalleerd.
Voor AlmaLinux het commando:
yum -y install gcc wget tar
en voor Debian:
apt install -y build-essential wget tar
Download vervolgens de bestanden van de officiële site van het 3proxy-project, pak het archief uit en compileer de gedownloade bestanden.
Maak vervolgens de nodige directories aan voor de configuratiebestanden en logs, zet de 3proxy
executable over en maak een nieuwe gebruiker"proxyuser
" aan en wijs hem rechten toe op de directories. Voer het commando uit om een nieuw configuratiebestand aan te maken:
touch /etc/3proxy/3proxy.cfg
Wijs alleen rechten toe aan de rootgebruiker met chmod 600 /etc/3proxy/3proxy.cfg
.
Na het aanmaken van een nieuw configuratiebestand is het noodzakelijk om het correct te vullen. Noteer hiervoor het uid
en gid van
de gebruiker"proxyuser
" en kopieer en plak vervolgens met een teksteditor de tekst uit het voorbeeldconfiguratiebestand. Sla de wijzigingen in het configuratiebestand op en we hebben een geïnstalleerde 3proxy met http(s) en socks5-proxy ondersteuning.
Hieronder staat een voorbeeldconfiguratiebestand:
De server configureren om te draaien als proxyuser
(voeg het uid
en gid
in van
onze gebruiker die we eerder hebben geleerd). setgid 991
setuid 991
Geef de juiste nameservers op. Zie /etc/resolv.conf
: nserver 8.8.8.8.8
nserver 8.8.4.4
Gebruik standaard timeouts en cachegrootte voor DNS-query's: timeouts 1 5 30 60 180 1800 1800 15 60
nscache 65536
Geef de opstartmodus op als daemon: daemon
Geef het IP-adres van de externe interface van de server op: external 111.111.111.111.111
(of negeer de regel als het IP hetzelfde is).
Geef het IP-adres van de interne interface van de server op: intern 192.168.0.1
(of negeer het zodat de proxy naar alle IP's luistert).
Configureer http proxy op standaard poort 3128: proxy -p3128 -n -a
(specificeer je poort, zorg ervoor dat deze vooraf werkt).
Configureer socks proxy op standaard poort 1080: socks -p1080
(specificeer je poort, controleer vooraf of het werkt).
Geef het pad naar logs, logformaat en rotatie op: log /var/log/3proxy/3proxy.log D
logformat "- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T"
. roteren 30
Maak vervolgens een initialisatiebestand voor systemd
en configureer de juiste permissies:
# touch /etc/systemd/system/3proxy.service
# chmod 664 /etc/systemd/system/3proxy.service
De volgende tekst moet in dit bestand worden ingevoegd:
[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
Sla de systemd-configuratie
op en werk deze bij:
# systemctl daemon-reload
Start 3proxy en voeg het toe aan de autoloader:
# systemctl start 3proxy
# systemctl enable 3proxy
De configuratie is voltooid. Je hebt nu http-proxy op poort 3128 en socks-proxy
op poort 1080.
Het eerste probleem is dat er een kans is dat nadat je een nieuw domein hebt geregistreerd, deze niet beschikbaar is voor jou vanwege domeinnaam caching. Om dit probleem op te lossen, moet je wachten tot de DNS-records zijn bijgewerkt of het IP-adres van je server en het nieuwe domein toevoegen aan je hosts-bestand
. Hierdoor krijg je toegang tot het nieuwe domein totdat de DNS-records zijn bijgewerkt.
Probleem twee - als je een proxyserver met standaardpoorten gebruikt, kan de server vroeg of laat worden gedetecteerd. Om dit probleem op te lossen, is het aan te raden om de poorten te wijzigen.
Je kunt bijvoorbeeld poort 7834 instellen op http proxy en 7835 op Socks. Dergelijke poorten kunnen echter ook worden gedetecteerd, dus je kunt de firewall zo instellen dat alleen bepaalde adressen toegang hebben tot de server, terwijl andere de toegang wordt geweigerd. Deze oplossing is vrij betrouwbaar, hoewel niet al te flexibel omdat je misschien geen toegang hebt tot een statisch IP-adres.
Het derde probleem is dat als je een proxyserver gebruikt en logs bijhoudt van alle verbindingen, deze na verloop van tijd vrij groot kunnen worden en het grootste deel van de vrije ruimte op je schijf in beslag kunnen nemen. Om dit probleem te vermijden, moet je zorgen voor logrotatie of helemaal geen logs bijhouden.
Er zijn verschillende methoden voor logrotatie waarmee je alleen de laatste paar logbestanden kunt bewaren en oudere logs automatisch kunt verwijderen. Daarom is het het beste om het logboekrotatieproces van tevoren in te stellen om te voorkomen dat de schijf overloopt. Dit zal helpen om alle gegevens te bewaren en te voorkomen dat er informatie verloren gaat bij het gebruik van een proxyserver.
users proxyuser:CL:password
daemon
log /var/log/3proxy/3proxy.log D
rotate 30
auth strong
proxy -n -a
setgid 65534
setuid 65534
Het is ook nodig om een directory voor logs aan te maken en rechten in te stellen (we starten de server met minimale rechten van niemand in het systeem met behulp van setgid/setud
directives):
mkdir /var/log/3proxy ; chown nobody /var/log/3proxy
Laten we eens kijken naar de installatie van 3proxy in Docker.
Allereerst moeten we een aantal pakketten installeren (en voor recent geïnstalleerde Debian en Ubuntu OS moeten we misschien ook de apt
package index updaten met # apt update
).
Voor AlmaLinux en CentOS:
# yum install docker docker-compose
Voor Ubuntu en Debian:
# apt install docker docker.io docker-compose
Download afbeelding:
# docker pull 3proxy/3proxy
Standaard gebruikt 3proxy een veilige chroot-omgeving in /usr/local/3proxy
met uid 65535
en gid 65535
, en verwacht dat het 3proxy-configuratiebestand wordt geplaatst in /usr/local/etc/3proxy
. De paden in het configuratiebestand moeten relatief ten opzichte van /usr/local/3proxy
worden opgegeven, dus /logs
in plaats van /usr/local/3proxy/logs
. In chroot is toestemming voor nserver
vereist.
Maak hiervoor een directory en een 3proxy
configuratiebestand aan:
# mkdir -p /etc/dockerapp/3proxy
# touch /etc/dockerapp/3proxy/3poxy.conf
Gebruik vervolgens een willekeurige teksteditor om het aangemaakte configuratiebestand 3proxy .conf
te bewerken. Om 3proxy in Docker te draaien is de minimale configuratie voldoende:
nserver 8.8.8.8.8
sokken -p3129
Om logging en gebruiker toe te voegen, moet je toevoegen aan het 3proxy
configuratiebestand:
log /logs/3proxy.log
auth strong
users "proxyuser:CR:87beeef3f4ee4661ac1897eca216fc26"
In plaats van"87beeef3f4ee4661ac1897eca216fc26
" moet je de MD5 hash van het wachtwoord voor de proxygebruiker
opgeven. Je kunt de MD5 hash achterhalen met online generators.
Laten we 3proxy starten met docker-compose
. Hiervoor moet je een configuratiebestand in .yml-formaat
maken:
# touch /etc/dockerapp/3proxy/docker-compose.yml
Voeg daar de volgende tekst in met behulp van een 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
Opslaan. In dit bestand hebben we de externe poort 8080 opgegeven. Nu kunnen we het uitvoeren:
# docker-compose -f /etc/dockerapp/3proxy/docker-compose.yml up -d
We krijgen een antwoord als dit:
Aanmaken van netwerk"3proxy_default
" met het standaard stuurprogramma
Aanmaken 3proxy ... gedaan
Test:
# docker ps
We krijgen een antwoord met de container ID, image, status, gebruikte poorten en naam:
48cc0cd140cd 3proxy/3proxy:latest "/bin/3proxy /etc/3p..." 5