Настройка 3proxy для linux

Установка 3proxy

url image

3proxy — один из самых легко настраиваемых прокси-серверов, к тому же он открытый и кроссплатформенный. В статье рассмотрим установку 3proxy на ОС AlmaLinux 9 и Debian 11 (актуальные на момент написания статьи), а затем расскажем, как можно развернуть 3proxy в Docker.

Установка 3proxy с поддержкой http(s) и socks5-proxy

Ни в коем случае не устанавливайте сервер без авторизации, т.к. этим незамедлительно воспользуются злоумышленники — создадут большой трафик и организуют рассылку спама через ваш сервер.

Установка

Так как в репозиториях 3proxy как правило отсутствует, мы будем устанавливать его из исходников. Для установки потребуется установить некоторые пакеты. Для AlmaLinux:

# yum -y install gcc wget tar
# apt install -y build-essential wget tar

Далее скачиваем файлы 3proxy (ссылка на актуальную версию 3proxy со временем может измениться) и распаковываем архив:

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

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

# mkdir /etc/3proxy # mkdir -p /var/log/3proxy # cp bin/3proxy /usr/bin/
# useradd -s /usr/sbin/nologin -U -M -r proxyuser

И даем нашему пользователю proxyuser права на директории /etc/3proxy , /var/log/3proxy и /usr/bin/3proxy :

# chown -R proxyuser:proxyuser /etc/3proxy # chown -R proxyuser:proxyuser /var/log/3proxy # chown -R proxyuser:proxyuser /usr/bin/3proxy
# chmod 600 /etc/3proxy/3proxy.cfg

Дальше необходимо правильно заполнить созданный конфигурационный файл. Для этого нам понадобится узнать uid и gid нашего пользователя proxyuser:

# id proxyuser uid=991(proxyuser) gid=991(proxyuser) groups=991(proxyuser)

Запоминаем uid и gid пользователя, вставляем текст из примера файла конфигурации с помощью удобного для вас текстового редактора и сохраняем.

Пример файла конфигурации

# Настройка запуска сервера от пользователя proxyuser # (вставляем 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 daemon # Указываем IP-адрес внешнего интерфейса сервера external 111.111.111.111 # либо игнорируем строку, если IP один # Указываем IP-адрес внутреннего интерфейса сервера internal 192.168.0.1 # либо игнорируем, чтобы прокси слушал все IP # Настраиваем http proxy на стандартном порту 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
# 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
# systemctl start 3proxy # systemctl enable 3proxy

Исправление распространённых проблем

Проблема 1

Из-за кеширования доменных имён есть вероятность, что ваш новый домен для вас будет недоступен. Решение: необходимо дождаться обновления записей DNS либо прописать в файл hosts IP-адрес вашего сервера и новый домен.

Читайте также:  Настройка времени linux centos

Проблема 2

proxy -n -p7834 # на http proxy слушать порт 7834 socks -p7835 # на socks слушать порт 7835

Но их тоже могут найти. Поэтому можно в фаерволе разрешить доступ с определённых адресов, а остальным — запретить. Довольно негибкое (так как у вас может и не быть статического IP), но железное решение.

Проблема 3

Если вы ведёте логи, в которых отражаются все соединения, со временем они станут занимать всё больше места. В конечном итоге логи могут занять всё место на диске. Решение: не вести логи или настроить их ротацию.
Лучше предусмотреть всё заранее.

Упрощенный конфиг анонимного http(s) proxy сервера на порту 3128

users proxyuser:CL:password daemon log /var/log/3proxy/3proxy.log D rotate 30 auth strong proxy -n -a setgid 65534 setuid 65534

Также нужно создать директорию под логи и выставить права (мы запускаем сервер с минимальными правами nobody в системе используя директивы setgid/setud):

mkdir /var/log/3proxy ; chown nobody /var/log/3proxy

Установка 3proxy в Docker

Рассмотрим вариант установки 3proxy в Docker. Для начала потребуется установить некоторые пакеты (а для свежеустановленных ОС Debian и Ubuntu, возможно, ещё потребуется обновить индекс пакетов apt командой # apt update ). Для AlmaLinux и CentOS:

# yum install docker docker-compose
# apt install docker docker.io docker-compose

По умолчанию 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 достаточно минимальной конфигурации:

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
# docker-compose -f /etc/dockerapp/3proxy/docker-compose.yml up -d
Creating network "3proxy_default" with the default driver Creating 3proxy . done
48cc0cd140cd 3proxy/3proxy:latest "/bin/3proxy /etc/3p…" 5 minutes ago Up 5 minutes 0.0.0.0:8080->3129/tcp 3proxy

Источник

Читайте также:  Launch chrome in linux

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

date

12.08.2022

user

itpro

directory

CentOS, Linux, Ubuntu

comments

комментария 2

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):

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

Скачайте исходные файлы 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

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

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

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

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

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

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

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

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

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

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

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

# Запуск сервера от пользователя 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

Читайте также:  Linux editor for python

Создайте собственного демона 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 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-прокси, построение цепочек соединений, управление доступом, ограничение ширины потребляемого канала, ограничение трафика по времени или по сайтам и т.д.).

Предыдущая статьяПредыдущая статья Следующая статья Следующая статья

Источник

Оцените статью
Adblock
detector