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