Как сделать файл прокси

Обновлено: 05.07.2024

Этичный хакинг и тестирование на проникновение, информационная безопасность

О том, как раздобыть большое количество рабочих прокси я писал в предыдущей статье — в том числе там показано, как собрать список в удобном формате, который можно импортировать в программы, использующие прокси.

Но бывает нужен не список с ненадёжно работающими прокси, а всего лишь нужен один дополнительный IP адрес, всегда стабильно доступный и стабильно работающий.

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

Тем не менее если вы веб-мастер и всё равно каждый месяц платите за хостинг, то, если есть потребность, можно заодно настроить и прокси.

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

Я покажу на примере своего хостера — там доступен эмулятор SSH с веб интерфейсом. В вашем случае интерфейс может быть другим, путь до домашней папки пользователя могут быть другим, но в целом суть процесса везде одинаковая.

Мы рассмотрим следующие вопросы:

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

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

Итак, начнём с проверки, имеется ли на хостинге программа 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 можно командой:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

Заключение

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

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

Связанные статьи:

факультете информационной безопасности от GeekBrains? Комплексная годовая программа практического обучения с охватом всех основных тем, а также с дополнительными курсами в подарок. По итогам обучения выдаётся свидетельство установленного образца и сертификат. По этой ссылке специальная скидка на любые факультеты и курсы!

Привязка аккаунта к прокси
Аккаунт-(логин:пароль)|прокси-(логин:пароль@IP:port)

Всё вместе пишется

Все эти данные вы получите у продавца прокси останется лишь сделать формат в тхт файле как я описал с выше .

после чего с настроек шаблона Выбор файла с прокси которую за ранее уже создали

Karos-lung

