Как поднять свой socks прокси

Posted by

Задача: в последнее время мой провайдер (а я уверен что это именно он) начал блокировать доступ к такому ресурсу, как lostfilm.tvно такое положение дел меня не устраивает, во общем принял решение на одной из подконтрольных удаленных машин поднять socks прокси на базе 3proxy преимущественно на .5 Server amd64. Позже выяснил, что ресурс выше успешно откликается и без использования этой заметки если вместо http указать https.

Первым делом обновляю систему до актуального состояния:

ekzorchik@srv-serv:~$ sudo apt-get update && sudo apt-get upgrade -y

Теперь что же есть такое 3proxy, это многофункциональный прокси-сервер с поддержкой https & ftp, socks (4 и 5), более подробную информацию что еще и как умеет эта утилита прошу в google. А сейчас перехожу к практической части:

На момент написания заметки версия рассматриваемой утилиты 0.7.1.1

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

ekzorchik@srv-serv:~$ sudo apt-get install build-essential libevent-dev libssl-dev -y

Теперь скачиваю последнюю на момент написания данной заметки версию:

ekzorchik@srv-serv:~$ sudo mkdir -p /opt/proxy

ekzorchik@srv-serv:~$ cd /opt/proxy

ekzorchik@srv-serv:/opt/proxy$ sudo wget http://3proxy.ru/0.7.1.1/3proxy-0.7.1.1.tgz

Распаковываю скачанный архив:

ekzorchik@srv-serv:/opt/proxy$ sudo tar zxvf 3proxy-0.7.1.1.tgz

Перехожу в полученный после распаковки каталог для сборки программы:

ekzorchik@srv-serv:/opt/proxy$ cd 3proxy/

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

ekzorchik@srv-serv:/opt/proxy/3proxy$ sudo nano +29 src/proxy.h

#define ANONYMOUS 1

Сохраняю полученные изменения.

Теперь собираю программу:

ekzorchik@srv-serv:/opt/proxy/3proxy$ sudo make -f Makefile.Linux

make[2]: Leaving directory `/opt/proxy/3proxy/src/plugins/TransparentPlugin’

make[1]: Leaving directory `/opt/proxy/3proxy/src’

отлично ошибок нет.

Теперь устанавливаю в систему:

ekzorchik@srv-serv:/opt/proxy/3proxy$ sudo make -f Makefile.Linux install

/usr/bin/install -m 755 -d /usr/local/bin

/usr/bin/install -m 755 -s src/3proxy src/countersutil src/dighosts src/ftppr src/mycrypt src/pop3p src/proxy src/socks src/tcppm src/udppm /usr/local/bin

/usr/bin/install -m 755 -d /usr/local/etc/3proxy

for file in passwd counters bandlimiters; \

do \

touch /usr/local/etc/3proxy/$file; chmod 0600 /usr/local/etc/3proxy/$file; \

done;

/usr/bin/install -m 755 -d /usr/local/share/man/man3

/usr/bin/install -m 755 -d /usr/local/share/man/man8

