RuCore.NET

Как сделать свой прокси сервер на виртуальном хостинге?





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

Proxy позволяет перенаправлять трафик с вашего компьютера на сервер. Например, вы хотите открыть некий сайт через прокси. Тогда ваш компьютер обращается к прокси, прокси подключается к сайту, получает его содержимое и перенаправляет его на ваш компьютер. Таким образом, сайт видит внешний IP прокси-сервера, а не вашего компьютера, а если сайт заблокирован, например, Роскомнадзором или президентом Украины, то можно сделать прокси-сервер в другой стране, в которой нужные вам ресурсы не заблокированы, и тем самым получить к ним доступ в обход блокировок. Главное, чтобы из вашей страны не был заблокирован сам прокси-сервер.



Специально платить за виртуальный хостинг ради прокси не имеет смысла — тогда уж проще арендовать самый дешёвый VPS (виртуальный частный сервер) и настроить на нём VPN — это будет более стабильное и более безопасное соединение, чем прокси на виртуальном хостинге. Тем не менее если вы веб-мастер и всё равно каждый месяц платите за хостинг, то, если есть потребность, можно заодно настроить и прокси.

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

Благодаря хостинговым услугам, сайт постоянно присутствует в интернете. При этом имеется возможность выбрать:

  • хостинг виртуальный. Он относится к наиболее дешевой услуге и рекомендуется новичкам;
  • VPS сервер. Он же виртуальный сервер. Эта услуга как бы промежуточная после обычного хостинга и до аренды сервера. На такой сервер переводятся проекты с большой посещаемостью;

 

Нам понадобиться доступ в консоль (SSH), который в настоящее время предоставляется на многих современных хостингах — иногда доступ в консоль доступен по умолчанию, иногда предоставляется по запросу. Иногда это полноценный сервер SSH, иногда это эмулятор SSH с веб интерфейсом — нам подойдёт любой вариант, большой разницы это не играет (хотя с полноценным SSH будет более стабильная связь).

 

Настройка хостинга под прокси

1. Проверка и установка ncat

В качестве прокси сервера мы будем использовать программу ncat. Выбор сделан в пользую этой программы по следующим причинам:

На многих серверах она доступна по умолчанию

В случае отсутствия легко установить (имеются официальные бинарные файлы для популярных дистрибутивов Linux, то есть не нужно компилировать самому)

Эта программа хорошо мне знакома (кстати, рекомендую соответствующую статью «Как пользоваться netcat (nc), ncat»)

Итак, начнём с проверки, имеется ли на хостинге программа ncat. Для этого откройте консоль и выполните там:

ncat —version

Если будет выведено что-то вроде:

