Установка 3proxy на digital ocean ubuntu, debian

 

В этой статье мы расскажем, как установить и настроить прокси-сервер 3proxy на облаке digitalocean.

Прокси-сервер (от англ. proxy — «представитель, уполномоченный») выступает в роли посредника в коммуникациях между вашим ПК/мобильным и Интернетом.

Чаще всего прокси-серверы применяются для следующих целей:

  • Обеспечение доступа компьютеров локальной сети к сети Интернет.
  • Кэширование данных: если часто происходят обращения к одним и тем же внешним ресурсам, то можно держать их копию на прокси-сервере и выдавать по запросу, снижая тем самым нагрузку на канал во внешнюю сеть и ускоряя получение клиентом запрошенной информации. С развитием динамического контента кэширование утратило актуальность.
  • Сжатие данных: прокси-сервер загружает информацию из Интернета и передаёт информацию конечному пользователю в сжатом виде. Такие прокси-серверы используются в основном с целью экономии внешнего сетевого трафика клиента или внутреннего — компании, в которой установлен прокси-сервер.
  • Защита локальной сети от внешнего доступа: например, можно настроить прокси-сервер так, что локальные компьютеры будут обращаться к внешним ресурсам только через него, а внешние компьютеры не смогут обращаться к локальным вообще (они «видят» только прокси-сервер). См. также NAT.
  • Ограничение доступа из локальной сети к внешней: например, можно запрещать доступ к определённым веб-сайтам, ограничивать использование интернета каким-то локальным пользователям, устанавливать квоты на трафик или полосу пропускания, фильтровать рекламу и вирусы.
  • Анонимизация доступа к различным ресурсам. Прокси-сервер может скрывать сведения об источнике запроса или пользователе. В таком случае целевой сервер видит лишь информацию о прокси-сервере, например, IP-адрес, но не имеет возможности определить истинный источник запроса. Существуют также искажающие прокси-серверы, которые передают целевому серверу ложную информацию об истинном пользователе.
  • Обход ограничений доступа. Прокси-серверы популярны среди пользователей стран, где доступ к некоторым ресурсам ограничен законодательно и фильтруется.

 

Прокси-сервер, к которому может получить доступ любой пользователь сети интернет, называется открытым.

Технические подробности

Клиентский компьютер имеет настройку (конкретной программы или операционной системы), в соответствии с которой все сетевые соединения по некоторому протоколу совершаются не на IP-адрес сервера (ресурса), выделяемый из DNS-имени ресурса, или напрямую заданный, а на IP-адрес (и другой порт) прокси-сервера.

При необходимости обращения к любому ресурсу по этому протоколу, клиентский компьютер открывает сетевое соединение с прокси-сервером (на нужном порту) и совершает обычный запрос, как если бы он обращался непосредственно к ресурсу.

Распознав данные запроса, проверив его корректность и разрешения для клиентского компьютера, прокси-сервер, не разрывая соединения, сам открывает новое сетевое соединение непосредственно с ресурсом и делает тот же самый запрос. Получив данные (или сообщение об ошибке), прокси-сервер передаёт их клиентскому компьютеру.

Таким образом прокси-сервер является полнофункциональным сервером и клиентом для каждого поддерживаемого протокола и имеет полный контроль над всеми деталями реализации этого протокола, имеет возможность применения заданных администратором политик доступа на каждом этапе работы протокола.

Прокси-серверы являются самым популярным способом выхода в Интернет из локальных сетей предприятий и организаций. Этому способствуют следующие обстоятельства:

  • Основной используемый в интернете протокол — HTTP, в стандарте которого описана поддержка работы через прокси;
  • Поддержка прокси большинством браузеров и операционных систем;
  • Контроль доступа и учёт трафика по пользователям;
  • Фильтрация трафика (интеграция прокси с антивирусами);
  • Прокси-сервер — может работать с минимальными правами на любой ОС с поддержкой сети (стека TCP/IP);
  • Многие приложения, использующие собственные специализированные протоколы, могут использовать HTTP как альтернативный транспорт или SOCKS-прокси как универсальный прокси, подходящий для практически любого протокола;
  • Отсутствие доступа в Интернет по другим (нестандартным) протоколам может повысить безопасность в корпоративной сети.

В настоящее время, несмотря на возрастание роли других сетевых протоколов, переход к тарификации услуг сети Интернет по скорости доступа, а также появлением дешёвых аппаратных маршрутизаторов с функцией NAT, прокси-серверы продолжают широко использоваться на предприятиях, так как NAT не может обеспечить достаточный уровень контроля над использованием Интернета (аутентификацию пользователей, фильтрацию контента).

Наиболее распространённые прокси-серверы

