Содержание

Типы прокси HTTP, HTTPS, Socks

Прокси (в переводе с английского “proxy” – доверенное лицо) – это промежуточный транзитный веб-сервер, который используется как посредник между пользователем и конечным сервером.

Основное предназначение прокси — это смена IP адреса.

Рассмотрим ситуацию, когда пользователь посещает веб-сайт Google.com через прокси. В этом случае пользователь отправляет запрос к прокси на открытие веб-сайта. Прокси от своего имени открывает веб-сайт Google.com и затем передает данные пользователю.


Виды и типы прокси

Прокси сервера бывают нескольких типов:

  • FTP прокси используются для загрузки данных на FTP сервера
  • CGI прокси (анонимайзеры) помогают открыть любой веб-сайт прямо в браузере. Никаких дополнительных настроек не требуется. Чаще всего такие прокси выполнены в виде веб-сайта, где можно ввести адрес сайта, который необходимо посетить
  • SMTP, POP3 и IMAP прокси используются для отправки и приема электронной почты
  • HTTP и HTTPS прокси предназначены для просмотра веб-страниц
  • Socks прокси передает все данные на конечный сервер как клиент, поэтому считается самым анонимным протоколом

HTTP, HTTPS и Socks прокси используются чаще всего, поэтому рассмотрим их подробнее.


HTTP прокси

HTTP прокси — это самый распространенный вид прокси. Основное предназначение — организация работы браузеров и других программ, использующих TCP протокол. Стандартные порты 80, 8080, 3128.

Принцип работы: программа или браузер посылает запрос прокси-серверу на открытие определенного URL ресурса. Прокси-сервер получает данные с запрашиваемого ресурса и отдает эти данные вашему браузеру.

HTTP прокси позволяют:

  • кешировать загруженные файлы (картинки, страницы) для увеличения скорости открытия веб-сайтов
  • ограничивать доступ к определенным ресурсам (например, Youtube)
  • фильтровать данные. Например, вместо баннеров с рекламой показывать прозрачные картинки, которые не будут нарушать дизайн сайта, но будут существенно экономить время загрузки страницы и трафик
  • ограничивать скорость соединения
  • вести логи, контролировать трафик по пользователям

Виды прокси по анонимности

HTTP прокси по анонимности делятся на следующие виды:

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

HTTPS прокси

HTTPS прокси — фактически это HTTP-прокси, буква «S» в данном случае означает «secure» (защищенный) с поддержкой защищенного SSL соединения. Эти прокси применяются, когда требуется передать секретную информацию (например, логины/пароли, номера пластиковых карт). Стандартные порты 80, 8080, 3128.

При использовании обычного HTTP прокси всю информацию, передаваемую через него, можно перехватить с помощью самого прокси или на более низком уровне.

Например, все Интернет-провайдеры перехватывают и логируют абсолютно всю вашу активность в сети Интернет. Эти логи хранятся провайдером и является обоснованным доказательством ваших действий в сети Интернет. Поэтому для безопасности личных данных применяется протокол HTTPS, при этом весь передаваемый трафик шифруется устойчивым к взлому алгоритмом.

Принцип работы: прокси-сервер соединяется с ресурсом и ваш трафик шифруется. При таком методе отсутствует возможность узнать, какая именно информация передается через прокси-сервер (это ограничивает применение прокси как фильтра). Также в процессе шифрации и дешифрации прокси участия не принимает. Этим занимается клиентская программа (браузер) и целевой сервер. Таким образом, HTTPS proxy занимается пассивной передачей зашифрованной информации и не производит никакой обработки передаваемой информации. Такой метод работы позволяет использовать HTTPS proxy для передачи практически любого TCP-протокола. То есть HTTPS прокси может использоваться и как POP3, SMTP, IMAP, NNTP прокси.


Socks прокси

На сегодняшний день Socks прокси — самый прогрессивный протокол передачи информации. Иногда ошибочно называют Socs, Sox, Soks. Этот протокол разработан Дейвом Кобласом (Dave Koblas).

Протокол Socks разрабатывался для программ, которые не поддерживают использование прокси напрямую. Стандартные порты 1080, 1081.

Данный протокол пережил множество изменений и на данный момент используются две версии протокола:

  • Socks 4 поддерживает только TCP соединения
  • Socks 5 поддерживает TCP, UDP, авторизацию по логину и паролю и возможность удаленного DNS-запроса

Socks не занимается модерацией HTTP-заголовков. Socks-сервер будет передавать информацию через себя в чистом виде. Поэтому все Socks серверы являются анонимными.

Socks прокси не передает информацию о вашем IP адресе. Веб-сайт не сможет определить использование прокси. Соединение с веб-сайтом будет абсолютно прозрачным, также как если бы вы работали с ним напрямую. При этом веб-сайт будет видеть IP адрес прокси, а не ваш реальный IP адрес.

Socks поддерживает все протоколы, включая HTTP, HTTPS, FTP.

Мы рекомендуем использовать Socks 5 прокси


Сравнение разных типов прокси

Таблица сравнения разных видов прокси.

HTTP
HTTPS
Socks
Кэширование страниц, быстрая загрузка
Поддержка https (SSL) соединения
Полностью анонимный протокол

Откуда берутся прокси

Прокси – это программа, которая управляет запросами от пользователя к конечному серверу.

Такая программа устанавливается на компьютере пользователя или на сервере.

  1. Прокси установлены на обычных компьютерах пользователя с помощью троянских программ или вирусов через ботнет. Ботнет – это сеть инфицированных компьютеров, управляемых главным компьютером. Прокси выполняет ваши запросы, действуя от лица инфицированного компьютера. Данный вид прокси предоставляет максимальную анонимность. Минус прокси — невозможно гарантировать постоянную работу прокси, так как установлены на удаленном компьютере.

  2. Прокси настроены на собственных серверах. Такие прокси являются самыми надежными, так как сервер работает все время. Постоянные прокси не нужно проверять на валидность. Минус таких прокси в том, что они не могут обеспечить идеальную анонимность, так как известно кому принадлежит сервер и его можно изъять.

Платные прокси настраиваются с целью получения материальной выгоды от продажи и чаще всего отличаются уровнем анонимности.


Бесплатные прокси

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

Причины появления бесплатных прокси:

  • неправильная настройка доступа к прокси со стороны администратора локальной сети. Администратор сети не закрыл доступ к прокси из Интернета
  • университеты и учебные заведения открывают доступ через прокси к библиотеке своего университета. При этом прокси попадает в список публичных
  • прокси от государственных организаций

Использование публичных прокси очень опасно. Так как мы уже знаем, что прокси может кешировать, собирать статистику по пользователям. Соответственно некоторые организации заинтересованы в размещении публичных прокси с целью слежения за пользователями.

Мы не рекомендуем использовать бесплатные публичные прокси.


Как использовать прокси

Если ваша цель – это анонимное использование сети Интернет, мы рекомендуем использовать только Socks 5 прокси.

Для целей парсинга данных, SMM, SEO и онлайн игр можно использовать HTTP/HTTPS прокси.

Прокси можно настраивать в браузере или через специальные программы.


Цепочки прокси

Прокси сервера можно выстраивать в цепочки. С точки зрения анонимности и скорости работы достаточно использовать цепочку из 2 прокси в разных странах. Данные будут последовательно проходить через 2 прокси.

Помните, что Интернет-провайдер может логировать и прослушивать ваш трафик через прокси.

Мы рекомендуем использовать VPN + 2 прокси для обеспечения вашей анонимности.

Посмотреть наши прокси

Задать нам вопрос

Мы получили Ваше сообщение, мы свяжемся с Вами в самое ближайшее время.

Что-то пошло не так, пожалуйста, обновите страницу и повторите попытку.

Сообщение отправлено

Укажите Email для связи с вами

Укажите верный формат email. Например, [email protected]

Укажите тему сообщения

Укажите текст сообщения

Ваше сообщение должно быть не меньше 10 символов

Making and assembling a Rolex Replica Watches in India is quite complex and difficult hence it may conserve long time for manufacturing. Quality of material for making rolex replica watches in India and attention during crafting a wrist watch should be tough and also put into consideration. There are so many online website which tell you more about Swiss replica wrist watches. Men usually choice luxury wrist watch because they want to look more professional and also the want to look smart. There are so many varieties and colors available in this brand.

Установка и настройка прокси-сервера 3proxy на Debian/Ubuntu

Введение

В этой статье мы расскажем, как установить и настроить прокси-сервер. Прокси-сервер (от англ. proxy — «представитель, уполномоченный») выступает в роли посредника в коммуникациях между вашим ПК/мобильным и интернетом.

Причин использовать его может быть множество, включая:

  • обход ограничений доступа к определенным веб-ресурсам установленным администратором локальной сети;
  • обход региональных ограничений доступа у определенных веб-ресурсов;
  • анонимный доступ к веб-ресурсам путем сокрытия реального IP-адреса.

Среди всего многообразия прокси-серверов остановим свой выбор на открытом бесплатном кроссплатформенном сервере 3proxy, опубликованном под BSD-подобной лицензией. Официальный сайт — http://3proxy.ru/.

Исходный код на GitHub — https://github.com/z3APA3A/3proxy

3proxy включает в себя:
  • HTTP прокси с поддержкой HTTPS и FTP.
  • SOCKSv4/SOCKSv4.5/SOCKSv5 прокси.
  • POP3 прокси.
  • SMTP прокси.
  • AIM/ICQ прокси.
  • MSN messenger / Live messenger прокси.
  • FTP прокси.
  • Кэширующий DNS прокси.
  • TCP и UDP портмапперы.
Также доступны дополнительные возможности, такие как:
  • Управление доступом.
  • Ограничение ширины потребляемого канала.
  • Ограничение трафика на день, неделю и месяц.
  • Перенаправление соединений.
  • Построение цепочек соединений.
  • Ротация лог-файлов.
  • Ведение журналов через ODBC и syslog.
  • Поддержка IPv6.
К недостаткам можно отнести:
  • Отсутствие поддержки кеширования веб-страниц.
  • Отсутствие в официальных репозиториях некоторых linux-дистрибутивов (включая Debian и Ubuntu), но в репозиториях Gentoo, RedHat, Alt Linux присутствует.

Технические требования

  • Операционная система Debian GNU/Linux (версии с 9 по 11) или Ubuntu (версии с 18.04 по 21.10) любой разрядности (32/64 бита).
  • Пользователь с привилегиями root (как вариант доступ через sudo).

Шаг 1. Подготавливаем инфраструктуру

Установку и настройку 3proxy мы будем показывать на примере виртуальной машины на платформе Selectel.

В панели управления платформой заходим в раздел «Облачная платформа» — «Серверы», нажимаем кнопку «Создать сервер».

Выберем ОС — Ubuntu 20.04, фиксированную конфигурацию — 1 vCPU, 1 ГБ оперативной памяти и 5 ГБ диска. В разделе «Сеть» выберем или создадим подсеть с публичным IP-адресом, чтобы к машине можно было подключаться из интернета. Также проверьте раздел «Доступ»: нужно либо записать пароль от root-пользователя, либо выбрать SSH-ключ.

Когда виртуальная машина будет готова, скопируйте ее IP-адрес:

Чтобы подключиться к машине, выполните команду, подставив ваш IP-адрес:

ssh root@

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

ssh -i  root@

Шаг 2. Подготавливаем инструментарий

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

sudo apt-get update
sudo apt-get install -y build-essential

Шаг 3. Скачиваем и распаковываем исходники

Последняя версия 0.9.3 (на момент написания руководства). Узнать последнюю версию можно на официальном сайте, при необходимости просто замените цифры на необходимые в следующих командах:

cd ~
wget https://github.com/z3APA3A/3proxy/archive/0.9.3.tar.gz

tar xzf 0.9.3.tar.gz

Шаг 4. Компилируем

cd ~/3proxy-0.9.3

sudo make -f Makefile.Linux

Шаг 5. Устанавливаем

Копируем получившийся бинарный файл:

sudo mkdir /etc/3proxy


cd ~/3proxy-0.9.3/bin
sudo cp 3proxy /usr/bin/

Создадим отдельного системного пользователя proxy3, от имени которого и будет работать сервер:

sudo adduser --system --no-create-home --disabled-login --group proxy3

Узнаем UID и GID пользователя командой:

id proxy3

В ответ, например, получим:

uid=109(proxy3) gid=115(proxy3) groups=115(proxy3)

Создаем файл настроек:

sudo nano /etc/3proxy/3proxy. cfg

Вставляем в него следующий код: 

# Запускаем сервер от пользователя proxy3
# (возможно в вашей ОС uid и gid пользователя proxy3
# будут другими. Для их определения воспользуйтесь командой id proxy3)
setgid 115
setuid 109
#
# Пропишите правильные серверы имен посмотрев их
# на своем сервере в /etc/resolv.conf
nserver 188.93.16.19
nserver 188.93.17.19
#
# Оставьте размер кэша для запросов DNS по умолчанию
nscache 65536
#
# Равно как и таймауты
timeouts 1 5 30 60 180 1800 15 60
#
# Если несколько IP на одном сервере, указываем тот,
# через который будем ходить во внешний мир.
# Иначе эту строку игнорируем
#external 
# Тоже самое, только указываем IP, который надо слушать
# Если проигнорировать, то прокси слушает все адреса на сервере
#internal 
#
# Указываем на расположение файла с пользователями и паролями
users $/etc/3proxy/.proxyauth
#
# укажите режим запуска как deamon
daemon
#
# путь к логам и формат лога, к имени лога будет добавляться дата создания
log /var/log/3proxy/3proxy. log D
logformat "- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T"
#
# Включаем авторизацию по логинам и паролям
auth cache strong
#
# Конфигурация http(s) proxy
# Запускаем анонимный (-a) HTTP-proxy на порту (-p) 3128 и
# c отключенной NTLM-авторизацией (-n)
proxy -n -p3128 -a


Комментарии начинаются со знака # и допустимы только с начала строки. Рекомендуется также использовать другой порт вместо стандартного 3128 для прокси серверов, лучше всего из диапазона 49152–65535.

Пример с другой конфигурацией
nano ~/3proxy-0.9.3/cfg/3proxy.cfg.sample

nano ~/3proxy-0.9.3/doc/ru/example1.txt

или же в одном из следующих руководств, на которые ссылается официальный сайт:

  • https://3proxy.ru/doc/man3/3proxy.cfg.3.html
  • https://3proxy.ru/doc/3proxy_for_dummies.rtf
  • https://3proxy.ru/howtor.asp
  • https://3proxy.ru/howtoe.asp

Вот пример конфигурации без ведения логов:

setgid 115
setuid 109
nserver 8. 8.8.8
nserver 77.88.8.8
nscache 65536
timeouts 1 5 30 60 180 1800 15 60
users $/etc/3proxy/.proxyauth
daemon
auth cache strong
proxy -n -p3128 -a

Создаем файл с пользователями и паролями:

sudo nano /etc/3proxy/.proxyauth

Вставляем в него следующий код:

## addusers in this format:
#user:CL:password
##see for documentation: http://www.3proxy.ru/howtoe.asp#USERS
username:CL:strongpassword

Где логин username и пароль strongpassword следует изменить на свои. Каждый новый пользователь указывается с новой строки. Выставляем права доступа к файлам прокси-сервера:

sudo chown proxy3:proxy3 -R /etc/3proxy

sudo chown proxy3:proxy3 /usr/bin/3proxy
sudo chmod 444 /etc/3proxy/3proxy.cfg

sudo chmod 400 /etc/3proxy/.proxyauth

Создаем папку для ведения логов и назначаем права на нее:

sudo mkdir /var/log/3proxy
sudo chown proxy3:proxy3 /var/log/3proxy

В случае наличия IPv6 на сервере, рекомендуем запускать прокси со следующей строкой в /etc/3proxy/3proxy. cfg:

proxy -46 -n -p3128 -a -i95.213.255.16 -e95.213.255.16 -e2002:5fd5:ff010::1

Для сервера с IPv4:95.213.255.16 и IPv6:2002:5fd5:ff010::1 у вас же они будут иные. В таком случае будет поддержка IPv6 на выходе с прокси, например, https://yandex.ru/internet отобразит оба адреса.

Шаг 6. Добавляем в автозагрузку и запускаем прокси-сервер

Создаем файл-инициализации для systemd:

sudo nano/etc/systemd/system/3proxy.service

Вставляем в него следующий код:

[Unit]
Description=3proxy Proxy Server
After=network.target


[Service]
Type=simple
ExecStart=/usr/bin/3proxy /etc/3proxy/3proxy.cfg
ExecStop=/bin/kill `/usr/bin/pgrep -u proxy3`
RemainAfterExit=yes
Restart=on-failure

[Install]
WantedBy=multi-user.target

Еще один вариант скрипта инициализации:

nano ~/3proxy-0.9.3/scripts/3proxy.service

Теперь нужно обновить конфигурацию systemd:

sudo systemctl daemon-reload

Добавляем в автозагрузку:

sudo systemctl enable 3proxy

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

sudo systemctl start 3proxy

Если с первого раза сервис не запустился, проверьте наличие ошибок:

systemctl status 3proxy. service

Проблемы с запуском чаще всего связаны с файлом /etc/3proxy/3proxy.cfg. При возникновении ошибки обычно указан порядковый номер проблемной строки.

Также мы увидим его в списке запущенных процессов в ответе на команду:

ps -ela | grep "3proxy"

Шаг 7. Открываем порт

Открываем порт (3128/tcp) на сервере. Либо указываем свой, который указан в файле /etc/3proxy/3proxy.cfg.

При использовании Uncomplicated Firewall (UFW):

sudo ufw allow 3128/tcp
sudo ufw enable

При использовании iptables:

sudo iptables -I INPUT -p tcp -m tcp --dport 3128 -j ACCEPT

Шаг 8. Настраиваем окружение

Множество программ (включая веб-браузеры) поддерживают работу через прокси по умолчанию. Интерфейс настроек у каждой свой.

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

Либо использование программы проксификатора.

Например такой как:

  • tun2socks
  • redsocks
  • Proxifier
  • ProxyCap

Для подключения к сети Google Chrome использует системные настройки прокси-сервера.

В случае Microsoft Windows это настройки можно также найти в Internet Explorer / MS Edge.

Настройки для браузера Mozilla Firefox, настройки для Opera и Safari.

Форма с предложением ввода логина и пароля (username:strongpassword) появится, после первой попытки открытия любой веб-страницы.

Затем любые сервисы по проверки IP-адреса, например, такие как:

  • https://yandex.ru/internet
  • https://2ip.ru/
  • https://ifconfig.co/

сообщат IP-адрес вашего сервера вместо текущего.

Шаг 9. Удаляем временные файлы

rm ~/0.9.3.tar.gz
sudo rm -r ~/3proxy-0.9.3

Шаг 10. Удаляем 3Proxy (опционально)

Так как установка осуществлялась из исходников, то пакетный менеджер операционной системы бесполезен. Для удаления выполните следующие команды:

sudo systemctl stop 3proxy. service 
sudo rm /etc/systemd/system/3proxy.service
sudo rm -rf /etc/3proxy
sudo rm -rf /var/log/3proxy
sudo rm /usr/bin/3proxy
sudo systemctl daemon-reload

Заключение

Мы рассмотрели установку и базовую настройку 3proxy. Безусловно у данного прокси-сервера есть еще множество настроек, которые мы не затронули, в том числе настройку SOCKS-прокси, построение цепочек соединений, управление доступом, ограничение ширины потребляемого канала, ограничение трафика по времени, но это тема уже для отдельного руководства.

Таким образом, после выполненных действий вы получаете свой собственный прокси-сервер, который более безопасен для вас, так как ваш трафик заведомо не будет перехвачен и проанализирован третьими лицами, от чего вы не застрахованы при использовании сторонних решений. Хотя с этой точки зрения более эффективна настройка VPN-туннеля с шифрованием.

3proxy может выступать в роли высоко анонимного прокси-сервера. Признаком использования подобного может быть лишь принадлежность выходного IP-адреса сервера к пулу адресов, закрепленных за хостинговой компанией при просмотре WHOIS-данных и PTR-записи. В целом он хорош тем, что является маленьким и простым, но в то же время функциональным.

Прокси-сервер, настройки и возможности

HTTP прокси-сервер и SOCKS работает на всех IP-адресах внутренних интерфейсов, в том числе на локальном (127.0.0.1). С внешних сетей он всегда недоступен.

Прокси-сервер, входящий в Traffic Inspector – это классический HTTP/FTP прокси-сервер. Учитывая наличие NAT, где производительность работы существенно выше, служба, на первый взгляд, необязательная. Но его применение во многих случаях целесообразно, поскольку обеспечивает следующие возможности.

  • Фильтрация на уровне приложений HTTP и FTP работает только через прокси-сервер.
  • Кэширование, которое позволяет реально экономить 10-25% трафика. Возможен и больший процент, но могут возникнуть некоторые неудобства для пользователей – им придется иногда управлять режимами кэширования, хотя имеющиеся возможности гибкой тарификации трафика из кэша позволяют сделать это для них экономически выгодным.
  • Возможность работы в активном режиме с FTP. Работа через NAT в активном режиме возможна не всегда.
  • Возможность перенаправления (редиректа) запросов.
  • Использование SOCKS обеспечивает динамическое открытие входящих TCP- и UDP-соединений.

Прокси-сервер поддерживает туннельные TCP-соединения методом CONNECT, позволяя работать с протоколом SSL.

Если требуется работа через прокси-сервер с приложениями, которые используют входящие TCP- и UDP-соединения со стороны пользователя, то использование SOCKS-сервера – единственная возможность это сделать. Текущая версия программы поддерживает SOCKS версии 4 и 5.

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

Особенности реализации протокола HTTP/1.1

Прокси-сервер оптимизирован для работы с протоколом HTTP/1.1, полностью соответствует стандарту RFC 2616, в нем реализованы механизмы Keep-Alive и Pipelining.

Keep-Alive – процедура удержания и повторного использования TCP-соединений. Все современные браузеры и большинство веб-серверов ее поддерживают, но для них могут потребоваться особые настройки. Использование Keep-Alive существенно экономит трафик, что особенно заметно при загрузке страниц с большим количеством объектов. В некоторых случаях это приводит к ускорению загрузки страниц.

Pipelining – возможность в рамках одного TCP-соединения передавать запросы, не дожидаясь принятого ответа от сервера. Если на странице объектов много, то браузер отправляет  сразу все запросы на сервер через одно TCP-соединение. В прокси-сервере Traffic Inspector реализована параллельная асинхронная обработка запросов и ответов: данные запросов также сразу отправляются на сервер, при этом количество запросов в очереди не ограничено.

Функция Pipelining поддерживается не всем веб-серверами и не всеми браузерами. Кроме того, в некоторых браузерах она по умолчанию отключена (подробнее см. документацию на соответствующие браузеры). Нужно учитывать, что если исходящий канал медленный или время отклика сервера большое (большие задержки в каналах связи), то использование Pipelining существенно ускоряет загрузку данных.

Все эти функции работают и в режиме каскадирования на другой прокси-сервер, но здесь все зависит от поддержки данных функций на вышестоящем прокси. Наиболее распространенные прокси-сервера – ISA и Squid – в полном объеме Pipelining не поддерживают.

Особенности реализации кэширования

Кэширование в прокси-сервере выполняется путем сохранением загруженных страниц в кэше для их повторного использования при последующих обращениях к данным ресурсам. Это позволяет экономить трафик и ускоряет загрузку страниц при медленных каналах связи. Обратной стороной использования кэша является проблема получения всегда достоверных данных для сохраненных ресурсов – необходимо проверять, обновились ли они на веб-сервере. Стандарты на HTTP/1.1 и другие подробно регламентируют работу серверов, но реалии сети Интернет таковы, что не все им следуют. Задача получить реальную экономию за счет кэширования и при этом передать на пользователя достоверные данные оказывается весьма сложной и противоречивой.

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

Алгоритм работы программы при кэшировании следующий.

При сохранении ресурса в кэше запоминается время его получения с сервера и время создания (модификации) на самом сервере. Правда, этот атрибут может и отсутствовать – сервер по какой-то причине может его не выдать. Если далее на прокси-сервер поступает запрос на доступ к этому ресурсу, а он есть в кэше, то производится вычисление параметра TTL – прогнозируемого времени жизни. Он берется как процент от времени, в течение которого ресурс существовал с момента его записи в кэш. Смысловым значением данного параметра является прогноз: если ресурс не изменялся какое-то время, то он и в дальнейшем не будет меняться.

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

На полученное значение TTL дополнительно накладываются ограничения по минимуму и максимуму. Если на момент запроса текущее время не превысило TTL, то ресурс считается непросроченным, в этом случае он берется из кэша. Иначе ресурс будет считаться просроченным. А значит его потребуется перепроверить на сервере, для чего посылается соответствующий запрос с условиями проверки. Если сервер такие запросы поддерживает, и ресурс за последнее время не изменен, то после ответа сервера ресурс будет взят из кэша. Такой ответ по размеру данных гораздо меньше полного ответа с самим объектом, но для экономии трафика желательно минимальное количество подобных проверок.

