3proxy je bezplatný proxy server s otevřeným zdrojovým kódem, který se používá k různým účelům, jako je filtrování provozu, ukládání do mezipaměti a blokování určitých webových stránek. Podporuje různé protokoly, například SOCKS v4/v4a/v5, HTTP, HTTPS, FTP, POP3, SMTP, a podporuje metody ověřování, například SOCKS5 uživatelské jméno/heslo, NTLM, LDAP, Kerberos a SSO.
Server je vysoce přizpůsobitelný a poskytuje podrobnou správu využití šířky pásma a parametrů připojení. Server 3proxy lze nainstalovat na platformách Windows, Linux a macOS. Jedná se o lehký a snadno použitelný proxy server vhodný pro malé až středně velké sítě. Proxy server vps je možné si pronajmout.
Je třeba dbát zvýšené opatrnosti, protože instalace serveru bez autorizace je nežádoucí. To může vést k neoprávněnému použití serveru narušiteli k organizování rozesílání spamu a vysokého provozu.
Pro začátek je třeba nainstalovat několik balíčků a závislostí.
V případě systému AlmaLinux je to příkaz:
yum -y install gcc wget tar
a pro Debian:
apt install -y build-essential wget tar
Poté stáhněte soubory z oficiálních stránek projektu 3proxy, rozbalte archiv a zkompilujte stažené soubory.
Dále vytvořte potřebné adresáře pro konfigurační soubory a protokoly, přeneste spustitelný soubor 3proxy
a vytvořte nového uživatele"proxyuser
" a přidělte mu práva k adresářům. Chcete-li vytvořit nový konfigurační soubor, spusťte příkaz:
touch /etc/3proxy/3proxy.cfg
Přiřaďte práva pouze uživateli root příkazem chmod 600 /etc/3proxy/3proxy.cfg
.
Po vytvoření nového konfiguračního souboru je nutné jej správně vyplnit. K tomu si zapište uid
a gid
uživatele"proxyuser"
a poté pomocí textového editoru zkopírujte a vložte text z příkladového konfiguračního souboru. Uložte změny do konfiguračního souboru a máme nainstalovaný 3proxy s podporou http(s) a socks5-proxy.
Níže je uveden ukázkový konfigurační soubor:
Konfigurace serveru pro běh jako proxyuser
(vložte uid
a gid
našeho uživatele, které jsme se naučili dříve). setgid 991
setuid 991
Zadejte správné jmenné servery. Viz soubor /etc/resolv.conf:
nserver 8.8.8.8.8.8
nserver 8.8.4.4
Použijte výchozí časové limity a velikost mezipaměti pro dotazy DNS: 1 5 30 60 180 180 1800 1800 15 60
nscache 65536
Zadejte režim spouštění jako démon: daemon
Zadejte IP adresu vnějšího rozhraní serveru: Vnější
adresa serveru: 111.111.111.111.111.111
(nebo řádek ignorujte, pokud je IP stejná).
Zadejte IP adresu vnitřního rozhraní serveru::
(nebo jej ignorujte, aby proxy server naslouchal všem IP adresám).
Nakonfigurujte http proxy na standardním portu 3128: Proxy -p3128 -n -a
(zadejte svůj port a předem se ujistěte, že funguje).
Nakonfigurujte proxy server socks na standardním portu 1080:
(zadejte svůj port a předem zkontrolujte, zda funguje).
Zadejte cestu k logům, formát logů a jejich rotaci: log /var/log/3proxy/3proxy/3proxy.log D
logformat "- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T"
rotate 30
Dále vytvořte inicializační soubor pro systemd
a nakonfigurujte správná oprávnění:
# touch /etc/systemd/system/3proxy.service
# chmod 664 /etc/systemd/system/3proxy.service
Do tohoto souboru by měl být vložen následující text:
[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
Uložte a aktualizujte konfiguraci systemd
:
# systemctl daemon-reload
Spusťte 3proxy a přidejte jej do autoloaderu:
# systemctl start 3proxy
# systemctl enable 3proxy
Konfigurace je dokončena. Nyní máte http-proxy na portu 3128 a socks-proxy
na portu 1080.
První problém spočívá v tom, že existuje možnost, že po registraci nové domény ji nebudete mít k dispozici z důvodu ukládání doménových jmen do mezipaměti. Tento problém vyřešíte tak, že počkáte na aktualizaci záznamů DNS nebo přidáte IP adresu svého serveru a novou doménu do souboru hosts
. To vám umožní přístup k nové doméně, dokud nebudou aktualizovány záznamy DNS.
Problém druhý - pokud používáte proxy server s výchozími porty, dříve nebo později může být server detekován. Pro vyřešení tohoto problému se doporučuje porty změnit.
Můžete například nastavit port 7834 na http proxy serveru a 7835 na Socks. Tyto porty však mohou být také detekovány, takže můžete nastavit bránu firewall tak, aby umožňovala přístup k serveru pouze z určitých adres, zatímco ostatním bude přístup odepřen. Toto řešení je poměrně spolehlivé, i když není příliš flexibilní, protože nemusíte mít přístup ke statické IP adrese.
Třetím problémem je, že pokud používáte proxy server a uchováváte protokoly všech připojení, mohou být časem poměrně velké a zabírat většinu volného místa na disku. Abyste se tomuto problému vyhnuli, měli byste se postarat o rotaci protokolů nebo protokoly neuchovávat vůbec.
Existují různé metody rotace protokolů, které umožňují uchovávat pouze několik posledních souborů protokolů a automaticky odstraňovat starší protokoly. Proto je nejlepší nastavit proces rotace protokolů předem, aby nedošlo k přeplnění disku. To pomůže zachovat všechna data a zabránit ztrátě informací při používání proxy serveru.
users proxyuser:CL:password
daemon
log /var/log/3proxy/3proxy.log D
rotate 30
auth strong
proxy -n -a
setgid 65534
setuid 65534
Je také nutné vytvořit adresář pro protokoly a nastavit práva (server spouštíme s minimálními právy nikoho v systému pomocí direktiv setgid/setud
):
mkdir /var/log/3proxy ; chown nobody /var/log/3proxy
Uvažujme o instalaci serveru 3proxy v nástroji Docker.
Nejprve musíme nainstalovat některé balíčky (a v případě nedávno nainstalovaných operačních systémů Debian a Ubuntu možná budeme muset také aktualizovat index balíčků apt
pomocí # apt update
).
V případě systémů AlmaLinux a CentOS:
# yum install docker docker-compose
Pro Ubuntu a Debian:
# apt install docker docker.io docker-compose
Stáhněte si obraz:
# docker pull 3proxy/3proxy
Ve výchozím nastavení používá 3proxy bezpečné chroot prostředí v /usr/local/3proxy
s uid 65535
a gid 65535
a očekává, že konfigurační soubor 3proxy bude umístěn v /usr/local/etc/3proxy
. Cesty v konfiguračním souboru by měly být zadány relativně vůči /usr/local/3proxy
, tj. místo /usr/local/3proxy/logs
by to mělo být /logs
. V chrootu je vyžadováno oprávnění pro nserver
.
Za tímto účelem vytvořte adresář a konfigurační soubor 3proxy
:
# mkdir -p /etc/dockerapp/3proxy
# touch /etc/dockerapp/3proxy/3poxy.conf
Poté pomocí libovolného textového editoru upravte vytvořený konfigurační soubor 3proxy .conf
. Pro spuštění 3proxy v Dockeru stačí minimální konfigurace:
nserver 8.8.8.8.8.8
socks -p3129
Abyste mohli přidat přihlašování a uživatele, je třeba přidat do konfiguračního souboru 3proxy
:
log /logs/3proxy.log
auth strong
users "proxyuser:CR:87beeef3f4ee4661ac1897eca216fc26"
Místo"87beeef3f4ee4661ac1897eca216fc26"
je třeba zadat MD5 hash hesla pro proxyuser
. Hash MD5 můžete zjistit pomocí online generátorů.
Spusťme 3proxy pomocí docker-compose
. To bude vyžadovat vytvoření konfiguračního souboru ve formátu .yml
:
# touch /etc/dockerapp/3proxy/docker-compose.yml
Vložte do něj následující text pomocí textového editoru:
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
Uložit. V tomto souboru jsme zadali externí port 8080. Nyní jej můžeme spustit:
# docker-compose -f /etc/dockerapp/3proxy/docker-compose.yml up -d
Dostaneme takovouto odpověď:
Vytvoření sítě"3proxy_default
" s výchozím ovladačem
Vytvoření 3proxy ... hotovo
Test:
# docker ps
Dostaneme odpověď s ID kontejneru, obrazem, stavem, použitými porty a názvem:
3proxy/3proxy:latest "/bin/3proxy /etc/3p...". 5