3proxy (BSD, многоплатформенный)
CoolProxy (проприетарный, Windows)
Eserv (shareware, Windows)
HandyCache (shareware, Windows) бесплатен для домашнего использования
Kerio Control (проприетарный, Windows, Linux)
Microsoft Forefront Threat Management Gateway, ранее Microsoft ISA Server (proprietary, Windows)
Blue Coat Proxy SG (аппаратный/виртуальный appliance)
nginx (веб-сервер, имеющий режим работы в качестве reverse proxy и часто для этого использующийся)
Squid (GPL, многоплатформенный)
Traffic Inspector (проприетарный, Windows)
UserGate (проприетарный, Windows)
Интернет Контроль Сервер (shareware, FreeBSD)
Tor (BSD, многоплатформенный)
Ideco ICS (проприетарный, Linux)
WinGate (проприетарный, Windows)
Cntlm (с авторизацией)
Apache (веб-сервер, имеющий дополнительные модули для реализации прямого и реверсного прокси)

Далее мы рассмотрим установку и настройку прокси сервера 3proxy в операционной системе Ubuntu либо Debian.

Среди всего многообразия прокси-серверов остановим свой выбор на открытом бесплатном кроссплатформенном сервере от Владимира ‘3APA3A’ Дубровина — 3proxy опубликованный под BSD-подобной лицензией. Текст лицензии.

Официальный сайт — http://3proxy.ru/
Исходный код на GitHub — https://github.com/z3APA3A/3proxy

Среди альтернатив можно выделить Squid, но он:

  • Сложен в настройках.
  • Потребляет больше ресурсов.
  • Не скомпилирован с поддержкой SSL по умолчанию и сложен для компиляции.

Также внимание заслуживает tinyproxy.

Преимущества и недостатки:

Он включает в себя:

  • HTTP прокси с поддержкой HTTPS и FTP.
  • SOCKSv4/SOCKSv4.5/SOCKSv5 прокси.
  • POP3 прокси.
  • SMTP прокси.
  • AIM/ICQ прокси.
  • MSN messenger / Live messenger прокси.
  • FTP прокси.
  • Кэширующий DNS прокси.
  • TCP и UDP портмапперы.

Так же доступны дополнительные возможности, такие как:

  • Управление доступом.
  • Ограничение ширины потребляемого канала.
  • Ограничение трафика на день, неделю и месяц.
  • Перенаправление соединений.
  • Построение цепочек соединений.
  • Ротация лог-файлов.
  • Ведение журналов через ODBC и syslog.
  • Поддержка IPv6.
  • и ряд других.

К недостаткам можно отнести:

  • Отсутствие поддержки кеширования веб-страниц.
  • Отсутствие в официальных репозиториях некоторых linux-дистрибутивов (включая Debian и Ubuntu), но в репозиториях
  • Gentoo, RedHat, Alt Linux присутствует.

Технические требования

  • Операционная система Debian GNU/Linux (версии с 7 по 9) или Ubuntu (версии с 14.04 по 18.04) любой разрядности (32/64 бита).
  • Пользователь с привилегиями root (как вариант доступ через sudo).

Шаг 1. Подготавливаем инструментарий

В связи с тем что он отсутствует в официальных репозиториях Debian и Ubuntu, мы будем устанавливать его из исходников.

Но перед этим установим всё необходимое для дальнейшей работы.

sudo apt-get update
sudo apt-get install -y build-essential nano wget tar gzip

Шаг 2. Скачиваем и распаковываем исходники

Узнать последнюю версию можно на официальном сайте, при необходимости просто замените цифры на необходимые в следующих парах команд:

cd ~
wget —no-check-certificate https://github.com/z3APA3A/3proxy/archive/0.8.10.tar.gz
tar xzf 0.8.10.tar.gz

Шаг 3. Компилируем

cd ~/3proxy-0.8.10
sudo make -f Makefile.Linux

Шаг 4. Устанавливаем

Копируем получившийся бинарный файл:

sudo mkdir /etc/3proxy
cd ~/3proxy-0.8.10/src
sudo cp 3proxy /usr/bin/

Создадим отдельного системного пользователя proxy3 от имени которого и будет работать сервер:

sudo adduser —system —no-create-home —disabled-login —group proxy3

Узнаём UID и GID пользователя командой:

id proxy3

В ответ, например, получим:

uid=109(proxy3) gid=115(proxy3) groups=115(proxy3)

Создаём файл настроек:

sudo nano /etc/3proxy/3proxy.cfg

Вставляем в него следующий код:

(вставка из буфера обмена возможна по клику правой кнопки мыши или Shift+Insert)

