Установка и настройка прокси сервера 3proxy в Linux

Установка и настройка прокси сервера 3proxy в Linux

3proxy это легкий и довольно производительный кроссплатформенный прокси сервер, который можно развернуть как на Windows, так и в Linux. В этой статье мы покажем, как установить и настроить 3proxy на базе Linux. Инструкция применима для большинства современных дистрибутивов (Debian, Ubuntu, CentOS, RHEL, Rocky, Oracle Linux, и т.д.)

3proxy универсальный прокси сервером с поддержкой HTTP, HTTPS, SOCKS v4, SOCKS v4a, SOCKS v5, FTP, POP3, UDP и TCP портмаппинг (переадресация или порт-форвардинг), поддержкой ACL, управлением пропускной способности канала, возможностями авторизации по имени пользователя, IP и рядом других полезных опций.

Пакет установки 3proxy отсутствует почти во всех репозиториях Linux, поэтому проще скомпилировать его самостоятельно. Для этого нужно установить компилятор gcc.

В CentOS/RHEL/Oracle Linux/Rocky gcc можно установить с помощью пакетного менеджера yum (dnf):

# yum install gcc

В Debian/Ubuntu используйте команду:

# apt-get install gcc

Скачайте исходные файлы 3proxy с Github и распакуйте архив:

# wget https://github.com/z3APA3A/3proxy/archive/0.9.3.tar.gz
# tar -xvzf 0.9.3.tar.gz

Перейдите в каталог с 3Proxy и скомпилируйте программу:

# cd 3proxy-0.9.3
# make -f Makefile.Linux

Команду make install не запускайте.

Создайте нового пользователя, от имени которого будет работать 3proxy (без доступа к shell и без домашнего каталога):

# useradd -s /usr/sbin/nologin -U -M -r 3proxy

Получите UID и GID нового пользователя:

# id 3proxy

uid=986(3proxy) gid=984(3proxy) groups=984(3proxy)

Создаем каталог для конфигурационного файла 3proxy:

# mkdir /etc/3proxy

Создайте каталог для логов:

# mkdir -p /var/log/3proxy

Скопируйте исполняемый файл 3proxy в /usr/bin:

# sudo cp bin/3proxy /usr/bin/

Предоставьте права для учетной записи 3proxy:

# chown 3proxy:3proxy -R /etc/3proxy
# chown 3proxy:3proxy /usr/bin/3proxy
# chown 3proxy:3proxy /var/log/3proxy

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

# mcedit /etc/3proxy/3proxy.cfg

Добавьте в него следующие данные:

# Запуск сервера от пользователя 3proxy
setgid 984
 setuid 986
# Пропишите правильные DNS сервера (можно получить в /etc/resolv.conf)
nserver 8.8.8.8
nserver 8.8.4.4
# укажите режим запуска как deamon
daemon
# IP-адрес внешнего интерфейса:
#external 192.168.20.14
# IP-адрес адрес внутреннего интерфейса:
#internal 192.168.1.14
# запуск http proxy на порту 4555
proxy -p4555 -n -a
# socks proxy на порту 2333
socks -p2333
# путь к логам и формат лога
log /var/log/3proxy/3proxy.log D
logformat "- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T"
rotate 30
# Оставьте размер кэша для запросов DNS по умолчанию
nscache 65536
# Используйте стандартные таймауты
timeouts 1 5 30 60 180 1800 15 60
 # Включите авторизацию по логинам и паролям
auth cache strong
users "testproxy:CL:Q#x8!jx!-n$)re;V"
users "testproxy2:CR:$1$yourSalt$FZ1CZhbunc3enF.ujQCS.1"
# CL – пароль пользователя укаывается в открытом виде
# CR зашифрованный пароль (md5), можно получить с помощью команды openssl passwd -1 -salt yourSalt2
# можно хранить пользователей и пароли в отдельном файле, тогда укажите такую строку users $/etc/3proxy/.proxyauth

За основу вашего конфигурационного файла можно взять шаблон конфига из каталога с исходниками — /cfg/3proxy.cfg.sample

Создайте собственного демона 3proxy для управления им через systemd (подробнее про автозапуск служб и скриптов в Linux):

# touch /etc/systemd/system/3proxy.service
# chmod 664 /etc/systemd/system/3proxy.service
# mcedit /etc/systemd/system/3proxy.service

Добавьте в файл 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 3proxy`
RemainAfterExit=yes
Restart=on-failure
[Install]
WantedBy=multi-user.target

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

# systemctl daemon-reload

Добавьте сервис в автозагрузку и запустите его:

# systemctl enable 3proxy
# systemctl start 3proxy
# systemctl status 3proxy

установка службы прокси сервера 3proxy в linux

Добавьте правило в файервол, которое открывает для подключений к прокси порт TCP 4555. Если у вас используется firewalld, добавьте разрешающее правило так:

# firewall-cmd --zone=public --add-port=4555/tcp
# firewall-cmd --reload

Если ваш Linux сервер расположен у внешнего провайдера (AWS, Azure, Oracle Cloud, и т.д.), не забудьте настроить в них соответствующую Security Group для порта 4555.

На этом настройка 3proxy завершена. Задайте IP адрес (имя) хоста с 3proxy и порт в настройках браузера. На компьютеры Windows можно распространить настройки прокси через GPO.

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

Linux
Установка и настройка прокси сервера 3proxy в Linux