/usr/bin/install -m 644 man/*.3 /usr/local/share/man/man3

/usr/bin/install -m 644 man/*.8 /usr/local/share/man/man8

ekzorchik@srv-serv:/opt/proxy/3proxy$ cd ~/

Отобразить местонахождение утилиты 3proxy в системе:

ekzorchik@srv-serv:~$ whereis 3proxy

3proxy: /usr/local/bin/3proxy /usr/local/etc/3proxy

Теперь понадобится создать специальную директорию под конфигурационный файл и файлы логов:

ekzorchik@srv-serv:~$ mkdir -p ~/proxy/logs

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

ekzorchik@srv-serv:~$ nano ~/proxy/3proxy.conf

# запуск в режиме демона

daemon

pidfile /home/ekzorchik/proxy/3proxy.pid

# указываем IP адреса шлюза (посмотреть который можно из вывода: cat /etc/resolv.conf)

nserver 192.168.1.9

nscache 65536

timeouts 1 5 30 60 180 1800 16 60

log /home/ekzorchik/proxy/logs/3proxy.log D

logformat "- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T"

rotate 30

flush

# не использовать авторизацию на socks прокси сервере

auth none

# указываем порт на котором будет работать socks прокси сервер

socks -p8888

# указываем ftp прокси на любом порту выше 1024 дабы не задействовать порт используемый привилегированными службами, по такому же принципу и с web

# ftppr -p3127

# proxy -p3128

# Если нужно то поднимаем Web-интерфейс по управлению службой 3proxy в системе, но учтите — что на входе нет никакой защиты хотя бы в виде связки логин и пароль.

admin -p8081

Сохраняю внесенные изменения.

А теперь запускаю процесс с созданным выше конфигурационным файлом:

ekzorchik@srv-serv:~$ 3proxy ~/proxy/3proxy.conf

После проверяю, что процесс работает:

ekzorchik@srv-serv:~$ ps ax | grep proxy | head -n 1

16794 ? Ssl 0:00 3proxy /home/ekzorchik/proxy/3proxy.conf

Теперь в настройках браузера прописываю настройки socks сервера, где IP socks сервера указывающий на данную систему где развернули выше приложение socks и указываем порт 8888. После чего происходит отображение результатов как будто Вы ходите без socks прокси сервера, убедиться в этом помогут логи, смотрите:

ekzorchik@srv-serv:~$ tail -f proxy/logs/3proxy.log.2015.01.26

1422289473.655 SOCK4.8888 00000 — 192.168.1.53:52257 93.158.134.119:80 9492 1944 0 CONNECT_93.158.134.119:80

1422289508.674 SOCK4.8888 00000 ekzorchik 192.168.1.53:52263 173.194.32.183:443 2100 38721 0 CONNECT_173.194.32.183:443

1422289538.879 SOCK4.8888 00000 — 192.168.1.53:52284 93.158.134.119:80 1770 486 0 CONNECT_93.158.134.119:80

Когда нужно отменить использование прокси, то выключаем сервис на подконтрольном сервере:

ekzorchik@srv-serv:~$ sudo killall 3proxy

и браузере снимаем возможность использования socks прокси.

IE – Сервис — Свойства обозревателя — Подключения — Настройка сети — снимаем галочку:

  • Использовать прокси-сервер для локальных подключений

Теперь задействовав функционал данной заметки я получаю обход ограничений при посещении ресурсов всемирной паутины. Что мне и требовалось в последствии я буду Вас знакомить со многими интересными вещами посредством практичного использования в виде пошаговых инструкций.

Если же нужно ограничить использование socks прокси, то можно добавить в конфигурационный файл специализированного пользователя и назначить ему сложный пароль, чтобы никто не смог через Ваши системы лазать по всемирной паутине без Вашего ведома, делается это так, останавливаем все процессы 3proxy в системе:

ekzorchik@srv-serv:~$ sudo killall 3proxy

ekzorchik@srv-serv:~$ nano ~/proxy/3proxy.conf

users ekzorchik:CL:712mbddr@

auth strong

Сохраняем внесенные изменения.

Запускаем процесс:

ekzorchik@srv-serv:~$ 3proxy ~/proxy/3proxy.conf

Чтобы проверить, Вам понадобиться приложение имеющие возможность подключаться через socks с использование аутентификационных данных, к примеру Yandexдиск:

Ниже это пример, здесь в место 192.168.1.53 нужно указывать IP&DNS подконтрольного сервере где развертываете утилиту 3proxy

Настройки — вкладка «Прокси» — Ручные настройки прокси-сервера

Тип: SOCKS5

Сервер: 192.168.1.53

Порт: 8888

Пароль на сервер: отмечаем галочкой:

Логин: ekzorchik

Пароль: 712mbddr@

Указываю настройки прокси при использовании Yandex-диск

На заметку: если там где вы настраиваете используется корпоративный фаервол, к примеру Kerio, то потребуется настроить соответствующее правило которое при обращении на внешний IP адрес будет перенаправлять на внутренний с указанием порта на котором работает службу 3proxy.

Это все конечно но же хорошо, но вот как заставить работать браузеры IE,Google Chrome с использованием авторизации на socks это загадка и посредством внутренних средств самой системы это невозможно придется что-то до установить. Показывать здесь, ну даже и не знаю, а на до ли, возможно прочитав в интернете соответствующие материалы Вы расширите свой кругозор в использовании специализированных инструментов или лучше почитайте мой блог воспользовавшись поиском по тегу «прокси».

Что еще остается — это попрощаться и до новых встреч, с уважением автор блога — ekzorchik.

Leave a Reply

Ваш e-mail не будет опубликован. Обязательные поля помечены *

1 × 5 =