# Запускаем сервер от пользователя proxy3
# (возможно в вашей ОС uid и gid пользователя proxy3
# будут другими. Для их определения воспользуйтесь командой id proxy3)
setgid 115
setuid 109
#
# Пропишите правильные серверы имен посмотрев их
# на своем сервере в /etc/resolv.conf
nserver 8.8.8.8
nserver 77.88.8.8
#
# Оставьте размер кэша для запросов DNS по умолчанию
nscache 65536
#
# Равно как и таймауты
timeouts 1 5 30 60 180 1800 15 60
#
# Если несколько IP на одном сервере, указываем тот,
# через который ходить во внешний мир.
# Иначе эту строку игнорируем
#external <YOURSERVERIP>
# Тоже самое, только указываем IP, который надо слушать
# Если проигнорировать, то прокси слушает все адреса на сервере
#internal <YOURSERVERIP>
#
# Указываем на расположение файла с пользователями и паролями
users $/etc/3proxy/.proxyauth
#
# укажите режим запуска как deamon
daemon
#
# путь к логам и формат лога, к имени лога будет добавляться дата создания
log /var/log/3proxy/3proxy.log D
logformat «- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T»
#
# Включаем авторизацию по логинам и паролям
auth cache strong
#
# Конфигурация http(s) proxy
# Запускаем анонимный (-a) HTTP-proxy на порту (-p) 3128 и
# c отключенной NTLM-авторизацией (-n)
proxy -n -p3128 -a

(Для сохранения и закрытия нажмите CTRL+X затем Y)

Комментарии начинаются со знака # и допустимы только с начала строки.
Рекомендуется вообще удалить комментарии для более стабильной работы 3proxy.
Рекомендуется также использовать другой порт вместо стандартного 3128 для прокси серверов, лучше всего из диапазона 49152—65535.

Другие примеры настроек можно посмотреть командами:

nano ~/3proxy-0.8.10/cfg/3proxy.cfg.sample
nano ~/3proxy-0.8.10/doc/ru/example1.txt

или же в одном из следующих руководств на которые ссылается официальный сайт:

https://3proxy.ru/doc/man3/3proxy.cfg.3.html
https://3proxy.ru/doc/3proxy_for_dummies.rtf
https://3proxy.ru/howtor.asp
https://3proxy.ru/howtoe.asp

Вот пример конфигурации без ведения логов:

setgid 115
setuid 109
nserver 8.8.8.8
nserver 77.88.8.8
nscache 65536
timeouts 1 5 30 60 180 1800 15 60
users $/etc/3proxy/.proxyauth
daemon
auth cache strong
proxy -n -p3128 -a

Создаём файл с пользователями и паролями:

sudo nano /etc/3proxy/.proxyauth

Вставляем в него следующий код:

(вставка из буфера обмена возможна по клику правой кнопки мыши или Shift+Insert)

addusers in this format:
#user:CL:password
##see for documentation: http://www.3proxy.ru/howtoe.asp#USERS
username:CL:strongpassword

(Для сохранения и закрытия нажмите CTRL+X затем Y)

Где логин: username и пароль: strongpassword следует изменить на свои.

Каждый новый пользователь указывается с новой строки.

Выставляем права доступа к файлам прокси-сервера:

sudo chown proxy3:proxy3 -R /etc/3proxy
sudo chown proxy3:proxy3 /usr/bin/3proxy
sudo chmod 444 /etc/3proxy/3proxy.cfg
sudo chmod 400 /etc/3proxy/.proxyauth

Создаём папку для ведения логов и назначаем права на неё:

sudo mkdir /var/log/3proxy
sudo chown proxy3:proxy3 /var/log/3proxy

В случае наличия IPv6 на сервере (а на digital ocean выдают 16 адресов ipv6),
рекомендуем запускать прокси со следующей строкой в /etc/3proxy/3proxy.cfg:

proxy -46 -n -p3128 -a -i95.213.255.16 -e95.213.255.16 -e2002:5fd5:ff010::1

для сервера с IPv4:95.213.255.16 и IPv6:2002:5fd5:ff010::1 у вас же они будут иные.
В таком случае будет поддержка IPv6 на выходе с прокси, например https://yandex.ru/internet отобразит оба адреса.

Шаг 5. Добавляем в автозагрузку и запускаем прокси-сервер

Создаём файл-инициализации:

sudo nano /etc/init.d/3proxyinit

Вставляем в него следующий код:

(вставка из буфера обмена возможна по клику правой кнопки мыши или Shift+Insert)

#!/bin/sh
#
### BEGIN INIT INFO
# Provides: 3Proxy
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Initialize 3proxy server
# Description: starts 3proxy
### END INIT INFO

case «$1» in
start)
echo Starting 3Proxy

