Способи оплати 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.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.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.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

Отримаємо приблизно таку відповідь:

Створення мережі"3proxy_default" із драйвером за замовчуванням
Створення 3proxy ... done

Перевіряємо:

# docker ps

Отримаємо відповідь, де буде вказано ID контейнера, образ, статус, порти, що використовуються, та ім'я:

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