Ncat: Version 6.47 ( http://nmap.org/ncat )

Значит программа установлена по умолчанию и можно сразу переходить к следующему пункту. Если будет сообщение, что программа не найдена, значит нужно начать с установки.

Обратите внимание: для данной инструкции НЕ подходят аналоги вроде netcat и nc.

Если программа отсутствует, то мы сможем её установить даже если у нас нет root прав! Дело в том, что программа является полностью портативной, поэтому достаточно скачать установочный пакет и распаковать его. После этого программу можно запускать обращаясь к файлу по абсолютному пути или поместить его в директорию ~/bin, чтобы запускать по имени файла. Для прослушивания портов начиная с номера 1024 и более высоких, прав суперпользователя также не требуется. То есть для всех операций нам хватит наших обычных ограниченных прав клиента Shared хостинга.

Нам нужно начать с того, чтобы определить, на каком дистрибутиве Linux работает хостинг, чтобы знать, какой пакет использовать.

Если хостинг работает на Red Hat Enterprise Linux (RHEL), Fedora, CentOS, Suse, Mandrake, Yellow Dog и их производных, то будем использовать официальный пакет RPM.

Если хостинг работает на Debian, Ubuntu и их производных то… всё равно будет использовать пакет RPM, так как пакет .deb отсутствует. Но нам нужжно будет сделать дополнительное действие.

Узнать какой используется дистрибутив Linux можно командой:

cat /etc/issue

Пример вывода:

CentOS release 6.5 (Final)

Kernel \r on an \m

Ещё один надёжный вариант — это проверить, какая из программ присутствует в системе: yum или apt. Это можно сделать, например, с помощью команды which:

which yum

Если выведено:

/usr/bin/yum

значит в системе присутствует yum, которая является менеджером пакетов RPM.

А если команда отсутствует как в следующем случае:

which apt

то будет показано примерно следующее:

/usr/bin/which: no apt in (/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/host900000/bin)

Это означает, что apt отсутствует в системе, значит это не Debian или производный дистрибутив.

Создайте папку bin и перейдите в неё:

mkdir bin

cd bin/

Теперь скачиваем установочный пакет Ncat:

wget -O ncat.rpm `curl -s ‘https://nmap.org/download.html’ | grep -E -o ‘https://nmap.org/dist/ncat[0-9.-]+.x86_64.rpm’ | head -n 1`

Если у вас Red Hat Enterprise Linux (RHEL), Fedora, CentOS, Suse и их производные, то просто распакуйте скаченный файл:

rpm2cpio ncat.rpm | cpio -idv

Перемещаем исполнимый файл и делаем очистку:

mv usr/bin/ncat ncat

rm -rf ncat.rpm usr/

Если у вас Debian, Ubuntu и их производны, то вам также достаточно распаковать скаченный файл. Проблема в том, что по умолчанию пакет rpm2cpio может быть не установлен и поэтому нужно выбрать другой вариант. Файлы .rpm можно распаковать различными способами, но, скорее всего, вам придётся это сделать на своём домашнем компьютере и выгрузите файл (нужен всего лишь один файл из распакованного пакета: ./usr/bin/ncat) на хостинг. На своём компьютере с Linux (Debian, Ubuntu, Kali Linux, Linux Mint) вы можете сделать распаковку установив пакет rpm2cpio:

sudo apt install rpm2cpio

А затем:

rpm2cpio ncat.rpm | cpio -idv

Также распаковать можно используя архиватор 7z или программу alien.

 

 

 

2. Запуск прокси

Если программа Ncat установлена у вашего хостера и вы пропустили первый этап, то создайте папку bin и перейдите в неё:

mkdir bin

cd bin/

Сделайте тестовый запуск прокси и проверьте его работоспособность:

ncat -l ПОРТ —proxy-type http

В предыдущей команде замените ПОРТ на желаемое значение. Дополнительно используйте следующие опции чтобы посторонние лица не могли воспользоваться вашим прокси:

—proxy-auth <пользователь>:<пароль>

—allow          Разрешить подключаться к Ncat только заданному хосту

—allowfile       Файл со списком хостов, разрешённым для подключения к Ncat

—deny          Запретить указанным хостам подключаться к Ncat

—denyfile        Файл со списком хостов, кому запрещено подключаться к Ncat

Не нужно надеяться, что никто не наткнётся на ваш прокси — обязательно выберите способ закрыть доступ от посторонних. Если у вас постоянный IP или ваш IP всегда в определённом диапазоне, то ограничьте доступ этим диапазоном. Либо установите сложные логин и пароль.

Когда вы составите команду запуска ncat, настроите ограничения от посторонних и всё проверите, то запустите её следующим образом:

nohup ВАША_КОМАНДА &

К примеру, моя команда запуска следующая:

ncat —allow IP -l ПОРТ —proxy-type http

Тогда мне нужно запустить её так:

nohup ncat —allow IP -l ПОРТ —proxy-type http &

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

Если вдруг понадобиться остановить запущенную таким образом команду (а CTRL+c в данном случае не поможет), то это можно сделать узнав её PID, с помощью, например:

ps -A -f

Или так:

test=`ps -A -f`; echo "$test" | grep -E 'ncat'

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

kill PID

Добавление в Cron задания для проверки работы прокси и запуск прокси в случае остановки

В полноценном SSH запущенный показанным способом процесс должно оставаться постоянно работающим. Но, как я уже сказал, у моего хостера в качестве SSH используется какой-то эмулятор SSH с веб интерфейсом, поэтому в моём случае после примерно 20 минут процесс ncat завершает работу.

Эту ситуацию можно исправить добавив в Cron соответствующее задание.

Для этого в текущей папке ~/bin создайте файл checkProxy.sh и скопируйте в него примерно следующее:

#!/bin/bash

test=`ps -A -f`;

if [[ -z «`echo $test | grep -E ‘ncat’`» ]]; then

    nohup ncat —allow IP -l PORT —proxy-type http &

fi

Обратите внимание на часть ncat —allow IP -l PORT —proxy-type http — вам нужно отредактировать её в соответствии с вашей командой запуска прокси.

Данный скрипт проверяет, запущен ли уже процесс ncat, если он не запущен, то делается запуск; если запущен, то ничего не делается.

Добавьте разрешение на выполнение:

chmod +x checkProxy.sh

Теперь нам нужно узнать абсолютный путь до этого файла:

readlink -e checkProxy.sh

Пример вывода:

/home/host000000/bin/checkProxy.sh

Теперь в панели управления хостингом переходим во вкладку Cron и добавляем новую запись:

 

Запись должна быть следующего вида:

bash /путь/до/файла/checkProxy.sh >/dev/null 2>&1

К примеру в моём случае:

bash /home/host000000/bin/checkProxy.sh >/dev/null 2>&1

Вместо вывода 🙂

Настроенный таким образом прокси даже в случае непредвиденного завершения работы будет автоматически перезапущен не более чем в течение минуты.

Напомню, что Ncat поддерживает в качестве прокси сервера только HTTP прокси. Вы можете запускать команду ncat без nohup и & (то есть без отделения её от терминала), но зато с опциями -vvv для увеличения вербальности. Таким образом вы сможете анализировать HTTP запросы. Кстати, для этого ненужен хостинг или сервер — это можно делать и на локальном компьютере, в одной консоли запускаем прокси:

ncat -vvv -l 34567 —proxy-type http

и в другой консоли запрос через этот прокси:

curl -s —proxy localhost:34567 ‘https://hackware.ru’

 

Источник: https://hackware.ru/



Поделись статьей с друзьями


56 просмотров



Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: