3proxy to darmowy serwer proxy o otwartym kodzie źródłowym, który służy do różnych celów, takich jak filtrowanie ruchu, buforowanie i blokowanie określonych stron internetowych. Obsługuje różne protokoły, takie jak SOCKS v4/v4a/v5, HTTP, HTTPS, FTP, POP3, SMTP i obsługuje metody uwierzytelniania, takie jak nazwa użytkownika/hasło SOCKS5, NTLM, LDAP, Kerberos i SSO.
Serwer jest wysoce konfigurowalny, zapewniając szczegółowe zarządzanie wykorzystaniem przepustowości i parametrami połączenia. 3proxy można zainstalować na platformach Windows, Linux i macOS. Jest to lekki i łatwy w użyciu serwer proxy odpowiedni dla małych i średnich sieci. Istnieje możliwość wynajęcia serwera proxy vps.
Należy zachować ostrożność, ponieważ niepożądane jest instalowanie serwera bez autoryzacji. Może to prowadzić do nieautoryzowanego wykorzystania serwera przez intruzów do organizowania spamu i dużego ruchu.
Na początek należy zainstalować kilka pakietów i zależności.
Dla AlmaLinux polecenie:
yum -y install gcc wget tar
, a dla Debiana:
apt install -y build-essential wget tar
Następnie należy pobrać pliki z oficjalnej strony projektu 3proxy, rozpakować archiwum i skompilować pobrane pliki.
Następnie należy utworzyć niezbędne katalogi na pliki konfiguracyjne i logi, przenieść plik wykonywalny 3proxy
oraz utworzyć nowego użytkownika"proxyuser
" i przypisać mu prawa do katalogów. Aby utworzyć nowy plik konfiguracyjny, uruchom polecenie:
touch /etc/3proxy/3proxy.cfg
Przydziel uprawnienia tylko użytkownikowi root za pomocą chmod 600 /etc/3proxy/3proxy.cfg
.
Po utworzeniu nowego pliku konfiguracyjnego konieczne jest jego poprawne wypełnienie. W tym celu należy zapisać uid
i gid
użytkownika"proxyuser
", a następnie za pomocą edytora tekstu skopiować i wkleić tekst z przykładowego pliku konfiguracyjnego. Zapisujemy zmiany w pliku konfiguracyjnym i mamy zainstalowane 3proxy z obsługą http(s) i socks5-proxy.
Poniżej znajduje się przykładowy plik konfiguracyjny:
Konfigurowanie serwera do działania jako proxyuser
(wstawiamy uid
i gid
naszego użytkownika, którego poznaliśmy wcześniej). setgid 991
setuid 991
Określ prawidłowe serwery nazw. Zobacz /etc/resolv.conf
: nserver 8.8.8.8.8
nserver 8.8.4.4
Użyj domyślnych limitów czasu i rozmiaru pamięci podręcznej dla zapytań DNS: timeouts 1 5 30 60 180 180 1800 1800 15 60
nscache 65536
Określ tryb uruchamiania jako demon: daemon
Określ adres IP zewnętrznego interfejsu serwera: external 111.111.111.111.111
(lub zignoruj linię, jeśli IP jest takie samo).
Określ adres IP wewnętrznego interfejsu serwera: internal 192.168.0.1
(lub zignoruj go, aby serwer proxy nasłuchiwał wszystkich adresów IP).
Skonfiguruj http proxy na standardowym porcie 3128: proxy -p3128 -n -a
(określ swój port, upewniając się wcześniej, że działa).
Konfiguracja socks proxy na standardowym porcie 1080: socks -p1080
(określ swój port, upewniając się wcześniej, że działa).
Określ ścieżkę do logów, format logów i rotację: log /var/log/3proxy/3proxy.log D
logformat "- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T"
rotate 30
Następnie należy utworzyć plik inicjalizacyjny dla systemd
i skonfigurować odpowiednie uprawnienia:
# touch /etc/systemd/system/3proxy.service
# chmod 664 /etc/systemd/system/3proxy.service
Poniższy tekst powinien zostać wstawiony do tego pliku:
[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
Zapisz i zaktualizuj konfigurację systemd
:
# systemctl daemon-reload
Uruchom 3proxy i dodaj go do autoloadera:
# systemctl start 3proxy
# systemctl enable 3proxy
Konfiguracja została zakończona. Masz teraz http-proxy na porcie 3128 i socks-proxy
na porcie 1080.
Pierwszym problemem jest możliwość, że po zarejestrowaniu nowej domeny nie będzie ona dostępna z powodu buforowania nazw domen. Aby rozwiązać ten problem, należy poczekać na aktualizację rekordów DNS lub dodać adres IP serwera i nowej domeny do pliku hosts
. Pozwoli to na dostęp do nowej domeny do czasu aktualizacji rekordów DNS.
Problem drugi - jeśli korzystasz z serwera proxy z domyślnymi portami, prędzej czy później serwer może zostać wykryty. Aby rozwiązać ten problem, zaleca się zmianę portów.
Na przykład, można ustawić port 7834 na http proxy i 7835 na Socks. Jednak takie porty również mogą zostać wykryte, więc można skonfigurować zaporę sieciową tak, aby zezwalała na dostęp do serwera tylko z określonych adresów, podczas gdy inne będą pozbawione dostępu. To rozwiązanie jest dość niezawodne, choć niezbyt elastyczne, ponieważ możesz nie mieć dostępu do statycznego adresu IP.
Trzeci problem polega na tym, że jeśli korzystasz z serwera proxy i przechowujesz dzienniki wszystkich połączeń, z czasem mogą one stać się dość duże i zająć większość wolnego miejsca na dysku. Aby uniknąć tego problemu, należy zadbać o rotację logów lub nie przechowywać ich wcale.
Istnieją różne metody rotacji logów, które pozwalają zachować tylko kilka ostatnich plików logów i automatycznie usuwać starsze logi. Dlatego najlepiej jest skonfigurować proces rotacji logów z wyprzedzeniem, aby uniknąć przepełnienia dysku. Pomoże to zachować wszystkie dane i uniknąć utraty informacji podczas korzystania z serwera proxy.
users proxyuser:CL:password
daemon
log /var/log/3proxy/3proxy.log D
rotate 30
auth strong
proxy -n -a
setgid 65534
setuid 65534
Konieczne jest również utworzenie katalogu na logi i ustawienie uprawnień (uruchamiamy serwer z minimalnymi prawami nobody w systemie za pomocą dyrektyw setgid/setud
):
mkdir /var/log/3proxy ; chown nobody /var/log/3proxy
Rozważmy instalację 3proxy w Dockerze.
Przede wszystkim musimy zainstalować kilka pakietów (a w przypadku niedawno zainstalowanych systemów Debian i Ubuntu może być również konieczne zaktualizowanie indeksu pakietów apt
za pomocą # apt update
).
Dla AlmaLinux i CentOS:
# yum install docker docker-compose
Dla Ubuntu i Debiana:
# apt install docker docker.io docker-compose
Pobierz obraz:
# docker pull 3proxy/3proxy
Domyślnie 3proxy używa bezpiecznego środowiska chroot w /usr/local/3proxy
z uid 65535
i gid 65
535 i oczekuje, że plik konfiguracyjny 3proxy zostanie umieszczony w /usr/local/etc/3proxy
. Ścieżki w pliku konfiguracyjnym powinny być określone względem /usr/local/3proxy
, tj. powinny być /logs
zamiast /usr/local/3proxy/logs
. W chroot wymagane są uprawnienia dla nserver
.
Aby to zrobić, utwórz katalog i plik konfiguracyjny 3proxy
:
# mkdir -p /etc/dockerapp/3proxy
# touch /etc/dockerapp/3proxy/3poxy.conf
Następnie użyj dowolnego edytora tekstu, aby edytować utworzony plik konfiguracyjny 3proxy .conf
. Aby uruchomić 3proxy w Dockerze, wystarczy minimalna konfiguracja:
nserver 8.8.8.8.8
socks -p3129
Aby dodać logowanie i użytkownika, należy dodać do pliku konfiguracyjnego 3proxy
:
log /logs/3proxy.log
auth strong
users "proxyuser:CR:87beeef3f4ee4661ac1897eca216fc26"
Zamiast"87beeef3f4ee4661ac1897eca216fc26
" należy podać hash MD5 hasła dla proxyuser
. Skrót MD5 można znaleźć za pomocą generatorów online.
Uruchommy 3proxy za pomocą docker-compose
. Będzie to wymagało utworzenia pliku konfiguracyjnego w formacie .yml
:
# touch /etc/dockerapp/3proxy/docker-compose.yml
Wstaw tam poniższy tekst za pomocą edytora tekstu:
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
Zapisz. W tym pliku określiliśmy port zewnętrzny 8080. Teraz możemy go uruchomić:
# docker-compose -f /etc/dockerapp/3proxy/docker-compose.yml up -d
Otrzymamy następującą odpowiedź:
Tworzenie sieci"3proxy_default
" z domyślnym sterownikiem
Tworzenie 3proxy ... done
Test:
# docker ps
Otrzymujemy odpowiedź z identyfikatorem kontenera, obrazem, statusem, używanymi portami i nazwą:
48cc0cd140cd 3proxy/3proxy:latest "/bin/3proxy /etc/3p..." 5