Способы оплаты Abuse

Установка 3proxy

05.06.2023, 23:17

3proxy - бесплатный и открытый прокси-сервер, который используется для различных целей, таких как фильтрация трафика, кэширование и блокирование конкретных веб-сайтов. Он поддерживает различные протоколы, такие как SOCKS v4/v4a/v5, HTTP, HTTPS, FTP, POP3, SMTP, и поддерживает методы аутентификации, такие как SOCKS5 имя пользователя/пароль, NTLM, LDAP, Kerberos и SSO.

Сервер сильно настраиваем, обеспечивая детальное управление использованием пропускной способности и параметрами подключения. 3proxy может быть установлен на платформах Windows, Linux и macOS. Это легкий и простой в использовании прокси-сервер, подходящий для небольших и средних сетей. Возможна аренда vps прокси.

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

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

Для начала необходимо установить несколько пакетов и зависимостей.

Для AlmaLinux выполняется команда:

yum -y install gcc wget tar

а для Debian:

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.

Файл конфигурации

Ниже приведем образец конфигурационного файла:

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

Дальше создаем файл-инициализации для 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 в firewalld или iptables.

Настройка закончена. На порту 3128 теперь у вас работает http-proxy, на порту 1080 — socks-proxy.

Решение некоторых проблем

Первая проблема - есть вероятность, что после регистрации нового домена он не будет доступен вам из-за кеширования доменных имён. Чтобы решить эту проблему, необходимо дождаться обновления записей DNS или добавить IP-адрес вашего сервера и новый домен в файл hosts. Это позволит обращаться к новому домену, пока записи в DNS не обновятся.

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

Например, на http proxy можно установить порт 7834, а на Socks - 7835. Однако, такие порты также могут быть обнаружены, поэтому в firewall можно настроить доступ к серверу только с определенных адресов, в то время как остальным будет запрещен доступ. Это решение является достаточно надежным, хотя не слишком гибким, поскольку вам может не быть доступен статический IP-адрес.

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

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

Упрощенный конфиг анонимного 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.

Для начала потребуется установить некоторые пакеты (а для недавно установленных OS Debian и Ubuntu, возможно, ещё потребуется обновить индекс пакетов apt командой # apt update).

Для AlmaLinux и CentOS:

# yum install docker docker-compose

для Ubuntu и Debian:

# 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

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

Creating network "3proxy_default" with the default driver
Creating 3proxy ... done

Проверяем:

# docker ps

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

48cc0cd140cd   3proxy/3proxy:latest   "/bin/3proxy /etc/3p…"   5