/usr/bin/3proxy /etc/3proxy/3proxy.cfg
;;

stop)
echo Stopping 3Proxy
/usr/bin/killall 3proxy
;;

restart|reload)
echo Reloading 3Proxy
/usr/bin/killall -s USR1 3proxy
;;
*)
echo Usage: \$0 «{start|stop|restart}»
exit 1
esac
exit 0

(Для сохранения и закрытия нажмите CTRL+X затем Y)

Ещё один вариант скрипта инициализации:

nano ~/3proxy-0.8.10/scripts/rc.d/proxy.sh

Делаем файл исполняемым:

sudo chmod +x /etc/init.d/3proxyinit

Добавляем в автозагрузку:

sudo update-rc.d 3proxyinit defaults

Запускаем прокси-сервер:

sudo /etc/init.d/3proxyinit start

В консоли мы увидим сообщение:

Starting 3Proxy

Проблемы с запуском чаще всего связаны с файлом /etc/3proxy/3proxy.cfg
в т.ч. к последней строке файла. При возникновении ошибки обычно указан порядковый номер проблемной строки.

Также мы увидим его в списке запущенных процессов в ответе на команду:

ps -ela | grep «3proxy»

Шаг 6. Открываем порт

Открываем порт (3128/tcp) на сервере.
Либо указываем свой, который указан в файле /etc/3proxy/3proxy.cfg

При использовании Uncomplicated Firewall (UFW):

sudo ufw allow 3128/tcp
sudo ufw enable

При использовании iptables:

sudo iptables -I INPUT -p tcp -m tcp —dport 3128 -j ACCEPT

Шаг 7. Настраиваем окружение

Множество программ (включая веб-браузеры) поддерживают работу через прокси по умолчанию. Интерфейс настроек у каждой свой.

Если же программа не поддерживает, то возможна настройка
работы всех соединений через прокси в параметрах используемой вами операционной системы.

Либо использование программы проксификатора.
Например такой как:

  • WideCap
  • FreeCap
  • tun2socks
  • redsocks
  • Proxifier
  • ProxyCap

 

Настройки для браузера Google Chrome:
Для подключения к сети Google Chrome использует системные настройки прокси-сервера.
В случае Microsoft Windows это настройки можно также найти в Internet Explorer / MS Edge.

Настройки для браузера Mozilla Firefox

Настройки для браузера Opera

Настройки для браузера Safari

Форма с предложением ввода логина и пароля (username:strongpassword) появится, после первой попытки открытия любой веб-страницы.

Затем любые сервисы по проверки IP-адреса, например, такие как:

https://yandex.ru/internet
https://2ip.ru/
https://ifconfig.co/
сообщат IP-адрес вашего Vscale-сервера вместо текущего.

Шаг 8. Удаляем временные файлы

rm ~/0.8.10.tar.gz
sudo rm -r ~/3proxy-0.8.10

Шаг 9. (ОПЦИОНАЛЬНО) Удаляем 3Proxy

Так как установка осуществлялась из исходников, то пакетный менеджер операционной системы бесполезен. Для удаления выполните следующие команды:

sudo /etc/init.d/3proxyinit stop
sudo rm -rf /etc/3proxy
sudo rm /etc/rc0.d/*proxyinit
sudo rm /etc/rc1.d/*proxyinit
sudo rm /etc/rc6.d/*proxyinit
sudo rm /etc/rc2.d/*proxyinit
sudo rm /etc/rc3.d/*proxyinit
sudo rm /etc/rc4.d/*proxyinit
sudo rm /etc/rc5.d/*proxyinit
sudo rm /etc/init.d/3proxyinit
sudo rm -rf /var/log/3proxy
sudo rm /usr/bin/3proxy

Заключение

Мы рассмотрели установку и базовую настройку 3proxy. Безусловно у данного прокси-сервера есть еще множество настроек, которые мы не затронули, в том числе настройку SOCKS-прокси, построение цепочек соединений, управление доступом, ограничение ширины потребляемого канала, ограничение трафика по времени, но это тема уже для отдельного руководства.

Таким образом после выполненных действий вы получаете свой собственный прокси-сервер, который более безопасен для вас, так как ваш трафик заведомо не будет перехвачен и проанализирован третьими лицами, от чего вы не застрахованы при использовании сторонних решений. Хотя с этой точки зрения более эффективна настройка VPN-туннеля с шифрованием.

3proxy может выступать в роли высоко-анонимного прокси-сервера. Признаком использования подобного может быть лишь принадлежность выходного IP-адреса сервера к пулу адресов закреплённых за хостинговой компанией при просмотре WHOIS-данных и PTR-записи. В целом он хорош тем, что является маленьким и простым, но в то же время функциональным.