Как установить 3proxy на debian

Обновлено: 01.07.2024

В данной статье хотелось бы раскрыть возможности прозрачного проксирования, которое позволяет абсолютно незаметно для клиентов перенаправлять весь либо часть трафика через внешние прокси-серверы.

В распространенных инструкциях к прокси-серверу Squid предлагают даже сгенерировать собственный сертификат и установить его клиентам, что полный бред как минимум нерационально и выглядит как MITM — атака. Я знаю, что Squid уже что-то подобное умеет делать, но речь в этой статье о проверенном и рабочем способе с использованием 3proxy от уважаемого 3APA3A.

Далее мы подробно рассмотрим процесс сборки 3proxy из исходников, его настройку, полное и выборочное проксирование с использованием NAT, распределение канала на несколько внешних прокси-серверов, а также использование роутера и статических маршрутов. В качестве ОС используем Debian 9 x64. Начинаем!

Установка 3proxy и запуск обычного прокси-сервера

1. Устанавливаем ifconfig (из пакета net-tools)
apt-get install net-tools
2. Устанавливаем Midnigth Commander
apt-get install mc
3. У нас сейчас 2 интерфейса:
enp0s3 — внешний, смотрит в интернет
enp0s8 — внутренний, должен смотреть в локальную сеть
В других Debian-based дистрибутивах интерфейсы обычно называются eth0 и eth1.
ifconfig -a

enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.23.11 netmask 255.255.255.0 broadcast 192.168.23.255
inet6 fe80::a00:27ff:fec2:bae4 prefixlen 64 scopeid 0x20 ether 08:00:27:c2:ba:e4 txqueuelen 1000 (Ethernet)
RX packets 6412 bytes 8676619 (8.2 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1726 bytes 289128 (282.3 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

enp0s8: flags=4098<BROADCAST,MULTICAST> mtu 1500
ether 08:00:27:79:a7:e3 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10 loop txqueuelen 1 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

Интерфейс enp0s8 на данный момент не используется, мы его включим, когда захотим использовать конфигурацию Proxy NAT или NAT. Именно тогда логичным будет назначить ему статический ip.

4. Приступим к установке 3proxy

4.1 Установка базовых пакетов для компиляции 3proxy из исходников

4.2. Создадим папку для скачивания архива с исходниками

4.3. Перейдем в эту папку

4.4. Теперь загрузим последний пакет 3proxy. На момент написания статьи последней стабильной версией была 0.8.12 (18/04/2018) Скачаем её с официального сайта 3proxy

4.5. Распакуем скачанный архив

4.6. Переходим в распакованный каталог для сборки программы

4.7. Далее нужно добавить строчку в файл заголовка, чтобы наш сервер был полностью анонимным (реально работает, всё проверено, ip клиентов скрываются)

4.8. Приступим к сборке программы

make[2]: Leaving directory '/opt/proxy/3proxy-0.8.12/src/plugins/TransparentPlugin'
make[1]: Leaving directory '/opt/proxy/3proxy-0.8.12/src'

Ошибок нет, продолжаем.

4.9. Установим программу в систему

4.10. Переходим в корневой каталог и проверяем, куда установилась программа

4.11. Создадим папку для конфигурационных файлов и логов в домашнем каталоге пользователя

4.12. Переходим в каталог, где должен быть конфиг

4.13. Создаем пустой файл и копируем туда конфиг

daemon
pidfile /home/joke/proxy/3proxy.pid
nserver 8.8.8.8
nscache 65536
users tester:CL:1234
timeouts 1 5 30 60 180 1800 16 60
log /home/joke/proxy/logs/3proxy.log D
logformat "- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T"
rotate 3
auth strong
flush
allow tester
socks -p3128
proxy -p8080

Для сохранения нажимаем Ctrl + Z

4.14. Создадим pid — файл, чтобы не было ошибок при запуске.

Для сохранения нажимаем Ctrl + Z

4.15. Запускаем прокси сервер!

4.16. Посмотрим, слушает ли сервер порты

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 504/3proxy
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 338/sshd
tcp 0 0 0.0.0.0:3128 0.0.0.0:* LISTEN 504/3proxy
tcp6 0 0 . 22 . * LISTEN 338/sshd
udp 0 0 0.0.0.0:68 0.0.0.0:* 352/dhclient

Как и было написано в конфиге, веб-прокси слушает у нас порт 8080, Socks5-прокси — 3128.

4.17. Для автозапуска службы прокси после перезагрузки нужно добавить её в cron.

@reboot /usr/local/bin/3proxy /home/joke/proxy/3proxy.conf

Нажимаем Enter, так как cron должен видеть символ конца строки и сохраняем файл.

crontab: installing new crontab

4.18. Перезагрузим систему и попробуем подключиться через браузер к прокси. Для проверки используем браузер Firefox (для веб-прокси) и дополнение FoxyProxy для socks5 с аутентификацией.

4.19. Проверив работу прокси после перезагрузки, можно посмотреть логи. На этом настройка прокси-сервера завершена.

Настройка и запуск конфигурации Transparent Proxy NAT

В данной конфигурации все устройства внутренней сети будут прозрачно работать в интернете через удаленный прокси-сервер. Абсолютно все tcp-соединения будут перенаправляться в один либо несколько (реально расширяет ширину канала, пример конфигурации №2!) прокси-серверов. Служба DNS будет использовать возможности 3proxy (dnspr). UDP наружу «ходить» не будет, так как мы пока не используем механизм forward (по-умолчанию отключен в ядре Linux).

1. Настало время включить интерфейс enp0s8

Тут мы назначили интерфейсу enp0s8 статический адрес 192.168.201.254 и маску 255.255.255.0
Сохраняем конфиг Ctrl+X и перезагружаемся

2. Проверяем интерфейсы

enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.23.11 netmask 255.255.255.0 broadcast 192.168.23.255
inet6 fe80::a00:27ff:fec2:bae4 prefixlen 64 scopeid 0x20 ether 08:00:27:c2:ba:e4 txqueuelen 1000 (Ethernet)
RX packets 61 bytes 7873 (7.6 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 65 bytes 10917 (10.6 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

enp0s8: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.201.254 netmask 255.255.255.0 broadcast 192.168.201.255
inet6 fe80::a00:27ff:fe79:a7e3 prefixlen 64 scopeid 0x20 ether 08:00:27:79:a7:e3 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 8 bytes 648 (648.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10 loop txqueuelen 1 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

3. Всё получилось, теперь необходимо настроить 3proxy для прозрачного проксирования.

Пример конфигурации прозрачного прокси-сервера №1 daemon
pidfile /home/joke/proxy/3proxy.pid
nserver 8.8.8.8
nscache 65536
timeouts 1 5 30 60 180 1800 16 60
log /home/joke/proxy/logs/3proxy.log D
logformat "- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T"
rotate 3
flush
auth iponly
dnspr
allow *
parent 1000 socks5 IP_АДРЕС_ВНЕШНЕГО_ПРОКСИ 3128 tester 1234
plugin /opt/proxy/3proxy-0.8.12/src/TransparentPlugin.ld.so transparent_plugin
tcppm -i0.0.0.0 888 127.0.0.1 11111

6. Посмотрим, что теперь слушает наш прокси
root@debian9:

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 349/sshd
tcp 0 0 0.0.0.0:888 0.0.0.0:* LISTEN 354/3proxy
tcp6 0 0 . 22 . * LISTEN 349/sshd
udp 0 0 0.0.0.0:53 0.0.0.0:* 354/3proxy
udp 0 0 0.0.0.0:68 0.0.0.0:* 367/dhclient

8. Установим пакет iptables-persistent и dhcpd

9. Правим файл запуска dhcpd
root@debian9:

default-lease-time 600;
max-lease-time 7200;


11. Перезагружаемся и проверяем службу на порту 67
root@debian9:

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 389/sshd
tcp 0 0 0.0.0.0:888 0.0.0.0:* LISTEN 310/3proxy
tcp6 0 0 . 22 . * LISTEN 389/sshd
udp 0 0 0.0.0.0:20364 0.0.0.0:* 393/dhcpd
udp 0 0 0.0.0.0:53 0.0.0.0:* 310/3proxy
udp 0 0 0.0.0.0:67 0.0.0.0:* 393/dhcpd
udp 0 0 0.0.0.0:68 0.0.0.0:* 405/dhclient
udp6 0 0 . 31728 . * 393/dhcpd
raw 0 0 0.0.0.0:1 0.0.0.0:* 393/dhcpd

13. Для расширения полосы канала можно использовать сразу несколько прокси-серверов. Общая сумма должна быть 1000. Новые соединения устанавливаются с вероятностью 0.2, 0.2, 0.2, 0.2, 0,1, 0,1 к указанным прокси-серверам.

Примечание: если у нас web-прокси то вместо socks5 нужно писать connect, если socks4, то socks4 (socks4 НЕ ПОДДЕРЖИВАЕТ АВТОРИЗАЦИЮ ЛОГИН/ПАРОЛЬ!)

Пример конфигурации прозрачного прокси-сервера №2

daemon
pidfile /home/joke/proxy/3proxy.pid
nserver 8.8.8.8
nscache 65536
maxconn 500
timeouts 1 5 30 60 180 1800 16 60
log /home/joke/proxy/logs/3proxy.log D
logformat "- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T"
rotate 3
flush
auth iponly
dnspr
allow *

parent 200 socks5 IP_АДРЕС_ВНЕШНЕГО_ПРОКСИ№1 3128 tester 1234
parent 200 socks5 IP_АДРЕС_ВНЕШНЕГО_ПРОКСИ№2 3128 tester 1234
parent 200 socks5 IP_АДРЕС_ВНЕШНЕГО_ПРОКСИ№3 3128 tester 1234
parent 200 socks5 IP_АДРЕС_ВНЕШНЕГО_ПРОКСИ№4 3128 tester 1234
parent 100 socks5 IP_АДРЕС_ВНЕШНЕГО_ПРОКСИ№5 3128 tester 1234
parent 100 socks5 IP_АДРЕС_ВНЕШНЕГО_ПРОКСИ№6 3128 tester 1234

plugin /opt/proxy/3proxy-0.8.12/src/TransparentPlugin.ld.so transparent_plugin
tcppm -i0.0.0.0 888 127.0.0.1 11111

Настройка и запуск конфигурации NAT + Transparent Proxy

2. Набираем в гугле BGP 208.85.40.20

Открываем префиксы v4

Вот и искомые подсети!

199.116.161.0/24
199.116.162.0/24
199.116.164.0/23
199.116.164.0/24
199.116.165.0/24
208.85.40.0/24
208.85.41.0/24
208.85.42.0/23
208.85.42.0/24
208.85.43.0/24
208.85.44.0/24
208.85.46.0/23
208.85.46.0/24
208.85.47.0/24

199.116.161.0/24
199.116.162.0/24
199.116.164.0/23
208.85.40.0/22
208.85.44.0/24
208.85.46.0/23

4. Очищаем правила iptables

Включаем механизм forward и NAT

Чтобы forward был включен постоянно после перезагрузки изменим файл

И раскомментируем строку

Ctrl+X для сохранения файла

6. Сохраним правила

Настройка и запуск конфигурации Transparent Proxy via router

В данной конфигурации прозрачный прокси-сервер может быть отдельным ПК или виртуальной машиной за домашним/корпоративным роутером. Достаточно прописать статические маршруты на роутере или устройствах и вся подсеть будет использовать прокси без необходимости каких-либо дополнительных настроек.

ВАЖНО! Необходимо, чтобы наш шлюз получал статический IP от роутера, либо был настроен на статику сам.

1. Настраиваем статический адрес шлюза (адаптер enp0s3)

2. Разрешаем устройствам из подсети 192.168.23.0/24 использовать проксирование


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

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

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

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

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

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

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

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

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

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

В настоящее время, несмотря на возрастание роли других сетевых протоколов, переход к тарификации услуг сети Интернет по скорости доступа, а также появлением дешёвых аппаратных маршрутизаторов с функцией 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.


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

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

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

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

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

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

  • Управление доступом.
  • Ограничение ширины потребляемого канала.
  • Ограничение трафика на день, неделю и месяц.
  • Перенаправление соединений.
  • Построение цепочек соединений.
  • Ротация лог-файлов.
  • Ведение журналов через 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. Скачиваем и распаковываем исходники

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

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

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

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

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

/3proxy-0.8.10/src
sudo cp 3proxy /usr/bin/

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

(Для сохранения и закрытия нажмите 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

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

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

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

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

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

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

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

sudo update-rc.d 3proxyinit defaults

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

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

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

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

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

sudo ufw allow 3128/tcp
sudo ufw enable

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

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

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

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

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

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

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

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

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

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

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

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

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

/0.8.10.tar.gz
sudo rm -r

Шаг 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-записи. В целом он хорош тем, что является маленьким и простым, но в то же время функциональным.

Настройка брандмауэра

По умолчанию, в Ubuntu брандмауэр разрешает все подключения. Однако, если у нас настроен фаервол для запрета лишних соединений, необходимо открыть порт для прокси.

а) если используем Iptables.

iptables -I INPUT 1 -p tcp --dport 3128 -j ACCEPT

* если система вернет ошибку при вводе команды для сохранения правил, устанавливаем пакет командой apt-get install iptables-persistent.

б) если у нас firewalld.

firewall-cmd --permanent --add-port=3128/tcp

* 3128 — порт по умолчанию, по которому работает 3proxy в режиме прокси;

Установка и запуск 3proxy

3proxy отсутствует в репозиториях Ubuntu, поэтому для установки сначала необходимо скачать его исходник.

Для начала устанавливаем пакет программ для компиляции пакетов:

apt-get install build-essential

Переходим на официальную страницу загрузки 3proxy и копируем ссылку на версию пакета для Linux:

Копируем ссылку на версию пакета для Linux

. используя ссылку, скачиваем пакет:

* в моем случае будет скачена версия 0.9.3.

Распакуем скачанный архив:

tar xzf 0.9.3.tar.gz

Переходим в распакованный каталог:

Запускаем компиляцию 3proxy:

make -f Makefile.Linux

Создаем системную учетную запись:

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

Создаем каталоги и копируем файл 3proxy в /usr/bin:

mkdir -p /var/log/3proxy

cp bin/3proxy /usr/bin/

Задаем права на созданные каталоги:

chown proxy3:proxy3 -R /etc/3proxy

chown proxy3:proxy3 /usr/bin/3proxy

chown proxy3:proxy3 /var/log/3proxy

Смотрим uid и gid созданной учетной записи:

Получим, примерно, такой результат:

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

* где 109 — идентификатор пользователя; 113 — идентификатор для группы.

Создаем конфигурационный файл:

setuid 109
setgid 113

nserver 77.88.8.8
nserver 8.8.8.8

nscache 65536
timeouts 1 5 30 60 180 1800 15 60

external 111.111.111.111
internal 111.111.111.111

log /var/log/3proxy/3proxy.log D
logformat "- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T"
rotate 30

* необходимо обратить внимание на настройки setuid и setgid — это должны быть значения для созданной нами учетной записи; external и internal — внешний и внутренний интерфейсы (если наш прокси работает на одном адресе, то IP-адреса должны совпадать).

Настройка браузера

Проверяем работоспособность нашего 3proxy. Для этого настраиваем браузер для работы через прокси-сервер, например, Mozilla Firefox:

Пример настройки Mozilla Firefox для работы через прокси

. пробуем открыть сайты.

Настройка автозапуска

Для автозагрузки 3proxy настроим его как сервис. Создаем файл в systemd:

[Unit]
Description=3proxy Proxy Server

[Service]
Type=simple
ExecStart=/usr/bin/3proxy /etc/3proxy/3proxy.cfg
ExecStop=/bin/kill `/usr/bin/pgrep -u proxy3`
RemainAfterExit=yes
Restart=on-failure

Обновляем конфигурацию systemd:

Разрешаем запуск сервиса и стартуем его:

systemctl enable 3proxy

systemctl start 3proxy

Настройка аутентификации

Для редактирования настроек открываем конфигурационный файл:

Добавляем опции users и добавляем пользователей:

users 3APA3A:CL:3apa3a "test:CR:$1$qwer$CHFTUFGqkjue9HyhcMHEe1"
users dmosk1:CL:password
users "dmosk2:CR:$1$UsbY5l$ufEATFfFVL3xZieuMtmqC0"

* в данном примере мы добавили 3-х пользователей: 3APA3A с паролем 3apa3a, dmosk1 с открытым паролем password и dmosk2 с паролем dmosk2 в виде md5 и солью UsbY5l (Для получения хэша пароля можно воспользоваться командой openssl passwd -1 -salt UsbY5l, где в качестве соли можно использовать любую комбинацию).
* обратите внимание, при использовании знака $, строчка пишется в кавычках.

* возможные типы паролей:

  • CL — текстовый пароль
  • CR — зашифрованный пароль (md5)
  • NT — пароль в формате NT.

Чтобы включить запрос логина, необходимо поменять значение для опции auth на strong:

* возможные варианты для auth:

  • none — без авторизации.
  • iponly — авторизация по IP-адресу клиента.
  • nbname — по Netbios имени.
  • strong — по логину и паролю.

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

auth nbname strong

После внесения изменений, перезапускаем службу:

systemctl restart 3proxy

SOCKS

Для прозрачного прохождения пакетов через прокси можно настроить SOCKS5. В конфигурационном файле добавляем:

* запускаем socks на порту 1080.

socks -p8083 -i192.168.1.23 -e111.111.111.111

* запускаем socks на порту 8083; внутренний интерфейс — 192.168.1.23, внешний — 111.111.111.111.

После перезапускаем сервис:

systemctl restart 3proxy

Настройка анонимности

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

1. Меняем порты, которые используются по умолчанию — 3128, 1080. Данные порты известны, как порты для прокси. Открываем конфигурационный файл 3proxy:

socks -p1088
proxy -n -p3111

* в данном примере мы укажем серверу работать на портах 3111 и 1088.

После перезапускаем сервис:

systemctl restart 3proxy

2. Необходимо, чтобы время на сервере совпадало с временем на компьютере.

На стороне сервера необходимо задать часовой пояс, например, если наш прокси находится в Германии, вводим:

timedatectl set-timezone Europe/Berlin

На стороне клиента либо меняем часовой пояс в системе, либо устанавливаем плагин для браузера, например, для Mozilla Firefox и меняем часовой пояс уже в нем.

3. Отключение icmp. По времени ответа на ping можно определить отдаленноесть клиента от прокси. Чтобы проверку нельзя было выполнить, отключаем на сервере icmp. Для этого создаем файл:

И применяем настройки:

sysctl -p /etc/sysctl.d/icmp.conf

4. Проверяем настройки.

Переходим к проверке анонимности прокси

Будет выполнена проверка анонимности нашего сервера.

Дополнительные настройки

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

Настройка портов и прокси-интерфейсов

При необходимости, можно настроить 3proxy на использование разных интерфейсов на разных портах:

proxy -n -a -p3128 -i192.168.0.23 -e222.222.222.222
proxy -n -a -p8080 -i192.168.1.23 -e111.111.111.111

* 3proxy будет слушать на порту 3128 с внутреннего интерфейса 192.168.0.23 и направлять пакеты в сеть Интернет через внешний интерфейс 222.222.222.222, а также, на порту 8080 для внутреннего и внешнего интерфейсов 192.168.1.23 и 111.111.111.111 соответственно.
* не забываем также настраивать брандмауэр (вначале инструкции мы открывали только 3128 порт).

systemctl restart 3proxy

Ограничение пропускной способности

При необходимости, можно ограничить скорость.

bandlimin 1000000 user1,user3
bandlimin 5000000 user2,user4

* в данном примере пользователям user1 и user3 установлено ограничение в 1000000 бит/сек (1 мбит); для user2 и user4 — 5 мбит/сек.

systemctl restart 3proxy

Ограничения доступа

Можно ограничить доступ и разрешить только для определенных портов, сетей и пользователей.

allow <userlist> <sourcelist> <targetlist> <targetportlist> <commandlist> <weekdays> <timeperiodslist>
deny <userlist> <sourcelist> <targetlist> <targetportlist> <commandlist> <weekdays> <timeperiodslist>

  • userlist — список пользователей через запятую.
  • sourcelist — сети клиентов через запятую.
  • targetlist — сети назначения через запятую.
  • targetportlist — порты назначения через запятую.
  • commandlist — команды, к которым применяется правило.
  • weekdays — в какие дни недели работает правило. 0 - 6 — Пн - Вс, 7 — тоже Вс.
  • timeperiodslist — время, когда работает правило. Указываются диапазоны.

* в данном примере пользователям user1 и user3 установлено ограничение в 1000000 бит/сек (1 мбит); для user2 и user4 — 5 мбит/сек.

Также, ограничить доступ можно по количеству одновременных соединений для каждой службы:

maxconn 700
proxy -n -a -p3128 -i192.168.0.23 -e222.222.222.222
proxy -n -a -p8080 -i192.168.1.23 -e111.111.111.111

* таким образом, мы установим 700 максимальных соединений для прокси на порту 3128 и 700 — для proxy на порту 8080.


Что такое прокси сервер и для чего он нужен рассказывать не надо. Немного интереснее вопрос "Для чего нужен свой прокси сервер?" Здесь можно остановиться подробнее. Например, у вас или вашего хорошего друга или подруги на работе злой админ заблокировал доступ к одноклассникам, вконтакте, майл агенту, аське и прочим радостям обычного интернет-пользователя. Один из вариантов решения этой проблемы и обхода ограничения - это использование прокси сервера. Но, при использовании прокси серверов, найденных на просторах интернета, есть шанс потерять все свои учетные записи, "подарив" их администратору прокси сервера. Чтобы этого не произошло, мы будем настраивать свой прокси сервер, ведь это совсем не сложно

Итак, будем считать что сервер у нас есть, приступим к установки прокси сервера. Для этого я выбрал 3proxy. Он прост для установки и настройки, и очень подходит для новичков.

Рассмотрим вариант установки 3proxy на сервер с ОС Debian.

apt-get install wget

Устанавливаем библиотеку gcc

apt-get install gcc

Обновляем пакеты необходимые для компилирования

apt-get install --reinstall build-essential

Загружаем последнюю версию 3proxy на сервер

tar -xvzf 3proxy-0.6.1tgz

Переходим в папку с распакованным 3proxy

cd 3proxy-0.6.1

make -f Makefile.Linux

Копируем исполняемый файл

cp src/3proxy /usr/local/3proxy

Копируем файл для автозапуска

cp ./scripts/rc.d/proxy.sh /etc/init.d/3proxy

Записываем информацию в файл автозагрузки

update-rc.d 3proxy defaults

Создаем новый конфигурационный файл

nano /usr/local/3proxy/3proxy.cfg

chown -R nobody:nogroup /usr/local/3proxy

Переходим в папку

cd /usr/local/3proxy

Настраиваем конфигурационный файл

nano /usr/local/3proxy/3proxy.cfg

У меня получилось так

Собственно, все Запускаем наш прокси сервер

/usr/local/3proxy/3proxy /usr/local/3proxy/3proxy.cfg

В настройках браузера выставляем соответствующие адреса прокси сервера, порт и логин и пароль в настройках соединения и проверяем работоспособность.

Если вас интересует настройка серверов, скорее всего вам будет интересно посмотреть цены на коммутационное оборудование Ubiquiti. Среди всего прочего хочу выделить девайсину nanostation m2. Среди аналогичных устройств ubiquiti nanostation m2 выгодно отличается сочетанию цена-качество!

Читайте также: