Содержание

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

https://www.3proxy.ru

3proxy это маленький многоплатформный набор прокси-серверов (под Linux/Unix и Windows, включая 64-битные версии).

Он включает в себя HTTP прокси с поддержкой HTTPS и FTP (proxy/proxy.exe), SOCKSv4/SOCKSv4.5/SOCKSv5 прокси (socks/socks.exe), POP3 прокси (pop3p/pop3p.exe), SMTP прокси (smtpp/smtpp.exe), AIM/ICQ прокси (icqpr/icqpr.exe), MSN messenger / Live messenger proxy (msnpr/msnpr.exe), FTP proxy, кэширующий DNS прокси, TCP и UDP портмапперы (tcppm, udppm) а так же комбинированный прокси-сервер с поддержкой дополнительных возможностей, таких как управление доступом, ограничение ширины потребляемого канала, ограничение трафика на день, неделю и месяц, перенаправление соединений, построение цепочек соединений (proxy chaining), ротацию лог-файлов, ведение журналов через ODBC и syslog и т.д.

Установка из исходников

sudo apt-get install -y build-essential
wget --no-check-certificate https://github.com/z3APA3A/3proxy/archive/0.8.12.tar.gz
tar xzf 0.8.12.tar.gz
cd ~/3proxy-0.8.12
sudo make -f Makefile.Linux

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

sudo cp 3proxy /usr/bin/

Настройка

Создаем отдельного пользователя и узнаем его UID/GID:

sudo adduser --system --no-create-home --disabled-login --group 3proxy
id 3proxy

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

sudo mkdir /etc/3proxy
sudo touch /etc/3proxy/3proxy.cfg
sudo touch /etc/3proxy/.proxyauth
sudo chown 3proxy:3proxy -R /etc/3proxy
sudo chown 3proxy:3proxy /usr/bin/3proxy
sudo chmod 444 /etc/3proxy/3proxy.cfg
sudo chmod 400 /etc/3proxy/.proxyauth
sudo mkdir /var/log/3proxy
sudo chown 3proxy:3proxy /var/log/3proxy

Содержимое файла /etc/3proxy/3proxy.cfg:

# UID и GID нашего пользователя 3proxy
setgid 112
setuid 114

# DNS-сервера
nserver 8.8.8.8
nserver 8.8.4.4

# Размер кэша для запросов DNS по умолчанию
nscache 65536

# Таймауты по умолчанию
timeouts 1 5 30 60 180 1800 15 60

# Внешний адрес IP через который сервер будет ходить во внешний мир
# Если он один - настройку можно не делать
#external <YOURSERVERIP>

# Внутренний IP, который 3proxy должен прослушивать.
# Если он один или нужно прослушивать на всех IP - настройку можно не делать
#internal <YOURSERVERIP>

# Файл с пользователями и паролями для авторизации пользователей
users $/etc/3proxy/.proxyauth

# Режим запуска как daemon
daemon

# Путь к папке с логам и формат лога
log /var/log/3proxy/3proxy.log D
logformat "- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T"

# Сжимать логи с помощью gzip
archiver gz /usr/bin/gzip %F

# Время хранения логов
rotate 7

# Включить строгую авторизацию. Для отключения авторизации измените на 'auth none'
# Кэширование авторизации делает жизнь легче
auth strong cache
authcache user 60

# Можно разрешить/запретить подключение с определенных IP или по портам
deny * * 127.0.0.1,192.168.1.1
#allow * * * 80-88,8080-8088 HTTP
#allow * * * 443,8443 HTTPS
#allow * * * 1-65535 HTTP
#allow * * * 1-65535 HTTPS

# SOCKS
auth strong cache
#auth none
flush
socks -p1080

# HTTP/HTTPS Proxy
# Анонимный (-a) HTTP-proxy на порту (-p) 3128 c отключенной NTLM-авторизацией (-n)
proxy -n -p3128 -a

Содержимое файла /etc/3proxy/.proxyauth

## Add users in below formats:
##  user:CL:password
##  user:CR:encrypted_password
users test1l:CL:YouSecretPassword
users "test2:CR:$1$Ane7Q3dX$ulgxFo2Ytzsf9/YtDt1Eq."

CL - пароль открытым текстом

CR - зашифрованный пароль. Так же строка должна быть заключена в кавычки

Скрипт для добавления новых учеток в файл:

#!/bin/sh
user=$1
pass=$2
#hash="$(echo -n "$pass" | md5sum | cut -d' ' -f1)"
hash=`mkpasswd --method=md5 $pass`
echo "users \"$user:CR:$hash\"" >> /etc/3proxy/.proxyauth

Формат запуска:

./adduser UserName UserPassword

Скрипт запуска 3proxy

touch /etc/init.d/3proxy
sudo chmod +x /etc/init.d/3proxy

Сам скрипт:

#!/bin/sh
#
### BEGIN INIT INFO
# Provides: 3Proxy
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Initialize 3proxy server
# Description: starts 3proxy
### END INIT INFO

case "$1" in
 start)
 echo Starting 3Proxy

 /usr/bin/3proxy /etc/3proxy/3proxy.cfg
 ;;

 stop)
 echo Stopping 3Proxy
 /usr/bin/killall 3proxy
 ;;

 restart|reload)
 echo Reloading 3Proxy
 /usr/bin/killall -s USR1 3proxy
 ;;
 *)
 echo Usage: \$0 "{start|stop|restart}"
 exit 1
esac
exit 0

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

sudo update-rc.d 3proxy defaults

Запускаем прокси-сервер:

sudo /etc/init.d/3proxy start