Вычисление TTL и прогнозирование можно совсем отключить – прокси-сервер перепроверяет ресурсы всегда. Экономия трафика сведется к минимуму, зато пользователи будут иметь гарантированно свежие данные.

Данные могут быть отмечены и как личные – иметь HTTP-атрибут private. Они будут кэшироваться, но в дальнейшем доступны из кэша только тому пользователю, кто их сохранил. Cookie с сервера также сохраняются в кэше и выдаются в будущем пользователю. Но, если данные отмечены как личные и имеют cookie, то в кэш они не записываются. Подразумевается, что они могут нести важные личные сведения. Плюс к тому отметим, что кэшируются только запросы типа GET.

Таким образом видно, что для увеличения реальной экономии трафика за счет кэширования следует увеличивать параметры, связанные с вычислением TTL. Для того чтобы при этом можно было нормально просматривать быстроменяющиеся ресурсы, в Traffic Inspector предусмотрена возможность оперативного переключения режимами кэширования самим пользователем с помощью агента (подробнее об агентах см. в п. Клиентский агент Windows).

Для большего сбережения трафика можно рекомендовать следующие параметры: TTL – 70-150%, минимум 12-24 часа, максимум 15-30 дней. При таких настройках можно экономить до 25-35% трафика, но придется переключать режимы кэширования агентом при посещении быстрообновляемых ресурсов.

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

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

Индекс кэша реализован в виде SQL-базы данных, файл proxy.db3. В случае потери или порчи файла индекса данные в кэше будут потеряны.

Подробно настройка кэширования и правила кэширования описаны в п. Кэширование и правила кэширования.

Особенности преобразования и анализа контента

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

  • Chanked – специальный потоковый контент. Прокси-сервер всегда преобразует такой контент в обычный, удаляя данные форматирования chanked-формата. Иными словами, пользователь никогда данные chanked-формата не получает.
  • Компрессия данных – позволяет сильно экономить трафик для некоторых типов данных.

Компрессию должен поддерживать, прежде всего, веб-сервер. Он обычно настраивается так, чтобы сжимать не все типы данных, а только те, для которых это имеет смысл (например, картинки типа gif, jpeg или архивы сжимать бессмысленно). Сервер будет выдавать сжатые данные, только если в пользовательском запросе есть HTTP-атрибут, заявляющий о поддержке клиентом соответствующих форматов компрессии данных. Компрессия обычно  применяется в запросах по протоколу HTTP/1.1.

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

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

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

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

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

Антивирусная проверка HTTP- и FTP-контента позволяет выявлять данные, зараженные вирусами, а также имеющие нежелательные составляющие: программы-шпионы, скрипты и т.д. Проверка данных выполняется антивирусными сканерами, которые являются дополнительными модулями программы (подробнее см. в п. Дополнительные модули).

С точки зрения антивирусной проверки оптимальным вариантом является использование режима с предварительной загрузкой (то есть проверка осуществляется только после полной загрузки объекта). В этом случае, если в объекте антивирусом найден вредоносное ПО, а файл лечению не поддается, то будет произведена фильтрация объекта аналогично срабатыванию правила на запрещение – выдано стандартное сообщение прокси-сервера о блокировке с отчетом антивирусного сканера, а для картинок и флеш-файлов – «пустышка».

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

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

Все данные о выявлении вирусов записываются в отдельный общий журнал, плюс отправляется сообщение на агент пользователя.

Реализация режимов перенаправления трафика на прокси-сервер

Работа через прокси-сервер позволяет реализовать более тонкий контроль за HTTP-трафиком, т. к. доступна информация прикладного уровня. Со стороны пользователя с помощью настроек браузера можно выбрать, использовать прокси-сервер или нет. И у администратора не всегда имеет возможность выставить эти настройки принудительно.

Для принудительного перенаправления HTTP-трафика на прокси-сервер в Traffic Inspector реализована специальная функция, реализованная на уровне драйвера программы. Перенаправление на прокси-сервер программы происходит в момент начала TCP-соединения. Однако в данный момент еще неизвестно, какой протокол уровня приложений (HTTP или другой) будет использоваться. Поэтому перенаправление может быть произведено только для TCP/80, причем в данном случае перенаправляется любой TCP-трафик.

Аутентификация браузера с прокси-сервером здесь невозможна, т.к. браузер «не знает», что работает через прокси. Для этого при авторизации по имени придется обязательно использовать агента (подробнее см. в п. Способы авторизации пользователей).

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

В дополнение к этому в Traffic Inspector реализована функция блокирования любого другого HTTP-трафика, идущего мимо прокси-сервера, что позволит гарантированно пресечь работу пользователя мимо прокси-сервера. Применение этих функций задается отдельно для пользователей (авторизованный трафик) и «неавторизованного пользователя». Они настраиваются в общих настройках пользователей (подробнее см. в п. Общие настройки пользователей), свойствах групп (подробнее см. в п. Создание и настройка групп) и свойствах отдельных пользователей (подробнее см. в п. Создание и настройка пользователей).

Данные функции никогда не применяются для трафика:

  • на все IP-адреса всех интерфейсов сервера;
  • на IP-сети, заданные в настройках LAT (Local Address Table) прокси-сервера.

Также в Traffic Inspector реализована функция перенаправления любых TCP-соединений со стороны пользователей, с помощью которой можно гибко реализовать Transparent Proxy для любого HTTP-трафика на любой прокси-сервер (подробнее см. в п. Перенаправление запросов).

Особенности реализации протокола FTP

Обычно для FTP лучше всего использовать NAT. Но могут быть случаи, когда полезны и другие варианты работы.

Для работы с FTP-серверами в режиме только чтения такими браузерами, как Mozilla или Opera, использутся метод GET. В этом случае прокси-сервер будет генерировать HTML-страницы каталогов FTP-сервера. Активный или пассивный режим при этом может выбираться автоматически. Достоинство этого метода – наличие фильтрации по контенту.

Полноценную работу с FTP обеспечивает SOCKS. Доступны все режимы  активный и пассивный.

Особенности тарификации и учет трафика в прокси-сервере и SOCKS

В программе предусмотрено два метода съема трафика с целью учета при работе пользователя через прокси-сервер и SOCKS.

  1. Kernel. Драйвер ведет списки TCP всех сессий, и для каждой учитывается трафик. Эти данные запрашиваются и используются для учета трафика в прокси-сервере и SOCKS. Данный метод имеет абсолютную точность по причине учета всех пакетов TCP-сессии.
  2. Application. В этом случае учитывается только полезный трафик, передаваемый в службе прокси-сервера и SOCKS. Итоговые данные занижаются, т.к. не учитываются заголовки пакетов и служебные пакеты TCP-протокола. Обращаем внимание: именно так работает учет трафика всех «классических» прокси-серверов.

Режим учета в каждой сессии прокси-сервера и SOCKS отображается в консоли с целью диагностики работы программы.

Режимы выбираются автоматически. Логика выбора режима учета такова, что application-режим выбирается только тогда, когда kernel использовать возможности нет.

Для HTTP-прокси в kernel-режиме трафик снимается на интерфейсе, через который идет соединение между прокси-сервером и веб-сервером. Если этот интерфейс в программе не назначен, то используется режим application.

Для FTP через HTTP используется режим application.

Для SOCKS всегда используется kernel-режим, но трафик снимается между пользователем и SOCKS-сервером.

Во время работы через спутник пакеты TCP-сессии передаются и принимаются на разных интерфейсах. Для того, чтобы корректно работал kernel-режим, при конфигурировании надо обязательно указать интерфейс, на котором принимаются пакеты, иначе входящий трафик учитываться не будет (подробнее см. в п. Конфигуратор).

Пишем HTTP proxy сервер с плагинами / Хабр

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

Итак, задача:
Хочется, чтобы каптчу вводить не приходилось. Хоть если играешь сам, хоть если играет за тебя бот, если ты спишь.
Дополнительное условие: 40 часов времени (ибо паника на корабле).
Желательное условие: установочный файл под Windows.
Ещё одно желательное условие: результат должен занимать не более мегабайта.

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

Итак, что же делать?

Попытка 1

Написать системную тулзу, которая бы перехватывала HTTP запросы и ответы от всёх установленных программ, и фильтровала бы те ответы, на которые бы требовалось ввести каптчу, вводя её самостоятельно. Над программой, которая в том числе должна была решать и эту задачу корпели примерно полгода два белорусских программиста, меняя платформу с C на C#, и потом на Java, и мирясь с тем, что им может понадобится установленный на машину OpenSSL. Задача каждый раз обрастала ненужными подробностями. Ну, в целом, не вышло.

Попытка 2: Сам, всё сам

Вполне понятно, что способов не так много, и выбор встал только между SOCKS прокси и HTTP прокси. Через некоторое время стало понятно, что SOCKS прокси поддерживают далеко не все пользовательские приложения, и выбор стал однозначным.

Выбор платформы

Выбор был не сложен, особенно учитывая попытку 1. C и C# были быстро отметены, учитывая полное отсутствие опыта. Были выявлены следующие, богатые необходимыми библиотеками, платформы:

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

Python Как известно, работает везде и всё включено (batteries included). Весит 7Мб. По современным меркам, конечно, немного, но всё же хотелось компактнее. Остался вопрос, как этот инсталлятор внедрить в инсталлятор моей утилиты. Не знаю, как это делается у питоновских приложений, возможно, намного проще, но инсталлятор в инсталляторе я как-то раз уже делал и больше не хочу.

Ruby На момент начала моих поисков отсутствовал одношаговый инсталлятор под винду. Целиком и полностью. Сейчас есть, подразумевает установку MinGW, MSYS и прочего, при установке могущего испугать юзера. Вес 7Мб.
Про инсталлятор в инсталляторе вопрос остался.

Lua Очень давний и популярный среди скриптовщиков С++ игр язык. Вялое community, разрозненные библиотеки. Вес кастомной сборки VM в нужными библиотеками — всего 800Кб. Инсталлятор не предоставляется, есть набор exe файлов, которым в качестве параметра передаётся lua скрипт для его запуска. То, что нужно, так ещё и откомпилено под Win, MacOS, Linux, каждое из них в версиях 32 и 64 отдельно. То, что надо.

Итак, я взялся за изучение Lua (сбылось новогоднее пожелание, я изучил новый язык программирования).
Язык обладает чудесными свойствами, такими как:
— sandboxing (в ruby был только патч для версии 1. 8.5): позволяет запускать сторонний код, ограничивая ему окружение;
— coroutines (типа ruby fibers из 1.9): позволяет сделать очень легковесную кооперативную многозадачность;
— очень простые (точнее, простая — есть только ассоциативный массив) структура данных, которой, как оказалось, хватает, для выполнения большинства задач по обработке данных;
… ещё много всего, тяжко так в одном посте.

Проще всего было сделать такую систему в виде фильтрующего запросы и ответы HTTP прокси сервера, что и было решено сделать (от добра добра не добра).

Идея проста: повесить сервер TCP, слушать, что клиент просит, разбирать заголовки HTTP, искать HOST, убирать HTTP header «Proxy-Connection», отсылать запрос тому, кому он предназначался, получать ответ, направлять клиенту и т.п.

Ответ сервера нужно фильтровать, и делать это можно, если сервер не применяет HTTPS, а он по счастью его не применяет. Сделать это оказалось довольно просто, достаточным оказалось написать сокращённый до 190 строк Lua аналог mechanize для Ruby, который делает с заголовками и телом запроса что ни взбредёт в голову, позволяя писать какие хочется фильтры для HTTP запросов.

Ну, в этом случае нам надо было избавиться от вредной reCAPTCHA, для чего всего лишь потребовалось определить:
— к странице ли травиана щёл исходный запрос (и запрашивалась ли страница HTML):
string.find(request.uri(), 'travian') and mimetype and string.find(mimetype, 'text/html')

— содержалась ли на результирующей странице каптча вместо «полезных» игровых данных:
local captcha, captcha_key = string.match(response.body(), '<iframe src="(http://api.recaptcha.net/noscript??(k=[%a%d_]+&lang=en))')

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

В итоге, скачивалась картинка каптчи, отправлялась индусам (2 раза на всякий случай), полученные через 5-10 секунд ответы сравнивались, и если они были одинаковыми, то результат отправлялся травиану HTTP POST запросом, на что жертва выдаёт страницу, радостно сообщая, что мы, оказывается, человек, и кучу «полезных» игровых данных. Эту страницу мы и показываем ничего не подозревающему клиенту, который мог заметить лишь некоторую паузу. В пессимистичном случае несовпадения картинка отправлялась индусам ещё раз, и так далее до того момента, пока не получалось хотя бы два одинаковых решения, остальные отправлялись в службу поддержки на возврат денег (практически никакой халявы для индусов).

Итак, вот оно, решение и есть.

Однако, случилось то, о чём никто не мог предполагать. Пользователям зачем-то понадобился ещё и доступ к другим сайтам, немыслимо! Среди них оказались даже сайты, доступ к которым осуществлялся через HTTPS, и с этим нужно было что-то делать без регулярных переключений прокси включён-выключен.
И ещё нужно было, чтобы несколько запросов принимались одновременно. Неприятным оказалось то, что google analytics иногда делает запрос, длящийся минуты, оставляя однопоточную прокси в режиме ожидания.

Ну что же, для этого нашлось целых три разных библиотеки для создания асинхронного TCP сервера. То есть — ждём входящее соединение, получаем кусок данных, передаём управление диспетчеру, смотрим есть ли ещё входящие соединения или открытые соединения для которых есть данные (select/kpoll/epoll), передаём управление по очереди.

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

Ну вот, всё стало работать параллельно, а по скорости лишь незаметно отставать от того, как это работает без прокси.

Как же велико было моё удивление, когда я получил от сервера страницу с (в том числе) заголовками:
Content-Encoding: gzip
Transfer-Encoding: chunked
и собственно полные кракозябры в качестве тела ответа.

Первая мысль была отключить в запросе Accept-Encoding, чтобы сервер не пытался паковать данные, и переделать HTTP 1.1 в HTTP 1.0, чтобы не посылало «чанками». Но подумал об падении скорости и увеличении трафика, и сжалился над пользователями.
Вышло так:
if headers(pipe, target)['Transfer-Encoding'] == 'chunked' then
target.body = dechunk(target.body)
end

function dechunk(chunkie)
local chunk_size
local chunk
local chunks = {}
chunkie, chunk_size = readline(chunkie)

while chunk_size and tonumber(chunk_size, 16) > 0 do
chunkie, chunk = readbytes(chunkie, tonumber(chunk_size, 16))

table.insert(chunks, chunk)
chunkie, chunk_size = readline(chunkie)
if not chunk_size or chunk_size == » then — sometimes there’s a crlf, sometimes not
chunkie, chunk_size = readline(chunkie)
end
end

return table.concat(chunks)
end

Ушёл читать матчасть. Слава богу, по этим пунктам документации порядочно.
Склеиваем «чанки», получаем gzip файл (иногда deflate, но мне не встречался пока). Распаковываем (спасибо David Manura за библиотеку).
Распаковка вышла ещё проще:
if headers(pipe, target)['Content-Encoding'] == 'gzip' and #target.body > 0 then
local decoded = {}
gzip.gunzip {input=target.body, output=function(byte) table.insert(decoded, string.char(byte)) end}
target.body = table.concat(decoded)
end

Осталось немного
— сделать HTTPS-туннелирование для HTTPS сайтов (слава богу, OpenSSL бандлить не надо, просто данные прозрачно передавать туда-сюда):
if request.method() == 'CONNECT' then
local sent_to_server, err = client.send("HTTP/1.0 200 Connection established\r\nProxy-agent: BotHQ-Agent/1.2\r\n\r\n")
print('https transparent connection')
https(client, server)
return
end

local function https(client, server)
close_callback = function()
client. close()
server.close()
end

client.receive_subscribe(function(data)
server.send(data)
end, close_callback)

server.receive_subscribe(function(data)
client.send(data)
end, close_callback)
end

— положить в инсталлятор:
В целом приключения с запуском 7zip sfx на Heroku стоят отдельного поста. Радость победы затмевает любые сложные моменты разработки.

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

В итоге:
Сам прокси сервер на 71 строку здесь.
Асинхронная библиотека TCP-сервер-клиент на 272 строки тут.
Некий аналог HTTP клиента на 190 строк.
Фильтр для разгадывания каптчи на 150 строк тут.
Установочный файл размером менее мегабайта.

Уверен, такой штуке найдётся много полезных применений, начиная от не очень хороших, типа спамилок с «автоматической» разгадкой каптчи, до полезных, когда нужно гибко отфильтровать пользовательский трафик скриптом. Приведу простейший скрипт, не позволяющий пользователям, подсоединённым через прокси, соединяться с vk.com:
module(..., package.seeall)
function filter(request, response)
response.set_body('')
end

function pre(request, response)
return string.find(request.uri(), ‘vk.com’)
end

С приближающимся выходом lua 5.2 снимется ограничение на вызов метаметодов из корутин, и библиотеки можно будет сделать более красивыми, например, уйдут методы http.set_body, и многое другое.

Настройка параметров прокси-сервера устройства и подключения к Интернету

  • Статья
  • Чтение занимает 5 мин

Область применения:

  • Microsoft Defender для конечной точки (план 2)
  • Microsoft 365 Defender

Хотите попробовать Defender для конечной точки? Зарегистрироваться для бесплатной пробной версии.

Для использования датчика Defender для конечной точки требуется Microsoft Windows HTTP (WinHTTP), чтобы передавать данные датчика и общаться со службой Defender для конечной точки. Встроенный датчик Defender для конечной точки в контексте системы работает с учетной записью LocalSystem. Датчик использует Microsoft Windows HTTP Services (WinHTTP), чтобы обеспечить взаимодействие с облачной службой Defender для конечной точки.

Совет

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

Параметр конфигурации WinHTTP не зависит от параметров прокси-сервера Интернет-браузера Windows (WinINet) (см. WinINet и WinHTTP). Он может обнаружить прокси-сервер только с помощью следующих методов обнаружения:

  • Методы автоматического обнаружения:

  • Конфигурация статического прокси вручную:

    • Конфигурация на основе реестра

    • WinHTTP, настроенный с помощью команды netsh: подходит только для настольных компьютеров в стабильной топологии (например: настольный компьютер в корпоративной сети за тем же прокси-сервером)

Примечание

Антивирусные программы Defender и прокси EDR можно устанавливать независимо друг от друга. В последующих разделах следует помнить об этих различиях.

Настройте статический прокси-сервер на основе реестра для датчика обнаружения и нейтрализации атак на конечные точки Defender (EDR), чтобы сообщать диагностические данные и взаимодействовать со службами Defender для конечной точки, если компьютеру запрещено подключение к Интернету.

Примечание

При использовании этого параметра в Windows 10, Windows 11, Windows Server 2019 или Windows Server 2022 рекомендуется иметь следующую (или более позднюю) сборку и накопительный пакет обновления:

  • Windows 11
  • Windows 10 версии 1809, Windows Server 2019 или Windows Server 2022 — https://support.microsoft.com/kb/5001384
  • Windows 10 версии 1909 — https://support.microsoft.com/kb/4601380
  • Windows 10 версии 2004 — https://support.microsoft.com/kb/4601382
  • Windows 10 версии 20h3 — https://support.microsoft.com/kb/4601382

Эти обновления улучшают соединение и надежность канала CnC (Command and Control).

Статический прокси-сервер настраивается с помощью групповой политики (GP). Оба параметра в значениях групповой политики должны быть настроены на прокси-сервер для использования EDR. Групповая политика доступна в административных шаблонах.

  • Откройте Административные шаблоны > Компоненты Windows > Сборки для сбора данных и предварительные сборки > Настройка использования прокси-службы для подключенных пользователей и службы телеметрии.

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

  • Откройте Административные шаблоны > Компоненты Windows > Сборки для сбора данных и предварительные сборки > Настройка телеметрии и функциональных возможностей подключенных пользователей:

    Настройка прокси-сервера.

Групповая политикаРаздел реестраЗапись реестраЗначение
Настройка использования проверенного прокси-сервера для подключенного пользователя и службы телеметрииHKLM\Software\Policies\Microsoft\Windows\DataCollectionDisableEnterpriseAuthProxy1 (REG_DWORD)
Настройка телеметрии и функциональных возможностей подключенных пользователейHKLM\Software\Policies\Microsoft\Windows\DataCollectionTelemetryProxyServerservername:port or ip:port

Например: 10. 0.0.6:8080 (REG_SZ)

Примечание

Если вы используете параметр TelemetryProxyServer на устройствах, которые в противном случае полностью находятся в автономном режиме ,PreferStaticProxyForHttpRequest 1рекомендуется добавить дополнительный параметр реестра со значением .
Путь к родительскому реестру для preferStaticProxyForHttpRequest имеет значение «HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows Advanced Threat Protection»
Чтобы вставить значение реестра в нужное расположение, можно использовать следующую команду:
reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows Advanced Threat Protection" /v PreferStaticProxyForHttpRequest /t REG_DWORD /d 1 /f
Указанное выше значение реестра применимо только начиная с версии MsSense.exe 10.8210.* и более поздней или версии 10.8049.* и более поздних (в Windows Server 2012R2/2016 с единым агентом)

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

Настройте статический прокси-сервер с помощью групповой политики, доступной в административных шаблонах:

  1. Административные шаблоны > компоненты Windows > антивирусная программа в Microsoft Defender > Определить прокси-сервер для подключения к сети.

  2. Установите для него значение Включен и определите прокси-сервер. Обратите внимание, что URL-адрес должен быть http:// или https://. Поддерживаемые версии для https:// см. в статье Управление обновлениями антивирусной программы Microsoft Defender.

  3. В разделе реестра ключа HKLM\Software\Policies\Microsoft\Windows Defender политика устанавливает значение реестра ProxyServer как REG_SZ.

    Значение реестра ProxyServer принимает следующий формат строки:

    <server name or ip>:<port>
    For example: http://10.0.0.6:8080
    

Примечание

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

Антивирусная программа Microsoft Defender не будет использовать статический прокси-сервер для подключения к Центру обновления Windows или Центру обновления Майкрософт для загрузки обновлений. Вместо этого она будет использовать общесистемный прокси-сервер, если он настроен на использование Центра обновления Windows, или настроенный внутренний источник обновлений в соответствии с настроенным резервным порядком.

При необходимости можно использовать Административные шаблоны > компоненты Windows > антивирусная программа в Microsoft Defender > Определить auto-config (. pac) прокси-сервера для подключения к сети. Если нужно настроить расширенные конфигурации с несколькими прокси-серверами, используйте Административные шаблоны > Компоненты Windows > Антивирусная программа Microsoft Defender > Определить адреса, чтобы обойти прокси-сервер и запретить антивирусной программе Microsoft Defender использовать прокси-сервер для этих назначений.

Для настройки этих параметров можно использовать PowerShell с cmdlet Set-MpPreference:

  • ProxyBypass
  • ProxyPacUrl
  • ProxyServer

Примечание

Чтобы правильно использовать прокси-сервер, настройте три разных параметра прокси-сервера:

  • Microsoft Defender для конечной точки (MDE)
  • Антивирусная программа
  • Обнаружение и нейтрализация атак на конечные точки (EDR)

Настройка прокси-сервера вручную с помощью команды netsh

Используйте команду netsh для настройки статического прокси на уровне системы.

Примечание

  • Это повлияет на все приложения, в том числе службы Windows, которые используют WinHTTP с прокси по умолчанию.
  1. Откройте командную строку с повышенными правами:

    1. В меню Пуск введите cmd.
    2. Щелкните правой кнопкой мыши пункт Командная строка и выберите команду Запуск от имени администратора.
  2. Введите следующую команду и нажмите клавишу ВВОД:

    netsh winhttp set proxy <proxy>:<port>
    

    Пример: netsh winhttp set proxy 10.0.0.6:8080

Чтобы сбросить прокси winhttp, введите следующую команду и нажмите клавишу ВВОД:

netsh winhttp reset proxy

Дополнительные сведения см. в статье Синтаксис команд, контексты и форматирование Netsh.

Включить доступ к URL-адресам службы Microsoft Defender для конечной точки на прокси-сервере

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

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


Таблица списка доменовОписание
Список URL-адресов Microsoft Defender для конечной точки для коммерческих клиентовТаблица определенных записей DNS для местоположений служб, географических местоположений и ОС для коммерческих клиентов.

Скачайте таблицу здесь.

Обратите внимание Microsoft Defender для конечной точки что в планах 1 и 2 используются одинаковые URL-адреса службы прокси-сервера.

Список URL-адресов Microsoft Defender для конечной точки для Gov/GCC/DoDТаблица определенных записей DNS для местоположений служб, географических местоположений и ОС для клиентов Gov/GCC/DoD.

Скачайте таблицу здесь.

Если на прокси-сервере или брандмауэре включено сканирование HTTPS (проверка SSL), исключите домены, перечисленные в приведенной выше таблице, из сканирования HTTPS. В брандмауэре откройте все URL-адреса, для которых значение столбца географии — WW. Для строк, в которых значение столбца географии не WW, откройте URL-адреса для конкретного расположения данных. Чтобы проверить параметр расположения данных, см. статью Проверка места хранения данных и обновление параметров хранения данных для Microsoft Defender для конечной точки..

Примечание

Для устройств с Windows под управлением версии 1803 или более ранней требуется settings-win.data.microsoft.com.

URL-адреса, содержащие v20, необходимы только в том случае, если у вас есть устройства Windows версии 1803 или более поздней. Например, us-v20.events.data.microsoft.com требуется для устройства с Windows версии 1803 или более поздней и подключенных в регионе хранилища данных США.

Если прокси-сервер или брандмауэр блокирует анонимный трафик как датчик Defender для конечной точки, и подключается из системного контекста, убедитесь, что анонимный трафик разрешен в ранее перечисленных URL-адресах.

Примечание

Корпорация Майкрософт не предоставляет прокси-сервер. Эти URL-адреса доступны через настроенный прокси-сервер.

Microsoft Monitoring Agent (MMA) — требования к прокси-серверу и брандмауэру для более старых версий клиента Windows или Windows Server

Информация в списке сведений о конфигурации прокси-сервера и брандмауэра требуется для связи с агентом Log Analytics (часто называемым агентом мониторинга Майкрософт) для предыдущих версий Windows, таких как Windows 7 SP1, Windows 8.1 и Windows Server 2008 R2*.



Ресурсы агентовПортыНаправлениеОбход проверки HTTP
*.ods.opinsights.azure.comПорт 443ИсходящийДа
*. oms.opinsights.azure.comПорт 443ИсходящийДа
*.blob.core.windows.netПорт 443ИсходящийДа
*.azure-automation.netПорт 443ИсходящийДа

Примечание

*Эти требования к соединению применяются к предыдущей версии Microsoft Defender для конечной точки Windows Server 2016 и Windows Server 2012 R2, для которой требуется MMA. Инструкции по подключению этих операционных систем с помощью нового единого решения см. в статье Подключение серверов Windows, а для перехода на новое единое решение в статье Сценарии миграции серверов в Microsoft Defender для конечной точки.

Примечание

В качестве облачного решения диапазон IP-адресов может изменяться. Рекомендуется перейти к параметру разрешения DNS.

Подтверждение требований к URL-адресу службы агента мониторинга Майкрософт (MMA)

См. следующие инструкции по устранению требования к подстановочным знакам (*) для конкретной среды при использовании агента мониторинга Майкрософт (MMA) для предыдущих версий Windows.

  1. Подключите предыдущую операционную систему с агентом мониторинг Майкрософт (MMA) к Defender для конечной точки (дополнительные сведения см. в статье Подключение предыдущих версий Windows в Defender для конечных точек и Подключение серверов Windows).

  2. Убедитесь, что компьютер успешно передает отчеты на портал Microsoft 365 Defender.

  3. Запустите средство TestCloudConnection.exe из папки «C:\Program Files\Microsoft Monitoring Agent\Agent», чтобы проверить соединение и получить необходимые URL-адреса для конкретной рабочей области.

  4. Полный список требований для вашего региона см. в списке URL-адресов конечных точек Microsoft Defender (см. Электронную таблицу URL-адресов служб).

Подстановочные знаки (*), используемые в конечных точках URL-адресов *.ods.opinsights.azure.com, *.oms.opinsights.azure.com и *.agentsvc.azure-automation.net, можно заменить конкретным ИД рабочей области. ИД рабочей области зависит от вашей среды и рабочей области. Его можно найти в разделе «Подключение» вашего клиента на портале Microsoft 365 Defender.

Конечную точку URL-адресов *.blob.core.windows.net можно заменить URL-адресами, показанными в разделе результатов проверки «Правило брандмауэра: *.blob.core.windows.net».

Примечание

В случае подключения через Microsoft Defender для облака можно использовать несколько рабочих областей. Вам потребуется выполнить процедуру TestCloudConnection.exe на подключенном компьютере из каждой рабочей области (чтобы определить, есть ли какие-либо изменения в URL-адресах *.blob.core.windows.net между рабочими областями).

Проверка соединения клиента с URL-адресами службы Microsoft Defender для конечной точки

Убедитесь в том, что настройка прокси-сервера выполнена успешно. Затем служба WinHTTP может обнаружить и передать данные через прокси-сервер в вашей среде, а прокси-сервер разрешит трафик на URL-адреса службы Defender для конечных точек.

  1. Загрузите средство анализатора клиента Microsoft Defender для конечной точки на компьютер, на котором работает датчик Defender для конечной точки. Для серверов более поздней версии используйте последнюю предварительную версию, доступную для скачивания Бета-версии средства анализатора клиента Microsoft Defender для конечной точки.

  2. Извлеките содержимое MDEClientAnalyzer.zip на устройство.

  3. Откройте командную строку с повышенными правами:

    1. В меню Пуск введите cmd.
    2. Щелкните правой кнопкой мыши пункт Командная строка и выберите команду Запуск от имени администратора.
  4. Введите следующую команду и нажмите клавишу ВВОД:

    HardDrivePath\MDEClientAnalyzer.cmd
    

    Замените HardDrivePath на путь, по которому было загружено средство MDEClientAnalyzer. Например:

    C:\Work\tools\MDEClientAnalyzer\MDEClientAnalyzer.cmd
    
  5. Средство создает и извлекает файл MDEClientAnalyzerResult.zip в папку для использования в HardDrivePath.

  6. Откройте MDEClientAnalyzerResult. txt и убедитесь в том, что вы выполнили действия по настройке прокси-сервера, чтобы включить обнаружение сервера и доступ к URL-адресам службы.

    Средство проверяет соединение URL-адресов службы Defender для конечной точки. Убедитесь, что клиент Defender для конечной точки настроен для взаимодействия. Средство выводит результаты в файл MDEClientAnalyzerResult.txt для каждого URL-адреса, который потенциально можно использоваться для общения с Defender для служб конечных точек. Например:

    Testing URL : https://xxx.microsoft.com/xxx
    1 - Default proxy: Succeeded (200)
    2 - Proxy auto discovery (WPAD): Succeeded (200)
    3 - Proxy disabled: Succeeded (200)
    4 - Named proxy: Doesn't exist
    5 - Command line proxy: Doesn't exist
    

Если один из вариантов подключения возвращает состояние (200), то клиент Defender для конечной точки может правильно взаимодействовать с проверенным URL-адресом, используя этот метод подключения.

Однако, если результаты проверки подключения указывают на сбой, отображается ошибка HTTP (см. Коды состояния HTTP). Затем вы можете использовать URL-адреса в таблице, приведенной в статье Разрешение доступа к URL-адресам службы Defender для конечной точки на прокси-сервере. Доступные для использования URL-адреса будут зависеть от региона, выбранного во время процедуры подключения.

Примечание

Проверки соединения с облаком с помощью средства анализатора соединения несовместимы с правилом сокращения направлений атак Блокировать создание процессов из команд PSExec и WMI. Необходимо временно отключить это правило, чтобы запустить средство подключения. Кроме того, при запуске анализатора можно временно добавить исключения ASR.

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

  • Использование параметров групповой политики для настройки и управления антивирусной программой в Microsoft Defender
  • Подключение устройств Windows
  • Устранение неполадок подключения Microsoft Defender для конечных точек

Настройка обратного прокси-сервера для работы с ArcGIS Notebook Server—ArcGIS Notebook Server

Обратный прокси-сервер – это компьютер, установленный в пределах пограничной сети (так называемой демилитаризованной зоны [DMZ] или промежуточной подсети), который обрабатывает запросы из Интернета и перенаправляет их на компьютеры внутренней сети. Перенаправляя запросы, обратный прокси-сервер маскирует идентичность компьютеров, находящихся за брандмауэром организации, защищая таким образом внутренние компьютеры от прямых атак со стороны пользователей интернета. На обратном прокси-сервере можно реализовать дополнительные функции безопасности, позволяющие еще больше защитить внутреннюю сеть от пользователей извне.

Вы можете настроить свой сайт ArcGIS Notebook Server на использование обратного прокси-сервера вашей организации. Является необязательным. Если ваша организация еще не использует обратный прокси-сервер или вы не хотите настраивать его использование для своего сайта ArcGIS Notebook Server, перейдите к настройке своего сайта с порталом.

Добавление ArcGIS Notebook Server к обратному прокси-серверу

Обратный прокси-сервер организации нужно настроить для обмена данными с ArcGIS Web Adaptor, добавив соответствующие URL-адреса в директивы прокси.

Например, если вы используете Apache в качестве обратного прокси-сервера, вам потребуется добавить URL ArcGIS Web Adaptor в ProxyPassдирективы в файле конфигурации веб-сервера Apachehttpd. conf:

ProxyPass /notebook https://notebookserver.domain.com/notebook
ProxyPassReverse /notebook https://notebookserver.domain.com/notebook

Задание свойства WebContextURL

Если вы используете обратный прокси-сервер, и окончание URL вашего сайта отличается от заданного по умолчанию /arcgis (все буквы строчные), то вам следует также задать для ArcGIS Notebook Server параметр WebContextURL. Это позволит ArcGIS Notebook Server построить корректные URL-адреса для всех ресурсов, которые он направляет конечному пользователю.

Воспользуйтесь свойством WebContextURL, чтобы задать URL ArcGIS Notebook Server, соответствующий ArcGIS Web Adaptor (например, /notebook).

Чтобы изменить свойство WebContextURL, сделайте следующее:
  1. Откройте ArcGIS Notebook Server Administrator Directory по адресу https://notebookserver.domain.com:11443/arcgis/admin и войдите как пользователь с правами администратора.
  2. Щелкните система > свойства > обновить.
  3. В текстовом окне Свойства вставьте следующий JSON, заменив собственный URL ArcGIS Notebook Server, который видят пользователи за пределами брандмауэра вашей организации.
  4. Щёлкните Обновить.
  5. Перезапустите ArcGIS Notebook Server. В Linux выполните скрипты stopnotebookserver.sh и startnotebookserver.sh, которые можно найти в установочной директории.

Заголовки обратного прокси-сервера и ArcGIS Notebook Server

При интеграции обратного прокси-сервера с ArcGIS Web Adaptor нужно задать следующее свойство, установленное в заголовке, который был отправлен обратным прокси-сервером:

X-Forwarded-Host=<FQDN of reverse proxy server>

Если в заголовке указан этот параметр, ArcGIS Web Adaptor будет возвращать запросы обратному прокси-серверу, которые соответствуют URL-адресу обратного прокси-сервера. Так, запрос к ArcGIS Notebook Server Services Directory (https://reverseproxy.domain.com/arcgis/rest/services) будет возвращен клиенту в виде того же URL-адреса.

Если это свойство заголовка X-Forwarded-Host установлено не будет, ArcGIS Web Adaptor может возвратить URL внутреннего компьютера, на который был направлен запрос, например, https://notebookserver.domain.com/arcgis/rest/services вместо https://reverseproxy.domain.com/arcgis/rest/services. Это проблематично, т.к. клиенты не смогут получить доступ к этому URL-адресу (обычно выглядит как ошибка 404 в браузере). Также клиент получит некоторые сведения о внутреннем компьютере.

При устранении проблем связи между клиентами и ArcGIS Web Adaptor, рекомендуется задать свойство X-Forwarded-Host заголовка обратного прокси-сервера, т.к. это обычная причина коммуникационных сбоев. Способ задания заголовка зависит от реализации обратного прокси-сервера. Например, в Apache это достигается с помощью директивы ProxyPreserveHost On, задаваемой в конфигурации:

...
ProxyPreserveHost On
ProxyPass /notebook https://notebookserver.domain.com/notebook
ProxyPassReverse /notebook https://notebookserver. domain.com/notebook
...

Указания по передаче оригинального заголовка хоста можно найти в документации для вашего прокси-сервера.

Пример: Настройка Apache и Tomcat с ArcGIS Notebook Server

Вы можете настроить для обратного прокси-сервера с ArcGIS Notebook Server любой веб-сервер. Ниже описаны действия, которые необходимо выполнить для настройки для обратного прокси-сервера Apache HTTP Server и Apache Tomcat. Это только один из вариантов конфигурации обратного прокси-сервера, а не обязательные инструкции.

В этом примере рабочего процесса используются следующие программы и версии, установленные на том же компьютере, что и ArcGIS Notebook Server:

  • Red Hat Enterprise Linux Server 7.5
  • Apache HTTP Server , httpd 2.4.6
  • Apache Tomcat 9.0.20 / OpenJDK 1.8.0

Эти компоненты программного обеспечения могут работать и в распределенной архитектуре — с ArcGIS Notebook Server, Apache HTTP Server и Apache Tomcat на отдельных компьютерах.

Следующие шаги нужно выполнить после того, как будут установлены и настроены ArcGIS Notebook Server и Mirantis Container Runtime, а экземпляр ArcGIS Web Adaptor будет установлен на веб-сервере Java, но не был настроен.

  1. Установите Tomcat для его запуска через порт 8080 через протокол Apache JServ Protocol (AJP), который включен по умолчанию.
  2. Поскольку порт 8443 по умолчанию в Tomcat не включен, включите SSL и добавьте коннектор для порта 8443.
  3. Разверните файл arcgis.war для имеющегося ArcGIS Web Adaptor (Java Platform) в Tomcat.

    К примеру, URL ArcGIS Web Adaptor — это /nbs.

  4. Установите Apache HTTP Server .
  5. Проверьте ваш сертификат SSL для Apache HTTP Server в файле ssl.conf.
  6. Измените файл Apache httpd.conf, используя правила прокси (как обсуждалось в предыдущем разделе) для прокси-вызовов ArcGIS Web Adaptor на порт AJP Tomcat.

    ProxyPass /nbs ajp://myserver.acme.com:8009/nbs
    ProxyPassReverse /nbs ajp://myserver.acme.com:8009/nbs

  7. Для файла ssl.conf Apache HTTP Server используйте правила прокси для SSL прокси-вызовов ArcGIS Web Adaptor к порту AJP Tomcat. Также важно проксировать запросы WebSocket, которые используются ArcGIS Notebook Server. Если запросы WebSocket не обрабатываются должным образом, ArcGIS Notebooks не будут корректно открываться.

    SSLProxyEngine On
    # Use RewriteEngine to handle WebSocket connection upgrades
    RewriteEngine On
    RewriteCond %{HTTP:Connection} Upgrade [NC]
    RewriteCond %{HTTP:Upgrade} websocket [NC]
    RewriteRule /(.*) wss://myserver.acme.com:8443/$1 [P,L]
    <Location "/nbs">
        ProxyPreserveHost On
        ProxyPass ajp://myserver.acme.com:8009/nbs
        ProxyPassReverse ajp://myserver.acme.com:8009/nbs
    </Location>

  8. Перезапустите сервис Apache HTTP Server , чтобы изменения конфигурации вступили в силу.
  9. Настройте ArcGIS Web Adaptor с ArcGIS Notebook Server.

Отзыв по этому разделу?

Как настроить прокси-сервер HTTPS за пять простых шагов

Ваш цифровой посредник

Конфиденциальность — это вечная горячая тема в Интернете. Многие интернет-пользователи понятия не имеют, как защитить свою информацию, но опытные веб-профессионалы могут реализовать прокси-сервер HTTPS для выполнения этой работы.

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

В этой части мы сначала ответим на вопрос: что такое прокси-сервер? Затем мы обсудим, что вам нужно для его запуска и запуска, прежде чем показать вам, как настроить собственный прокси-сервер. Давайте начнем!

Что такое прокси-сервер (и зачем он вам нужен)

Говоря простым языком, прокси-сервер действует как «посредник» между вашим браузером и посещаемым вами веб-сайтом. Это может быть сложно внутри, но вам не нужно слишком много знать о том, как это работает, чтобы выполнять повседневные задачи. Вы должны знать, что, как и в случае с любым другим веб-сайтом, данные, которые передает прокси-сервер, также могут быть зашифрованы с помощью HTTPS.

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

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

Имея это в виду, давайте посмотрим, что вам нужно для начала работы.

Основные элементы, необходимые для настройки прокси-сервера HTTPS

Хотя на первый взгляд настройка прокси-сервера HTTPS может показаться дорогостоящей, на самом деле ее реализация может быть довольно дешевой. Первый элемент, который вам понадобится, — это подходящий веб-хост со следующими характеристиками:

  • Сервер Apache с установленным как минимум PHP 5, а также поддержкой cURL.
  • Доступ для записи к public_html .
  • Возможность настроить прокси.

(К счастью, планы хостинга GoDaddy Web Hosting Plus, VPS и выделенного сервера соответствуют этим требованиям.)

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

Наконец, вам понадобится подходящий прокси-скрипт. Обычно они написаны на PHP, и быстрый поиск в Google обнаружит множество вариантов. Однако будьте осторожны: бесплатные скрипты иногда выпускаются разработчиками со скрытыми мотивами, поэтому вам следует тщательно взвесить свои возможности. Тем не менее, и Glype и Squid подходящие бесплатные прокси-скрипты, а последний также является отличным решением для кэширования прокси-серверов.

Squid — один из лучших бесплатных кеширующих прокси.

Пять шагов для настройки прокси-сервера HTTPS

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

1. Настройте субдомен с SSL

Настройте субдомен и убедитесь, что ваш SSL-сертификат запущен и работает для этого конкретного URL.

2. Загрузите прокси-скрипт

Загрузите выбранный прокси-скрипт и при необходимости распакуйте сжатый архивный файл.

3. Загрузить файлы в папку поддомена

Загрузить файлы по протоколу передачи файлов (FTP) в папку поддомена. Если у вас нет предпочтительного FTP-менеджера, мы рекомендуем FileZilla.

4. Настройте параметры администратора субдомена

Перейдите к экрану администрирования субдомена прокси (обычно добавляя свой URL-адрес с admin.php) и настройте параметры в соответствии с вашими требованиями и выбранным скриптом прокси.

5. Проверьте наличие сигналов безопасности

Наконец, убедитесь, что вы видите индикаторы защищенного веб-сайта: зеленый замок и обозначение https:// в строке браузера.

Это все, что нужно. Если все хорошо, у вас должен быть работающий, защищенный прокси-сервер HTTPS примерно через 15 минут!

Заключение

Хотя конфиденциальность в Интернете остается актуальной проблемой, не существует быстрого и простого способа защитить ваши действия в Интернете, не ограничивая при этом ваши возможности. Однако для опытного веб-профессионала подключение к HTTPS через прокси-сервер, вероятно, является лучшим выбором.

В этой статье мы обсудили, что такое прокси-сервер HTTPS, и объяснили, зачем он вам нужен. Затем мы познакомили вас с элементами, которые вам понадобятся, включая правильный хостинг и подходящий PHP-скрипт, прежде чем, наконец, показать вам, как настроить прокси-сервер. Следуя нашим советам, вы сможете приступить к работе уже через несколько минут.


Встречайте 27-часовой день.

Мы создали Hub от GoDaddy Pro, чтобы сэкономить ваше время. Много времени. Наши участники сообщают, что экономят в среднем три часа каждый месяц на каждом клиентском веб-сайте, который они обслуживают. Добавляете ли вы такое время в свой день?

Бесплатная регистрация

Изображение предоставлено: VisualHunt.com

mitmproxy — интерактивный HTTPS-прокси

mitmproxy — интерактивный HTTPS-прокси

Скачать установщик Windows

Получить из магазина Microsoft

Скачать двоичные файлы Linux

 варить установить mitmproxy
                                      копия  

Докер Хаб Больше загрузок Скачать

Примечания к выпуску (v8. 1) – Другие загрузки

Командная строка

Веб-интерфейс

Python API

Командная строка

mitmproxy — ваш швейцарский армейский нож для отладки, тестирования, измерения конфиденциальности и тестирование на проникновение. Его можно использовать для перехвата, проверки, изменения и воспроизведения веб-трафика, такого как в качестве HTTP/1, HTTP/2, WebSockets или любые другие протоколы, защищенные SSL/TLS. Вы можете украшать и декодировать различные типы сообщений, начиная от HTML к протобуф, перехватывать определенные сообщения на лету, модифицируйте их, прежде чем они достигнут места назначения, и воспроизведите их клиенту или серверу позже.

Веб-интерфейс

Используйте основные функции mitmproxy в графическом интерфейсе с митмвеб . Вам нравится DevTools Chrome? митмвеб дает вам аналогичный опыт для любого другого приложения или устройства, плюс дополнительные функции, такие как перехват и воспроизведение запросов.

addon.py

 из http импорта mitmproxy
Запрос def (поток: http. HTTPFlow):
    # перенаправление на другой хост
    если flow.request.pretty_host == "example.com":
        flow.request.host = "mitmproxy.org"
    # ответ от прокси
    elif flow.request.path.endswith("/brew"):
    поток.ответ = http.Response.make(
            418,  б  "Я чайник",
        ) 

API Python

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

Последний Твиты

Мощная экосистема

Mitmproxy поддерживает ряд известных проектов с открытым исходным кодом:

  • pathod, родственный проект mitmproxy к ремесло искаженные запросы HTTP/1, HTTP/2 и WebSocket.
  • нетограф, а служба анализа и измерения конфиденциальности.
  • тампер, расширение Chrome, которое Давайте ты редактировать удаленные файлы локально.
  • bdfproxy, BackDoorFactory интеграция к исправлять бинарники с оболочкой код на лету.
  • вдохновитель, проект от ustwo, который предлагает легкий способ издеваться над API или веб-сайтом

Открытый исходный код

Mitmproxy является бесплатным и открытым исходным кодом. Станьте частью сообщества mitmproxy а также помогите улучшить ваш любимый HTTPS-прокси.

Гитхаб Задавать вопросы Чат разработчиков

Создание прокси-сервера HTTPS в Python

Я пытаюсь создать прокси-сервер HTTPS в Python, я создал следующий скрипт, который работает с HTTP.

 #!/usr/bin/env python3
# кодировка=utf-8
импортный сокет
из потокового импорта Thread
Прокси класса:
    def __init__(я, порт=3000):
        self. port = порт
        self.proxy = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        self.proxy.setsockopt(сокет.SOL_SOCKET, сокет.SO_REUSEADDR, 1)
        self.buffer_size = 4096
    деф запустить (самостоятельно):
        self.proxy.bind(("0.0.0.0", self.port))
        self.proxy.listen(100)
        print(" * Прокси-сервер работает на порту {}".format(self.port))
        пока верно:
            клиент, адрес = self.proxy.accept()
            print(" => {}:{}".format(addr[0], addr[1]))
            Thread (target = self.handle_request, args = (client,)). start ()
    def handle_request (я, клиент):
        голова = self.parse_head (client.recv (self.buffer_size))
        заголовки = голова["заголовки"]
        запрос = "{}\r\n".format(head["meta"])
        для ключа, значение в headers.items():
            запрос += "{}: {}\r\n".format(ключ, значение)
        запрос += "\r\n"
        если "длина содержимого" в заголовках:
            в то время как len(head["chunk"]) < int(headers["длина содержимого"]):
                head["chunk"] += client. recv(self.buffer_size)
        запрос = запрос. кодировать () + голова ["кусок"]
        порт = 80
        пытаться:
            tmp = head["meta"].split(" ")[1].split("://")[1].split("/")[0]
        кроме IndexError:
            клиент.закрыть()
            возвращаться
        если tmp.find(":") > -1:
            порт = int(tmp.split(":")[1])
        ответ = self.send_to_server (заголовки ["хост"], порт, запрос)
        client.sendall(ответ)
        клиент.закрыть()
    def send_to_server (я, хост, порт, данные):
        сервер = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        server.connect((socket.gethostbyname(хост), порт))
        server.sendall(данные)
        голова = self.parse_head (server.recv (4096))
        заголовки = голова["заголовки"]
        ответ = "{}\r\n".format(head["meta"])
        для ключа, значение в headers.items():
            ответ += "{}: {}\r\n".format(ключ, значение)
        ответ += "\r\n"
        если "длина содержимого" в заголовках:
            в то время как len(head["chunk"]) < int(headers["длина содержимого"]):
                head["chunk"] += server. recv(self.buffer_size)
        ответ = ответ. кодировать () + голова ["кусок"]
        сервер.закрыть()
        вернуть ответ
    def parse_head (я, head_request):
        узлы = head_request.split(b"\r\n\r\n")
        головы = узлы [0].split(b"\r\n")
        мета=heads.pop(0).decode("utf-8")
        данные = {
            "мета": мета,
            "заголовки": {},
            "кусок": б""
        }
        если len(узлы) >= 2:
            данные["кусок"] = узлы[1]
        для головы в голове:
            штук = голова.split(b": ")
            ключ = штук.поп(0).декодировать("utf-8")
            если key.startswith("Соединение: "):
                данные["заголовки"][key.lower()] = "закрыть"
            еще:
                data["headers"][key.lower()] = b": ".join(pieces).decode("utf-8")
        возвращаемые данные
если __name__ == "__main__":
    прокси = Прокси(3001)
    прокси.run()
 

Я никогда не работал с SSL в Python, поэтому использовал модуль ssl для создания сокета HTTPS.

 #!/usr/bin/env python3
# кодировка=utf-8
импортный сокет
импорт SSL
из потокового импорта Thread
Прокси класса:
    def __init__(я, порт=3000):
        self.port = порт
        self.s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        self.proxy = ssl.wrap_socket(self.s, ssl_version=ssl.PROTOCOL_TLSv1, ciphers="ADH-AES256-SHA")
        self.buffer_size = 4096
    деф запустить (самостоятельно):
        self.proxy.bind(("0.0.0.0", self.port))
        self.proxy.listen(100)
        print(" * Прокси-сервер работает на порту {}".format(self.port))
        пока верно:
            клиент, адрес = self.proxy.accept()
            print(" => {}:{}".format(addr[0], addr[1]))
            Thread (target = self.handle_request, args = (client,)). start ()
    def handle_request (я, клиент):
        голова = self.parse_head (client.recv (self.buffer_size))
        заголовки = голова["заголовки"]
        запрос = "{}\r\n".format(head["meta"])
        для ключа, значение в headers.items():
            запрос += "{}: {}\r\n". format(ключ, значение)
        запрос += "\r\n"
        если "длина содержимого" в заголовках:
            в то время как len(head["chunk"]) < int(headers["длина содержимого"]):
                head["chunk"] += client.recv(self.buffer_size)
        запрос = запрос. кодировать () + голова ["кусок"]
        порт = 80
        пытаться:
            tmp = head["meta"].split(" ")[1].split("://")[1].split("/")[0]
        кроме IndexError:
            клиент.закрыть()
            возвращаться
        если tmp.find(":") > -1:
            порт = int(tmp.split(":")[1])
        ответ = self.send_to_server (заголовки ["хост"], порт, запрос)
        client.sendall(ответ)
        клиент.закрыть()
    def send_to_server (я, хост, порт, данные):
        сервер = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        server.connect((socket.gethostbyname(хост), порт))
        server.sendall(данные)
        голова = self.parse_head (server.recv (4096))
        заголовки = голова["заголовки"]
        ответ = "{}\r\n". format(head["meta"])
        для ключа, значение в headers.items():
            ответ += "{}: {}\r\n".format(ключ, значение)
        ответ += "\r\n"
        если "длина содержимого" в заголовках:
            в то время как len(head["chunk"]) < int(headers["длина содержимого"]):
                head["chunk"] += server.recv(self.buffer_size)
        ответ = ответ. кодировать () + голова ["кусок"]
        сервер.закрыть()
        вернуть ответ
    def parse_head (я, head_request):
        узлы = head_request.split(b"\r\n\r\n")
        головы = узлы [0].split(b"\r\n")
        мета=heads.pop(0).decode("utf-8")
        данные = {
            "мета": мета,
            "заголовки": {},
            "кусок": б""
        }
        если len(узлы) >= 2:
            данные["кусок"] = узлы[1]
        для головы в голове:
            штук = голова.split(b": ")
            ключ = штук.поп(0).декодировать("utf-8")
            если key.startswith("Соединение: "):
                данные["заголовки"][key.lower()] = "закрыть"
            еще:
                data["headers"][key. lower()] = b": ".join(pieces).decode("utf-8")
        возвращаемые данные
если __name__ == "__main__":
    прокси = Прокси(3001)
    прокси.run()
 

Но я получаю следующую ошибку.

 * Прокси-сервер работает на порту 3001
Traceback (последний последний вызов):
  Файл ".\proxy.py", строка 98, в 
    прокси.run()
  Файл ".\proxy.py", строка 22, в работе
    клиент, адрес = self.proxy.accept()
  Файл "C:\Users\anyms\AppData\Local\Programs\Python\Python38-32\lib\ssl.py", строка 1355, в accept
    новости = self.context.wrap_socket (новости,
  Файл "C:\Users\anyms\AppData\Local\Programs\Python\Python38-32\lib\ssl.py", строка 500, в wrap_socket
    вернуть self.sslsocket_class._create(
  Файл "C:\Users\anyms\AppData\Local\Programs\Python\Python38-32\lib\ssl.py", строка 1040, в _create
    self.do_рукопожатие ()
  Файл "C:\Users\anyms\AppData\Local\Programs\Python\Python38-32\lib\ssl.py", строка 1309, в do_handshake
    self._sslobj.do_handshake()
ssl.SSLError: [SSL: HTTPS_PROXY_REQUEST] HTTPS-прокси-запрос (_ssl. c:1108)
 

О HTTPS-Proxy

Содержание ● Справка по Fireware

HTTPS (протокол передачи гипертекста через протокол защищенных сокетов, или HTTP через SSL) — это протокол запроса/ответа между клиентами и серверами, используемый для безопасной связи и транзакций. Вы можете использовать HTTPS-прокси для защиты веб-сервера, защищенного вашим Firebox или Firebox, или для проверки HTTPS-трафика, запрашиваемого клиентами в вашей сети. По умолчанию, когда HTTPS-клиент запускает запрос, он устанавливает TCP-соединение (протокол управления передачей) через порт 443. Большинство HTTPS-серверов прослушивают запросы через порт 443.

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

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

Если клиент или сервер HTTPS использует порт, отличный от порта 443 в вашей организации, мы рекомендуем вам создать пользовательскую политику для нужного вам порта. Используйте HTTPS-прокси в качестве шаблона для создания этой политики. Дополнительные сведения см. в разделе Добавление политики прокси-сервера в вашу конфигурацию.

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

При настройке политики прокси необходимо выбрать действие прокси, соответствующее политике. Для политики прокси, которая разрешает подключения от ваших внутренних клиентов к Интернету, используйте Клиент действие прокси. Для политики прокси, которая разрешает подключения к вашим внутренним серверам из Интернета, используйте действие прокси Server .

Предопределенные действия прокси-сервера с добавлением Standard к имени действия прокси-сервера включают рекомендуемые стандартные настройки, отражающие последние тенденции сетевого трафика в Интернете.

Важно выбрать правильное действие прокси для входящих и исходящих соединений HTTPS, чтобы прокси использовал соответствующий сертификат. В действиях прокси-сервера HTTPS-клиента используется исходящий сертификат Proxy Authority CA. Действия прокси-сервера HTTPS-Server используют сертификат веб-сервера Proxy Server.

В Fireware версии 11.12 и выше мастер веб-настройки и мастер быстрой настройки WSM автоматически добавляют политику HTTPS-прокси, которая использует действие прокси Default-HTTPS-Client . Действие прокси-сервера Default-HTTPS-Client основано на действии прокси-сервера HTTPS-Client.Standard и включает службы подписки, которые были лицензированы в функциональном ключе при запуске мастера установки. Если вы добавите новую политику HTTPS-прокси, Действие прокси-сервера Default-HTTPS-Client может быть лучшим выбором, чем действие прокси-сервера HTTPS-Client.Standard . Дополнительные сведения о прокси-действии Default-HTTPS-Client см. в разделе Политики и параметры мастера установки по умолчанию.

Настройка прокси-сервера HTTPS

В этих разделах описываются вкладки конфигурации прокси-сервера HTTPS в веб-интерфейсе Fireware.

Web UI Help,en-US.Web UI Online,en-US.Web UI PDF»> Вкладка «Настройки»

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

  • Соединения — Укажите, являются ли соединения Разрешенными , Запрещенными или Запрещенными (сброс отправки) и определите, кто отображается в списке От и
    2 До 29083вкладку 0083 определения прокси). См. раздел Установка правил доступа для политики.
  • Вы также можете настроить статический NAT или балансировку нагрузки сервера. См. разделы Настройка статического NAT (SNAT) и Настройка балансировки нагрузки сервера.
  • Чтобы определить параметры ведения журнала для политики, настройте параметры в разделе Ведение журнала .
    Дополнительные сведения см. в разделе Настройка параметров ведения журнала и уведомлений.
  • Если в раскрывающемся списке Connections are установить значение Denied или Denied (отправить сброс) , вы можете заблокировать сайты, которые пытаются использовать HTTPS.
    Дополнительные сведения см. в разделе Временная блокировка сайтов с помощью параметров политики.
  • Чтобы изменить тайм-аут простоя, установленный Firebox, Firebox или сервером аутентификации, см. раздел Установка пользовательского тайм-аута простоя.
  • Чтобы включить квоты пропускной способности и времени, см. О квотах.

Вкладка SD-WAN

На вкладке SD-WAN можно выбрать применение действия SD-WAN к политике. Вы также можете добавить новое действие SD-WAN. Дополнительные сведения о маршрутизации SD-WAN см. в разделе О SD-WAN.

SD-WAN заменяет маршрутизацию на основе политик в Fireware v12.3 или выше.

Вкладка управления приложениями

Если на вашем Firebox включен Application Control, вы можете установить действие, которое этот прокси использует для Application Control.

  1. Выберите вкладку Application Control .
  2. В раскрывающемся списке Действие управления приложениями выберите действие управления приложениями, которое будет использоваться для этой политики, или создайте новое действие.
  3. (Необязательно) Измените настройки Application Control для выбранного действия.
  4. Нажмите Сохранить .

Дополнительные сведения см. в разделе Включение контроля приложений в политике.

Вкладка «Геолокация»

Если геолокация включена в вашем Firebox, на вкладке «Геолокация» вы можете выбрать действие «Геолокация» для этого прокси. Вы также можете добавить новое действие геолокации. Дополнительные сведения о геолокации см. в разделе Настройка геолокации.

Чтобы применить действие Geolocation в политике:

  1. Выберите вкладку Geolocation .
  2. В раскрывающемся списке Действие управления геолокацией выберите действие Геолокация.
    Или, чтобы создать новое действие геолокации, нажмите Добавить .
  3. Щелкните Сохранить .

Вкладка «Геолокация» доступна в Fireware 12. 3 или выше.

Вкладка «Управление трафиком»

На вкладке «Управление трафиком» можно выбрать действие «Управление трафиком» для политики. Вы также можете создать новое действие «Управление трафиком». Дополнительные сведения о действиях по управлению трафиком см. в разделах Определение действия по управлению трафиком и Добавление действия по управлению трафиком в политику.

Чтобы применить действие управления трафиком в политике:

  1. Выберите вкладку Управление трафиком .
  2. В раскрывающемся списке Действия по управлению трафиком выберите действие по управлению трафиком.
    Или, чтобы создать новое действие по управлению трафиком, выберите Создать новый и настройте параметры, как описано в разделе Определение действия по управлению трафиком.
  3. Щелкните Сохранить .

Вкладка «Действие прокси»

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

Чтобы настроить действие прокси:

  1. Web UI Online,en-US.Web UI PDF»> Выберите вкладку Действие прокси .
  2. В раскрывающемся списке Proxy Action выберите действие прокси, которое будет использоваться для этой политики.
    Для получения информации о действиях прокси см. О действиях прокси.
  3. Щелкните Сохранить .

Для прокси-сервера HTTPS можно настроить следующие категории параметров действия прокси-сервера:

  • Прокси-сервер HTTPS: общие настройки
  • Web UI Help,en-US.Web UI Online,en-US.Web UI PDF»> HTTPS-прокси: проверка содержимого
  • HTTPS-прокси: правила доменного имени
  • HTTPS-прокси: WebBlocker
  • HTTPS-прокси: тревога прокси-сервера

Вкладка «Планирование»

Web UI Help,en-US.Web UI Online,en-US.Web UI PDF»> На вкладке «Планирование» можно указать рабочее расписание для политики. Вы можете выбрать существующее расписание или создать новое расписание.

  1. Выберите вкладку Планирование .
  2. В раскрывающемся списке Schedule Action выберите расписание.
    Или, чтобы создать новое расписание, выберите Создайте новый и настройте параметры, как описано в разделах Создание расписаний для действий Firebox и Установка рабочего расписания.
  3. Щелкните Сохранить .

Web UI Help,en-US.Web UI Online,en-US.Web UI PDF»> Вкладка Advanced

Вкладка Advanced содержит настройки параметров NAT, QoS, multi-WAN и ICMP.

Чтобы отредактировать или добавить комментарий к этой конфигурации политики прокси, введите комментарий в поле Комментарий текстовое поле.

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

  • Применить правила NAT
  • Установка длительности закрепленного соединения для политики
  • Web UI Help,en-US.Web UI Online,en-US.Web UI PDF»> Установка обработки ошибок ICMP
  • Установка пределов скорости соединения
  • Включить маркировку QoS и приоритизацию в политике

В этих разделах описываются вкладки конфигурации HTTPS-прокси в диспетчере политик.

Вкладка «Политика 9»0049

Чтобы установить правила доступа и другие параметры, выберите вкладку Политика .

  • Соединения HTTPS-прокси — Укажите, являются ли соединения Разрешенными , Запрещенными или Запрещенными (сброс отправки) и определите, кто отображается в списке От и до 8008 в Политике 9008 вкладку определения прокси). См. раздел Установка правил доступа для политики.
  • Направьте исходящий трафик с помощью > SD-WAN — см. О SD-WAN.
  • Включить контроль приложений — включить контроль приложений и выбрать действие контроля приложений, которое будет использоваться для этой политики. Дополнительные сведения см. в разделе Включение контроля приложений в политике.
  • WSM Help,en-US.WSM Online,en-US.WSM PDF»> Включить геолокацию — Включить геолокацию и выбрать действие геолокации, которое будет использоваться для этой политики. Дополнительные сведения см. в разделе Настройка геолокации.
  • Включить IPS — Включить IPS для этой политики. Дополнительные сведения см. в разделе Включение или отключение IPS для политики.
  • Вы также можете настроить статический NAT или настроить балансировку нагрузки сервера. См. разделы Настройка статического NAT (SNAT) и Настройка балансировки нагрузки сервера.
  • Действие прокси — выберите действие прокси, которое будет использоваться для этой политики. Вы также можете редактировать наборы правил для действий прокси.
  • Чтобы включить квоты пропускной способности и времени, см. О квотах.

Вкладка свойств

На вкладке Свойства можно настроить следующие параметры:

  • Чтобы изменить или добавить комментарий к этой конфигурации политики, введите комментарий в текстовом поле Комментарий .
  • Чтобы определить параметры ведения журнала для политики, щелкните Регистрация .
    Дополнительные сведения см. в разделе Настройка параметров ведения журнала и уведомлений.
  • Если вы установите для раскрывающегося списка HTTPS-прокси-соединения (на вкладке Политика ) значение Запрещено или Запрещено (сброс отправки) , вы можете заблокировать сайты, которые пытаются использовать HTTPS.
    Дополнительные сведения см. в разделе Временная блокировка сайтов с помощью параметров политики.
  • Чтобы изменить тайм-аут простоя, установленный Firebox или Firebox, или сервером аутентификации, см. «Установка пользовательского тайм-аута простоя».

Вкладка «Дополнительно»

WSM Help,en-US.WSM Online,en-US.WSM PDF»>  Вы также можете настроить следующие параметры в определении прокси-сервера:

  • Установить расписание работы
  • Добавление действия управления трафиком в политику
  • Установка обработки ошибок ICMP
  • Применить правила NAT (по умолчанию во всех политиках включены NAT 1 к 1 и динамическое NAT.)
  • WSM Help,en-US.WSM Online,en-US.WSM PDF»> Установка пределов скорости соединения
  • Включить маркировку QoS и приоритизацию в политике
  • Установка длительности закрепленного соединения для политики

Настройка действия прокси-сервера

Вы можете выбрать предопределенное действие прокси-сервера или настроить для этого прокси-сервера пользовательское действие прокси-сервера. Дополнительные сведения о настройке действий прокси см. в разделе О действиях прокси.

Для прокси-сервера HTTPS можно настроить следующие категории параметров действия прокси-сервера:

  • Прокси-сервер HTTPS: общие настройки
  • HTTPS-прокси: проверка содержимого
  • HTTPS-прокси: правила доменного имени
  • HTTPS-прокси: WebBlocker
  • WSM Help,en-US.WSM Online,en-US.WSM PDF»> Прокси- и AV-тревоги

Если включить WebBlocker в действии прокси-сервера HTTPS, но не включить проверку контента, пользователи не увидят сообщение об отказе, когда контент отклонен WebBlocker. Без проверки контента защита менее тщательна. WebBlocker может видеть только общее имя или информацию о домене имени сервера, но не URL-адрес. Дополнительные сведения см. в статье HTTPS-прокси: WebBlocker.

См. также

О политиках прокси и ALG

Прокси-серверы и туннелирование — HTTP

При перемещении по различным сетям Интернета прокси-серверы и HTTP-туннели облегчают доступ к контенту во всемирной паутине. Прокси-сервер может находиться на локальном компьютере пользователя или в любом месте между компьютером пользователя и целевым сервером в Интернете. На этой странице описаны некоторые основные сведения о прокси-серверах и представлены некоторые параметры конфигурации.

Существует два типа прокси: прямые прокси (или туннель, или шлюз) и обратные прокси (используются для контроля и защиты доступа к серверу для балансировки нагрузки, аутентификации, расшифровки или кэширования).

Прямой прокси, или шлюз, или просто «прокси» предоставляет услуги прокси клиенту или группе клиентов. Вероятно, в Интернете существуют сотни тысяч открытых прокси-серверов. Они хранят и пересылают интернет-сервисы (такие как DNS или веб-страницы), чтобы уменьшить и контролировать пропускную способность, используемую группой.

Прокси-серверы пересылки также могут быть анонимными прокси-серверами и позволять пользователям скрывать свой IP-адрес при просмотре веб-страниц или использовании других интернет-сервисов. TOR (The Onion Router) направляет интернет-трафик через несколько прокси для обеспечения анонимности.

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

  • Балансировка нагрузки: распределить нагрузку на несколько веб-серверов,
  • Кэшировать статическое содержимое: разгрузить веб-серверы за счет кэширования статического содержимого, например изображений,
  • Сжатие: сжимайте и оптимизируйте содержимое для ускорения загрузки.

Прокси-серверы могут отображать запросы так, как если бы они исходили от IP-адреса прокси-сервера. Это может быть полезно, если прокси-сервер используется для обеспечения анонимности клиента, но в других случаях информация из исходного запроса теряется. IP-адрес исходного клиента часто используется для отладки, статистики или создания содержимого, зависящего от местоположения. Обычный способ раскрыть эту информацию — использовать следующие заголовки HTTP:

Стандартизированный заголовок:

Перенаправлено

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

Или стандартные версии де-факто:

X-Forwarded-For Нестандартный

Определяет исходные IP-адреса клиента, подключающегося к веб-серверу через прокси-сервер HTTP или балансировщик нагрузки.

X-переадресованный хост Нестандартный

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

X-Forwarded-Proto Нестандартный

определяет протокол (HTTP или HTTPS), который клиент использовал для подключения к вашему прокси-серверу или балансировщику нагрузки.

Для предоставления информации о самом прокси (не о подключающемся к нему клиенте) Можно использовать заголовок Via .

Через

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

Туннелирование передает данные частной сети и информацию протокола через общедоступную сеть путем инкапсуляции данных. HTTP-туннелирование использует протокол более высокого уровня (HTTP) для передачи протокола более низкого уровня (TCP).

Протокол HTTP определяет метод запроса, называемый ПОДКЛЮЧИТЬ . Он запускает двустороннюю связь с запрошенным ресурсом и может использоваться для открытия туннеля. Вот как клиент за прокси-сервером HTTP может получить доступ к веб-сайтам с использованием SSL (например, HTTPS, порт 443). Обратите внимание, однако, что не все прокси-серверы поддерживают метод CONNECT или ограничивают его только портом 443.

См. также статью о HTTP-туннеле в Википедии.

Файл автоматической настройки прокси-сервера (PAC) — это функция JavaScript, которая определяет, направляются ли запросы веб-браузера (HTTP, HTTPS и FTP) непосредственно к месту назначения или перенаправляются на сервер веб-прокси. Функция JavaScript, содержащаяся в файле PAC, определяет функцию:

Файл автоконфигурации следует сохранить в файл с расширением .pac : proxy.pac .

И тип MIME установлен на application/x-ns-proxy-autoconfig .

Файл состоит из функции с именем FindProxyForURL . Приведенный ниже пример будет работать в среде, где внутренний DNS-сервер настроен так, что он может разрешать только внутренние имена хостов, и цель состоит в том, чтобы использовать прокси-сервер только для неразрешимых хостов:

 функция FindProxyForURL(url, host) {
  если (разрешимый (хост)) {
    возврат "ПРЯМОЙ";
  }
  вернуть "ПРОКСИ proxy. mydomain.com:8080";
}
 

Дополнительные примеры см. в разделе Автоконфигурация прокси-сервера (PAC).

  • ПОДКЛЮЧЕНИЕ
  • Прокси-сервер в Википедии

Последнее изменение: , участниками MDN

прокси — Путаница с HTTPS-прокси Они очень распространены. Любая компания приличного размера будет включать явные прямые прокси-серверы для SSL, чтобы они могли расшифровывать трафик https для целей мониторинга, регистрации и фильтрации — распространенным эвфемизмом является «Отчетность о соответствии».

Некоторая предыстория, которую вы, возможно, уже знаете, для контекста:

Начальное рукопожатие сеанса HTTPS состоит из трех частей: сообщение ServerHello с аналогичной информацией. Этот шаг и следующий не шифруются.

  • Cert Exchange: Сервер предоставляет свой TLS-сертификат, который клиент должен решить, доверяет ли он — обычно реализуется с неявным доверием к сертификатам, подписанным центрами сертификации, и требует вмешательства пользователя для самозаверяющих сертификатов.

  • Обмен ключами — Используется метод, выбранный на шаге 1; самый простой метод — это транзакция типа обмена ключами RSA: клиент генерирует ключ, используя случайное число, и шифрует его, используя открытый ключ сервера. Это расшифровывается с использованием закрытого ключа сервера (его можно зашифровать только с помощью открытого ключа, его нельзя расшифровать без закрытого ключа, что малозаметно, но многих сбивает с толку).
  • С этого момента происходит полностью зашифрованная связь, причем почти все пакеты TCP/IP зашифрованы (за исключением заголовков/полей, необходимых для маршрутизации).

    Ответ на ваши вопросы заключается в том, что прямой прокси-сервер требует, чтобы прокси-сервер полностью расшифровывал сообщения HTTPS. Клиент никогда не связывается напрямую с предполагаемым сервером (иногда не зная, что это не так, о чем я расскажу ниже).

    Вот объяснение от Palo Alto Networks о том, как работает прокси-сервер Forward HTTPS (PAN-OS относится к их сетевому ПО):

    1. Клиент пытается связаться с www. google.com по HTTPS. Трафик соответствует политике расшифровки.
    2. Этот трафик обрабатывается нашим механизмом прокси-сервера SSL, а сертификат для www.google.com генерируется нашей внутренней PKI (подписанный центром сертификации). свидетельство).
    3. PAN-OS проксирует ssl-трафик и устанавливает новое ssl-соединение с веб-сервером.
    4. Веб-сервер запускает рукопожатие с устройством PAN-OS.
    5. Устройство PAN-OS завершает рукопожатие SSL с клиентом, представляющим сгенерированный сертификат в сообщении Server Hello.

    Это (если вредоносное) явная атака «человек посередине» — она превращает двухстороннюю транзакцию: ПК ⟺ Google — в 2 отдельные транзакции: ПК ⟺ Прокси и Прокси ⟺ Google.


    Боковое примечание

    Поскольку прямые прокси-серверы в основном используются для мониторинга трафика ssl, интересно, что в этой ссылке PAN также обсуждается непрокси-метод — входящая «проверка/расшифровка», для которой требуется, чтобы брандмауэр имел сертификаты серверов и ключей и, следовательно, может полностью расшифровать связь с помощью простого мониторинга пакетов. Кроме того, немного нервирует то, что они рекламируют это как ключевую функцию, хотя можно было бы надеяться, что у нее будет очень мало вариантов использования — для этого требуется, чтобы оператор брандмауэра имел открытый и закрытый ключи стороннего сайта — например. Закрытые ключи Google. Можно было бы подумать, что это не будет обычным явлением.

    Существует множество различных способов реализации прямых прокси-серверов, и я едва касаюсь их — многие, если не большинство прямых прокси-серверов реализованы как «прозрачные» firewall/proxy вставляет себя в транзакцию. Описанный выше прямой прокси-сервер является «прозрачным» прокси-сервером. После того, как клиент принял сертификат от прокси-сервера, который, если это сертификат, подписанный ЦС, обычно выполняется автоматически, клиентские машины будут получать пакеты, измененные прокси-сервером, чтобы они выглядели исходными (например, google).


    Обновление для извлечения информации из комментариев

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

    2. HSTS (HTTP Strict Transport Security) — это протокол, разработанный для предотвращения перехвата злоумышленниками запросов от серверов на переход текущей транзакции с http на https. Теория, лежащая в основе этого, заключается в том, что реализовать атаку «человек посередине» на http тривиально, и этот «прокси-агент» может затем подделать переход на https, если он увидит запрос на переход. Это не влияет напрямую на работу прокси-серверов переадресации https, но связано; вот гораздо лучшее объяснение

    3. MITM-атаки, HTTPS и прокси-серверы. Вот отличное объяснение того, почему MITM-атаки с использованием прокси-серверов в настоящее время неэффективны при использовании «прямого» HTTPS (т. е. не перехода с HTTP на HTTPS, который частично решается с помощью HSTS).