3proxy је бесплатан прокси сервер отвореног кода који се користи у разне сврхе као што су филтрирање саобраћаја, кеширање и блокирање одређених веб локација. Подржава разне протоколе као што су SOCKS v4/v4a/v5, HTTP, HTTPS, FTP, POP3, SMTP, и подржава методе аутентификације као што су SOCKS5 корисничко име/лозинка, NTLM, LDAP, Kerberos и SSO.
Сервер је високо конфигурабилан, пружајући детаљну контролу над коришћењем пропусног опсега и параметрима везе. 3proxy се може инсталирати на Windows, Linux и macOS платформама. То је лаган и једноставан за коришћење прокси сервер погодан за мале и средње мреже. Могуће је изнајмљивање VPS проксија.
Потребно је бити опрезан, јер се не препоручује инсталирање сервера без овлашћења. То може довести до неовлашћеног коришћења сервера од стране уљеза ради организовања дистрибуције спама и великог саобраћаја.
Да бисте започели, потребно је да инсталирате неколико пакета и зависности.
За AlmaLinux, команда се извршава:
yum -y install gcc wget tar
и за Дебијан:
apt install -y build-essential wget tar
Затим преузимамо датотеке са званичне веб странице пројекта 3proxy, распакујемо архиву и компајлирамо преузете датотеке.
Затим, креирамо потребне директоријуме за конфигурационе датотеке и логове, преносимо извршну датотеку 3proxy
, а такође креирамо новог корисника „ proxyuser
“ и додељујемо му права на директоријуме. Да бисте креирали нову конфигурациону датотеку, извршите команду:
touch /etc/3proxy/3proxy.cfg
Додељујемо права само root кориснику користећи chmod 600 /etc/3proxy/3proxy.cfg
.
Након креирања нове конфигурационе датотеке, потребно је да је правилно попуните. Да бисте то урадили, запишите uid
и gid
корисника „ proxyuser
“, а затим користите уређивач текста да бисте копирали и налепили текст из примера конфигурационе датотеке. Сачувајте измене у конфигурационој датотеци и инсталирајте 3proxy са подршком за http(s) и socks5-proxy.
Испод је пример конфигурационе датотеке:
Подешавање покретања сервера од стране прокси корисника
(убацујемо uid
и gid
нашег корисника, које смо раније сазнали).
setgid 991
setuid 991
Наведите исправне именске сервере. Можете их видети у /etc/resolv.conf:
nserver 8.8.8.8
nserver 8.8.4.4
Користимо подразумевана временска ограничења и величину кеша за DNS упите:
timeouts 1 5 30 60 180 1800 15 60
nscache 65536
Режим покретања наводимо као демон:
daemon
Наводимо ИП адресу екстерног интерфејса сервера:
external 111.111.111.111
(или игноришите линију ако постоји само једна ИП адреса).
Наводимо ИП адресу интерног интерфејса сервера:
internal 192.168.0.1
(или је игноришите тако да прокси слуша све ИП адресе).
Поставили смо http прокси на стандардни порт 3128:
proxy -p3128 -n -a
(наведите свој порт, након што проверите да ли ради).
Конфигуришемо socks proxy на стандардном порту 1080:
socks -p1080
(наведите свој порт, након што проверите да ли ради).
Наводимо путању до логова, формат логова и ротацију:
log /var/log/3proxy/3proxy.log D
logformat "- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T"
rotate 30
Затим, креирамо иницијализациону датотеку за systemd
и конфигуришемо исправна права:
# touch /etc/systemd/system/3proxy.service # chmod 664 /etc/systemd/system/3proxy.service
Следећи текст мора бити уметнут у ову датотеку:
[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
Сачувајте и ажурирајте конфигурацију systemd
:
# systemctl daemon-reload
Покрените 3proxy и додајте га у покретање:
# systemctl start 3proxy # systemctl enable 3proxy
Подешавање је завршено. Сада имате http-proxy који ради на порту 3128 и socks-proxy
који ради на порту 1080.
Први проблем је тај што након регистрације новог домена, он вам можда неће бити доступан због кеширања имена домена. Да бисте решили овај проблем, потребно је да сачекате да се DNS записи ажурирају или да додате IP адресу вашег сервера и нови домен у датотеку hosts
. Ово ће вам омогућити да приступите новом домену док се DNS записи не ажурирају.
Проблем два - ако користите прокси сервер са подразумеваним портовима, онда пре или касније сервер може бити детектован. Да би се решио овај проблем, препоручује се промена портова.
На пример, можете подесити порт 7834 на http проксију и 7835 на Socks-у. Међутим, такви портови се такође могу детектовати, тако да можете конфигурисати заштитни зид да дозволи приступ серверу само са одређених адреса, док ће осталима приступ бити забрањен. Ово решење је прилично поуздано, иако не баш флексибилно, јер можда немате приступ статичкој IP адреси.
Проблем три - ако користите прокси сервер и чувате логове свих конекција, временом они могу постати прилично велики и заузети већину слободног простора на диску. Да бисте избегли овај проблем, потребно је да унапред водите рачуна о ротацији логова или да их уопште не чувате.
Постоје различите методе ротације логова које вам омогућавају да сачувате само последњих неколико датотека логова и аутоматски обришете старије уносе. Стога је најбоље да унапред подесите процес ротације логова како бисте избегли препуњавање диска. Ово ће помоћи да се сачувају сви подаци и избегне губитак информација када се користи прокси сервер.
users proxyuser:CL:password daemon log /var/log/3proxy/3proxy.log D rotate 30 auth strong proxy -n -a setgid 65534 setuid 65534
Такође је потребно креирати директоријум за логове и подесити права (сервер покрећемо са минималним правима никога у систему користећи директиве setgid/setud
):
mkdir /var/log/3proxy ; chown nobody /var/log/3proxy
Размотримо опцију инсталирања 3proxy-ја у Docker-у.
Прво, мораћете да инсталирате неке пакете (а за новоинсталиране Debian и Ubuntu OS, можда ћете морати да ажурирате и индекс apt
пакета помоћу команде # apt update
).
За AlmaLinux и CentOS:
# yum install docker docker-compose
за Убунту и Дебијан:
# apt install docker docker.io docker-compose
Преузмите слику:
# docker pull 3proxy/3proxy
Подразумевано, 3proxy користи безбедно chroot окружење у /usr/local/3proxy
са uid 65535
и gid 65535
, и очекује да се 3proxy конфигурациона датотека налази у /usr/local/etc/3proxy
. Путање у конфигурационој датотеци морају бити релативне у односу на /usr/local/3proxy
, тј. /logs
уместо /usr/local/3proxy/logs
. Chroot захтева дозволу за nserver
.
Да бисте то урадили, креирајте директоријум и конфигурациону датотеку за 3proxy
:
# mkdir -p /etc/dockerapp/3proxy # touch /etc/dockerapp/3proxy/3poxy.conf
Затим, користећи било који уређивач текста који вам одговара, потребно је да измените креирану конфигурациону датотеку 3proxy.conf
. Да бисте покренули 3proxy у Docker-у, довољна је минимална конфигурација:
nserver 8.8.8.8
socks -p3129
Да бисте додали логовање и корисника, потребно је да додате следеће у конфигурациону датотеку 3proxy
:
log /logs/3proxy.log auth strong users "proxyuser:CR:87beeef3f4ee4661ac1897eca216fc26"
Уместо „ 87beeef3f4ee4661ac1897eca216fc26
“ потребно је да наведете MD5 хеш лозинке за корисника proxyuser
. MD5 хеш можете сазнати користећи онлајн генераторе.
Покренимо 3proxy користећи docker-compose
. Да бисмо то урадили, потребно је да креирамо конфигурациони фајл у .yml
формату:
# touch /etc/dockerapp/3proxy/docker-compose.yml
Тамо убацујемо следећи текст користећи уређивач текста:
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
Сачувај. У овој датотеци смо навели екстерни порт 8080. Сада можемо покренути:
# docker-compose -f /etc/dockerapp/3proxy/docker-compose.yml up -d
Добићемо одговор отприлике овакав:
Креирање мреже „ 3proxy_default
“ са подразумеваним драјвером
Креирање 3проксија... завршено
Хајде да проверимо:
# docker ps
Добићемо одговор који садржи ИД контејнера, слику, статус, коришћене портове и име:
48cc0cd140cd 3proxy/3proxy:latest "/bin/3proxy /etc/3p…" 5