Работа с прокси ведётся так`

Создание TXT файла .

Дописать туда свои прокси .

в таком формате логин : пароль@ IP: port если сокс то socks://логин : пароль@ IP: port
Всё вместе пишется

Все эти данные вы получите у продавца прокси останется лишь сделать формат в тхт файле как я описал с выше .

после чего с настроек шаблона Выбор файла с прокси которую за ранее уже создали

Smm-profi

В текстовом документе, логин пароль вводится тогда когда у Вас индивидуальные прокси если нет то просто айпи то есть к примеру 192.850.10.40

Karos-lung

В текстовом документе, логин пароль вводится тогда когда у Вас индивидуальные прокси если нет то просто айпи то есть к примеру 192.850.10.40

Smm-profi

ZennoBox v5.7.1.0 by ZennoLab.com.jpg" data-xf-init="lightbox" data-lb-single-image="1" data-lb-container-zoom="1" data-lb-trigger=".js-lbImage-attachment35" data-lb-id="attachment35">

2015-01-27 22-40-50 ZennoBox v5.7.1.0 by ZennoLab.com.jpg

Smm-profi


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


Ну а тут какие комментарии будут? Поставил функцию по прокси как было раньше "Если возможно". В итоге пишет что прокси не отвечает, потом удалились все аккаунты и прокси. Заново ввел аккаунты и прокси, но шаблон все равно не запускается. Сделали бы скриншот, как должны быть правильно прописаны прокси.

WPAD или автоматическая настройка параметров прокси

Если автоматическая настройка сетевых параметров сегодня стала "нормой жизни" даже в небольших сетях, то автоматическое получение настроек прокси-сервера по-прежнему вызывает некоторые затруднения. Для этих целей существует протокол автоматической настройки прокси - WPAD, который позволяет достаточно гибко управлять трафиком и избежать необходимости настраивать браузеры и иное сетевое ПО вручную.

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

Автоматическая настройка системы на работу с прокси-сервером производится специальным набором инструкций на JavaScript, который называется PAC-файл (Proxy Auto Configuration), для нахождения его расположения в локальной сети используется протокол WPAD (Web Proxy Auto-Discovery Protocol).

Рассмотрим следующую схему:

wpad-pac-001.jpg

Получив запрос от пользователя браузер пытается найти расположение PAC-скрипта используя различные сетевые механизмы. В первую очередь отправляется DHCP-запрос, ответ на который должен содержать URL PAC-файла в специальном поле ответа, для этого используется опция 252 протокола DHCP.

Если в ответе DHCP-сервера искомый адрес не найден, то посылается DNS-запрос для хоста wpad в текущем домене. Некоторые браузеры, например, Firefox, не используют DHCP-запросы, а сразу обращаются к DNS. С механизмом поиска службы WPAD через DNS связана одна серьезная уязвимость. Если в текущем домене хост с именем wpad не найден, то поиск будет произведен в вышестоящем домене, при этом выход за пределы домена организации никак не контролируется.

В связи с этим DNS-сервер от Microsoft начиная с Windows Server 2008 содержит хост wpad в черном списке и не разрешает данное имя, даже если соответствующая запись на данном сервере существует.

В среде OC Windows, если предыдущие попытки не принесли результата, производится поиск хоста WPAD на WINS-сервере и посредством широковещательных протоколов LLMNR ( Link-Local Multicast Name Resolution) и NBNS (NetBIOS Name Service).

Поэтому, если данный веб-сервер использует виртуальные хосты, хост wpad должен являться хостом по умолчанию (или корневым хостом), т.е. его содержимое должно отдаваться при обращении к данному серверу без указания имени хоста, просто по IP-адресу.

Также, в целях безопасности, PAC-файл не должен быть доступен за пределами локальной сети.

PAC-файл

Как мы уже упоминали, PAC-файл является JavaScript-скриптом, однако количество инструкций в нем жестко ограничено. Разберем некоторые из них.

isPlainHostName(host) - истина если host - "плоское" имя хоста, т.е. обычное NetBIOS-имя и т.п. Позволяет определять обращения к хостам локальной сети по простому имени.

dnsDomainIs(host, domain) - истина, если домен в запросе (host) совпадает с заданным в директиве domain.

isResolvable(host) - истина, если доменное имя удается разрешить. Данную инструкцию следует использовать осторожно, так как она делает дополнительный DNS-запрос, что может увеличить нагрузку на сервера и ухудшить время отклика.

isInNet(host, pattern, mask) - истина, если IP-адрес хоста совпадает с шаблоном, где pattern - шаблон сети, mask - маска. Например, 192.168.0.0, 255.255.255.0.

shExpMatch(str, shexp) - истина, если строка совпадает с шаблоном, в качестве строки можно использовать host или url, при этом следует помнить, что шаблон не является регулярным выражением.

Этих инструкций вполне достаточно, чтобы составить достаточно подробные и разветвленные правила для работы с прокси-сервером. Попробуем составить реальный сценарий.

Прежде всего укажем функцию:

Данная функция получает от браузера URL и host из запроса и в ответ должна вернуть адрес прокси-сервера. Внутри фигурных скобок следует располагать инструкции и условия, в зависимости от выполнения которых браузеру будет возвращен тот или иной результат.

Согласно данной записи, если в поле host запроса содержится "плоское" имя, то возвращаем браузеру директиву DIRECT, что означает, что прокси-сервер для этого соединения использовать не следует.

Таким же образом предписываем обращаться напрямую по запросам с IP-адресами локальной сети:

И локальным адресам:

Кстати, первое правило можно переписать по-другому:

В доменной сети также следует настроить прямое соединение для внутренних ресурсов:

Тоже самое следует сделать и для ftp запросов:

И наконец все, что не попало ни под одно правило отправляем на прокси:

Разобравшись с тем, как устроен PAC-файл перейдем к сценариям практической реализации служб WPAD в сети.

Сети Active Directory

Так как все наши статьи преемственны, то далее будет подразумеваться что WPAD настраивается для работы с роутером в сети Active Directory, описанного нами в цикле Настраиваем Squid для работы с Active Directory, таким образом данный материал может служить его логическим завершением.

Начнем с настройки DHCP, откроем соответствующую оснастку и перейдем к списку серверов, щелкните правой кнопкой мыши на пункт IPv4 и выберите Предопределенные параметры.

wpad-pac-002.jpg

В открывшемся окне нажмите Добавить

wpad-pac-003.jpg

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

  • Имя - WPAD
  • Тип данных - строка
  • Код - 252

wpad-pac-004.jpg

После чего перейдите в Область - Параметры области - Настроить параметры и добавьте созданную нами опцию WPAD.

wpad-pac-005.jpg

Если в вашей сети более одного DHCP-сервера, то аналогичные настройки нужно выполнить на каждом их них.

Следующим шагом будет настройка DNS, прежде всего откорректируем черный список, для этого на DNS-сервере откроем редактор реестра и перейдем в раздел:

Откроем опцию GlobalQueryBlockList и удалим оттуда значение wpad, после чего службу DNS нужно перезапустить.

wpad-pac-006.jpg

Данную операцию следует выполнить на каждом DNS-сервере в вашей сети.

Затем добавьте запись типа A для хоста wpad, которая должна указывать на веб-сервер с PAC-файлом.

wpad-pac-007.jpg

После установки роли перейдите в Диспетчер служб IIS - Сайты - Default Web Site в настройках которого выберите Типы MIME.

wpad-pac-009.jpg

Для правильной работы с PAC-файлом добавьте новый тип MIME, указав расширение .dat и тип MIME application/x-ns-proxy-autoconfig.

wpad-pac-010.jpg

Выполнив данную настройку не забудьте перезапустить веб-сервер и разместите в его корневой директории C:\inetpub\wwwroot файл wpad.dat.

Как правило, дальнейших действий не требуется. Internet Explorer и Edge по умолчанию имеют настройку автоматического определения настройки параметров прокси-сервера. Но можно подстраховаться и создать отдельную политику в GPO, для этого используйте Конфигурация пользователя - Настройка - Параметры панели управления - Параметры обозревателя.

wpad-pac-011.jpg

Браузеры на основе Google Chrome (в т.ч. Opera, Яндекс) используют настройки, заданные для IE. Проблемы, как всегда, возникают с Firefox, который с настройкой по умолчанию Использовать системные настройки прокси игнорирует их и ходит напрямую, поэтому данную опцию следует изменить на Автоматически определять настройки прокси для этой сети.

wpad-pac-012.jpg
Одноранговая сеть

В одноранговых сетях обычно применяются прозрачные прокси, не требующие настройки параметров браузера, однако в ряде случаев, например, для аутентификации, от прозрачности приходится отказываться, следовательно, возникает потребность в WPAD. Далее мы будем рассматривать настройку на примере роутера, настроенного по нашей статье: Ubuntu Server. Настраиваем роутер NAT + DHCP + Squid3.

А теперь вспомним, как происходит поиск PAC-файла. Если браузер не получил нужной опции по DHCP или не умеет ее получать, он делает DNS-запрос для хоста wpad в текущем домене. Мы специально выделили ключевой момент - в текущем домене. А какой текущий домен в одноранговой сети? Правильно, никакого.

Чтобы убедиться в этом, следует проверить DNS-суффикс текущего подключения. Для этого в консоли PowerShell выполните команду:

Ниже показан вывод команды для одноранговой и доменной сетей, разница в отсутствии DNS-суффикса отлично видна "невооруженным глазом".

wpad-pac-013.jpg

Если все оставить как есть, то тот же Firefox не сможет получить настройки прокси и будет требовать ручного ввода параметров. Что делать? К счастью в протоколе DHCP есть опция 015, позволяющая передавать клиенту DNS-суффикс подключения.

Откроем /etc/dnsmasq.conf и последовательно изменим в нем следующие опции:

Данная опция указывает, что домен interface31.local - локальный и разрешать его имена на вышестоящих DNS-серверах не следует.

Данная запись в формате dnsmasq является аналогом A-записи для хоста wpad, где 192.168.31.1 - адрес хоста, на котором будет расположен веб-сервер (в нашем случае это роутер).

DNS-имя домена, передаваемое клиенту в опции 015 DHCP.

Задает расположение PAC-файла.

Теперь заново получим IP-адрес и снова проверим DNS-суффикс, также можно попробовать разрешить любое плоское имя (существующего хоста) командой nslookup.

wpad-pac-014.jpg

Если все сделано правильно - у подключения появится указанный нами суффикс, а плоские имена будут дополняться до FQDN. Теперь можно переходить к настройке веб-сервера.

Это ограничит работу веб-сервера только локальной сетью.

После чего следует убедиться, что в файле /etc/mime.types присутствует запись:

Если такой записи нет, то ее следует добавить.

На этом настройка сервера закончена, осталось разместить PAC-файл в директории /var/www и проверить работу браузеров.

Поскольку одноранговая сеть не предоставляет таких возможностей по управлению клиентскими ПК как ActiveDirectory, то следует предпринять меры по предотвращению обхода прокси. Это можно сделать через iptables, запретив форвардинг пакетов с назначением на 80-й порт. Но лучше поступить иначе.

В /etc/nat добавим следующее правило:

Данная конструкция перенаправит все запросы к веб-серверам или сторонним прокси на порт 80 нашего роутера, где работает собственный веб-сервер.

Теперь в /var/www создадим файл index.html со следующим содержимым:

wpad-pac-015.jpg

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

Если вам нужно разрешить работу с некоторыми сайтами напрямую, минуя прокси, то перед запрещающим правилом добавьте:

где xxx.xxx.xxx.xxx - IP-адрес требуемого ресурса.

Как видим, настроить автоматическое получение параметров прокси совсем несложно и можно эффективно применять данную технологию как в крупных, так и в небольших сетях.



Теория

Прокси-сервер — это сервис, благодаря которому данные идут не напрямую от одного компьютера к другому, а через сторонний. Благодаря этому, конечный компьютер (сервер) не видит нашего реального айпи адреса. Это нам может понадобиться по двум причинам.

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

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


Типы прокси

Прокси бывают простые (без авторизации) либо с логином и паролем. С паролем — это, так называемые, элитные прокси. Достать их можно здесь. Они обладают высоким качеством и позволяют избегать банов.

Прокси имеют следующую структуру: ip:port@login:pass.

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

Каждый аккаунт берет случайный прокси и файла.

Формат прокси

Бот поддерживает загрузку прокси в четырех форматах:

  • ip:port@login:pass
  • ip:port:login:pass
  • login:pass@ip:port
  • login:pass:ip:port

Сейчас я покажу, как правильно создавать файл с прокси.

Покупаем прокси


Вам понадобится один прокси на 3-4 аккаунта.


В итоге, после оплаты мы получаем данные от прокси:


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

Важно помнить

Ниже я излагаю рекомендации, о которых необходимо помнить всегда.

Не используйте бесплатные прокси

За них вы получите мгновенный бан, так как все общедоступные прокси находятся в черных списках соц. сетей.

Запускайте аккаунты только после загрузки прокси

В противном случае аккаунты запустятся без прокси, а это быстрый бан всех аккаунтов.

Берите российские прокси

Если вы берете США, Европу, Индию, Китай и прочее, то будет высокий шанс бана.

Формат файла должен быть .TXT

Файл, в котором хранятся прокси, должен иметь именно .txt формат, а не doc, xls или что-нибудь подобное. (Создавайте и редактируйте файл простым блокнотом),

Не путайте тип прокси

Заключение

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

Читайте также: