---
# System prepended metadata

title: PROXY

---

# PROXY

Прокси бывает двух видов (прозрачная-непрозрачная) –  с функциональной точки зрения:
У нас есть комп (либо несколько) с расположением в разных роутерах и разных сетях. У каждого из них есть свои IP-адреса. И есть прокси-сервер и есть у нас некий сервис – ssh, web…
Классический вариант: 

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

Но бывает ситуация, когда веб-ресурс не позволяет получить данные с sourse IP1 и IP2. (вер-ресурс говорит: «IP1 и IP2 - запрещено») – есть некоторые иностранные веб-ресурсы, которые отказываются обслуживать российские адреса, а  с других адресов можно заходить. Или наоборот: нельзя зайти из Росии на сервисы, которые были заблокированы РосКомНадзором.
![](https://i.imgur.com/cG32hAt.png)

В такой ситуации можно попытаться зайти с ресурсов, которые находятся ВО ВНЕ: попытаться подцепиться к ресурсу какому-то и через него зайти на внешний веб-сервис – зеленая линия (через прокси). В этом случае, веб-сервис будет видеть IP-шник прокси-сервиса.
Клиент запрашивает прокси-сервер  прокси-сервер понимает, что ему нужен веб-ресурс и направляет туда  и отвечает по тому же пути: веб-ресурс  отвечает (отдает инфу) прокси-серверу  прокси-сервер направляет ответ клиенту. При этом обходится барьер – запрет на посещение веб-ресурса (созданный тем же РосКомНадзором)
![](https://i.imgur.com/xFRzFrQ.png)
Схема похожа на работу VPN, но это не так. VPN у нас туннелируется, т.е. создается сеть поверх сети. В случае Proxy происходит так:

В IP-пакет (distin/sourse адрес, data, Crc-сумма) – в качестве distinations-адреса пишется именно адрес  прокси-сервера.
![](https://i.imgur.com/8vaN6K6.png)
Но при этом дабавляются данные для прокси – proxy-data: когда прокси-серверу говорится  -куда эти данные идут. При этом нет никакой инкапсуляции, просто добавляются данные о прокси: есть несколько видов прокси – http_proxy, soks4, soks5 и т.д. – зависит от используемого протокола. Прокси работает только по протоколу TCP- все соединения TCP-шные она будет через себя пропускать. UDP –соединение в proxy не засунуть: потому что голос не сможем через прокси пропустить, но зато можно пропустить какое-то защищенное соединение, типа ssl (или что-то подобное)
![](https://i.imgur.com/pqJ7wN0.png)

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

Это стандартная proxy классический вид для обхода блокировок.

Со стороны blu-team: есть свич, роутер, компы, прокси…
Мы можем запретить компам выходить напрямую в роутер, разрешить выход только через прокси. И заставить все компы отправлять все запросы во вне только через прокси-сервер
![](https://i.imgur.com/FX725uU.png)
Идея этого в том, что мы ставим общую блокировку на роутер и обходим ее через прокси. На прокси есть важная штука – просмотр запросов  http, https   А если мы видим запросы, то мы можем их логировать и блокировать.
  На proxy можем запретить по  URI  какую-то часть данных  (лочить lock) + мы можем блокировать на только запросы, но и запросы от конкретного компа, сделать сегмент сети, с которого можно заходить на определенный сайт – можно указывать сегменты кому можно ходить «сюда», кому можно «туда», кому нельзя вообще никуда ходить
![](https://i.imgur.com/aerTXUM.png)

  И самое интересное, можно запретить вообще весь доступ во вне: можно запретить всем ходить куда-то еще и направлять через proxy. При этом весь трафик будет проходить через proxy , и мы сможем его видеть и следить абсолютно за всей компанией – не только за интернет трафиком, но и всем другим. Во многих компаниях так и делается, чтобы отслеживать вредоносные запросы, внутренние запросы и главное – не будет выхода «во вне». Если заблокировать абсолютно все, то правила для IDS/IPS систем и ssh – уже будут не нужны – станут не актуальными (или актуальными, если попробовать обойти proxy)/

Задача: настроить эту систему так, чтобы она защищала нашу инф-ру.

Нам нужна будет одна виндовая тачка (остальные можно выключать), 1-2 кали, 
Настраивать будем на FW1.

С win7 ( или win10) настраиваем наш FW : 
Переходим в: system/package manager/installer packages
Добавляем squid:  (если ничего не нашлось – проверить интернет – скорее всего его просто нет)
![](https://i.imgur.com/9HAJvyW.png)
Есть 3 разных варианта:
![](https://i.imgur.com/9Kv0Cir.png)
В последнем варианте есть **web proxy URL filter** тот самый фильтр, о котором говорилось выше (до этого варианта мы не дойдем – можно самим посмотреть, как доп.задание). 

Сначала ставим squid обычный (второй вариант) и потом уже лайтверсию (первый вариант)- часть для того, чтобы можно было просматривать как у нас работает squid.

Устанавливаем второй вариант. Сквид – гибкая штука: здесь есть потоковый антивирус, здесь есть и сама прокси, и перенаправление запросов и т.д.
После установки второго сквида ставим сразу первый – lightsquid - он дает возможность просматривать в режиме реального времени статистику, которую генерирует сквид-пакет.

Посмотрим два режима работы Proxy: непрозрачная прокси и прозрачная прокси.
В чем отличие:
Если мы гоним трафик с win7 до FW1 – фактически наш трафик будет проходить
Непрозрачная прокся: если мы будем гнать трафик и не будем ничего блокировать, то у нас ничего не поменяется – будет proxy и будет – ну и что?
 Если мы заблокируем весь трафик на FW1 и на тачках пропишем, что есть некоторого рода прокси (есть проксирование определенного рода трафика), укажем порт, на который он должен коннектиться – то всё ОК, трафик будет ходить. А вот напрямую, НЕ через proxy – не будет проходить

Прозрачная прокси: клиентов настраивать не нужно – запросы будут автоматически подхватываться и проходить через proxy

**Настройка пакетов proxy**
![](https://i.imgur.com/1JvsPOw.png)
Сначала нужно  настроить кеш. Переходим в кеш (local cache) cдесь много разных параметров – раньше прокся строилась еще и для того чтобы сохранить трафик  (если есть 100 пользаков и все они лазают на одинаковые ресурсы. И если 100 компов скачивают одни и те же ресурсы – у нас получается в 100раз больше трафика – в этом случае мы можем спокойно сохранять какой то кеш и раздавать компам уже скачанное (картинки, элементы и проч., при этом сохраняя трафик). Для того, чтобы это работало – должен быть кеш у прокси. 
**enable squid proxy** - сделаем в самом конце, когда все настроим
Тут есть разные режимы настройки:
![](https://i.imgur.com/L2G9rBs.png)
![](https://i.imgur.com/trhSPdf.png)
- heap LFUDA - сохраняет популярные объекты (и большие и маленькие)
- heap GDSF - сохраняет маленькие популярные объекты
- heap LRU - это алгоритм, при котором вытесняются значения, которые дольше всего не запрашивались.
- LRU - наиболее часто-встречаемые объекты

Обычно по умолчанию используют первый режим (верхний)

- **low-water mark in/high-water mark in %** - сколько %% использовать до заполнения нашего кеша
- **do not cache** - какие ресурсы и IP-адреса не кешировать  (скажем – майкрософт для скачивания обновлений)
- **enable offline mode** - можно включить режим off-лайн – если нет интернета, но вы захотели зайти на сайт, который только что работал – он отработает и будет грузить с кеша
- **external cache managers** - есть возможность кроме локального кеша использовать внешнюю хранилку
- **hard disk cache size** -Можно использовать хард-диск 
- **hard disk cache system** - какая файловая система используется (ufs – стандартная система)
- **level 1 directories** - сколько директорий может хранится (например, есть сайт у него домен/директория/директория/директория – и таких может быть 16штук ).
- **hard disk cache location** - где хранить кеш
- **minimum/maximum object size** - мин и мах количество объектов. (от 0 до 4 мбайт)
- **squid memory cache settings** - чтобы скопировать на жесткий диск – нужно скешировать еще и в оперативной памяти
- **memory cache size min/max ram ** - какое количество памяти может быть использовано
- **memory replacement policy** - какие объекты будет смотреть - GDSF – все маленькие объекты
![](https://i.imgur.com/nKMaJlr.png)
Потому что маленькие объекты записать гораздо сложнее, чем сразу прописать большой объект на жесткий диск.
- **dinamic and update content** - можно ручками прописать чего-нибудь и это будет в конфиге учитываться
- save - сохранит все сделанные настройки

**remote cache** - использовать не будем и переходим в **general** - настраиваем нашу proxy.
1 способом настроим обычную прокси – т.е. http
2 способом  - т.е. https

HTTPS PROXY настройка 
![](https://i.imgur.com/9mjkx8i.png) - какие адреса будет проксировать
![](https://i.imgur.com/AxDtvyy.png) - на каком интерфейсе будет работать (в нашем случае – е0)
![](https://i.imgur.com/LakXFWx.png) – внутренняя часть **Никогда не засовывайте  вашу же проксю во вне!!**

Нам надо выбрать два интерфейса: LAN и lootback – для того, чтобы работала статистика, чтобы он проксировал запросы в том числе и на внутреннюю часть.
![](https://i.imgur.com/Gu8ItRH.png) -на каком интерфейсе все это будет висеть (в нашем случае – LAN)
![](https://i.imgur.com/KHa0H4r.png)
**ssl man in the middle filtering** - в данном случае прокси используется как  официальная атака m.i.t.m, Пока не включаеm – протестим в обычном режиме.
![](https://i.imgur.com/Itjszdq.png) - настройки логирования (дополнительного), т.к. сквид изначально уже пишет логии
![](https://i.imgur.com/oc6CPiI.png) 
далее save - сохранит настройки в обычном режиме, работать будет без шифрования.

После save нужно поставить галочку ![](https://i.imgur.com/yiAREsb.png)  и save

В этом случае мы увидим, что фактически у нас запустилась наша proxy 
Она работает на порту  proxy port - 3128   и она работает в режиме закрытой прокси.
Поставим на win-тачку какой-то браузер – firefox  или другой, который использует свои настройки прокси. И проверим как наша proxy работает
Запускаем firefox. Заходим в нем в настройки     - в самом низу в «основных» есть:
![](https://i.imgur.com/VjHGgN7.png)
Здесь прописываем какую прокси будем использовать: win7 будет напрямую говорить, что на FW1 находится прокся и все данные направляй к FW1 и он уже разберется, что с ними делать. В нашем случае прописываем:  http proxy и IP-шник, который фактически будет использоваться, в том числе и порт 3128. Proxy здесь имеет адрес нашего FW1 – 172.16.122.254. Https запросы пока у нас не порддерживаются, потому что мы не включали у прокси
![](https://i.imgur.com/nU2jKLF.png)
Http – используется только для http и https трафика – только 80 и 443 порт и больше ничего.
Socks – используется весь tcp-шный трафик, т.е. tcp-трафик, который будет проходить будет заворачиваться в сокс4 или сокс 5 (отличие 4 и 5 – минимальное: версии протоколов, возможно криптография добавляется…) 

Теперь попробуем зайти на любой сайт http  - у аэропорта Внуково не шифрованный сайт.
Мы зашли – походили по ссылкам – всё хорошо и всё отрабатывает. Зайдем еще на другой сайт: типа Авито (он шифрует данные https ) – тоже работает сайт… Теперь проверим, что нам сказал наш FW1

Заходим: status/squid proxy reports
![](https://i.imgur.com/zWYZDOs.png)
указать паcс «pfsense» (остальное не трогаем) тык save после жмем ![](https://i.imgur.com/23Awzzk.png)

Входим:
![](https://i.imgur.com/NoMcV95.png)  admin пасс: pfsense (если не отработает – перезапустить сквид прокси и в сервисах сам сквид тоже перезапустить, И возможно – перегрузить и сам FW1)
И видим:
![](https://i.imgur.com/IQ0d0Y7.png)

**В случае если не работает** идем в  status/squid proxy reports Поправим настройки:  
- меняем пасс:  
- меняем язык - русский
- report template - BASE or NOVOSEA
- bar color - blue
- refresh scheduler - 30 min(*) 
далее save -> refresh ->  ![](https://i.imgur.com/MW0pFxz.png)

![](https://i.imgur.com/8TVIlch.png)

Теперь видим данные:
![](https://i.imgur.com/Hww96j7.png)
![](https://i.imgur.com/5cBJsk1.png)

Можем видеть какие сайты посещались и можем переходить на эти сайты – смотреть, что там было просмотрено и куда лазал пользак. Наша proxy отрабатывает и мы видим статистику. При мы еще можем сделать **Open sqstat**:
![](https://i.imgur.com/FgQTbE0.png)

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

Дальше, мы должны будем включить проксирование МИТМ –прокси, чтобы его включить – нужно создать сертификат.

Переходим в FW1 : 
![](https://i.imgur.com/oXmN5Ft.png) создаем новый корневой сертификат.
Сертификаты, сгенерированные pfSense понимает даже микротик., а сделанные другими срадствами должны учитывать ряд мелкий параметров для микротика
![](https://i.imgur.com/Yrz6F1x.png)
![](https://i.imgur.com/HowFsqb.png)
пишем название сертификата и выбираем метод генерации
Заполняем данные сертификата: вес, срок действия, название, страна, город и пр.

Вот наш сертификат:
![](https://i.imgur.com/U5WSwQI.png)

Нам нужен только сертификат авторити – CA, который дальше будет генерить сертификаты. Сохраем этот сертификат где-нибудь на компе (экспорт СА) и его устанавливаем в корневые доверенные центры
![](https://i.imgur.com/eTHJBmO.png) установить  открыть  поместить в доверенные центры (не забыть синхронизировать время на винде и сертификате)
![](https://i.imgur.com/bbMmMR8.png) ![](https://i.imgur.com/ZzW8mnu.png) ![](https://i.imgur.com/SKOOkk5.png) ![](https://i.imgur.com/q9ZwsuI.png) ![](https://i.imgur.com/M8HpmX3.png)

Все политики выдачи есть и применены.

Теперь надо применить настройки нашей proxy 
fw1/services/squid proxy server

**ssl man in the middle filtering** - нажимаем галочку
![](https://i.imgur.com/SyZ26Eu.png) порт вписываем 3129
![](https://i.imgur.com/w1ys0TH.png)
![](https://i.imgur.com/AXk7cjc.png) - сколько дочерних сертификатов можно делать. Всё остальное пока не меняем – будем смотреть как влияет и как отрабатывает.
![](https://i.imgur.com/n75MhIz.png)

Теперь в настройках браузера вносим изменения: меняем порт - 3129, вводим https, 
![](https://i.imgur.com/aHo0WdA.png)
Теперь пробуем зайти на сайты: если не коннектятся сайты – перезапустить прокси… Если не поможет, то… у прокси есть настройки, такие как акцесс-листы (ACL).

В акцесс листах мы должны будем прописать:
![](https://i.imgur.com/b8qbcQi.png) указываем все сети 0.0.0.0/0 затем **save**.
Чтобы проверить, что все заработает. Сохраняем и проверяем

Сертификаты на сайтах показывает теперь наши:
![](https://i.imgur.com/QJIVqkr.png)
И если посмотреть на сам сертификат, то увидим что сертификат proxy-ca:
Т.е. браузер не видит что сертификат подменен (нет алертов с его стороны)
И через FW1 (ghb обновлении страниц сайтов) мы видим инфу:
![](https://i.imgur.com/I6vfLEC.png)

**Транспорент Proxy**
Это позволяет сделать прокси, но без настроек – без настроек прокси тоже будет работать.
fw1/services/squid proxy server
Включаем: transparent proxy settings - **enable** + ssl intercept inteface(s) - **LAN** -> save 
После этого наша прокси будет работать в режиме «транспорент прокси» - все запросы, которые будут приходить на 80 и 443 порты, они автоматически будут проксироваться. Нужно только разрешить 80 и 443 порт на этой системе. 
На FW1 поменяем днс-ы  firewall/rules/lan
![](https://i.imgur.com/jYniO17.png)
![](https://i.imgur.com/LsRB37o.png) где меняем destination - any -> save -> apply changes

После этого сайты загружаются.
Мы разрешили вход на 53 порт «куда-угодно» и на LAN адреса 443 и 80 – внутренний FW (никуда во вне не пускаем)

Получается следующее: мы включили транспорент прокси – и у нас заработал интернет на самой системе, хотя в правилах FW1 мы ничего никуда не разрешали:
![](https://i.imgur.com/5LHwNaX.png) - разрешен только ДНС трафик и по 7445 порту на FW

Видим, что у нас всё отрабатывает, и мы можем получать доступ к ресурсам
В статистике сквид прокси репорт мы увидим обновленную статистику:
![](https://i.imgur.com/MkjB5ft.png)
Мы можем даже скачивать файлики из интернета, но при этом: винда нам говорит, что у нас нет интернета и пинга нет:   а всё остальное работает 
![](https://i.imgur.com/wkhfeRC.png)  ![](https://i.imgur.com/img6rKm.png)

После скачивания мы можем увидеть в отчете какие файлыф были скачаны и откуда:
![](https://i.imgur.com/volo71R.png)


**Проверяем Proxy Атаками** 

**ssh –туннелирование **

Можно ли в обход прокси сделать туннель?
![](https://i.imgur.com/p2WGz4o.png) - он не может даже приконнектиться...
fw1/status/squid proxy reports/open sqstat
![](https://i.imgur.com/S0Kdlqz.png) - нет соединений
SSH-запуск с прокси у нас не работает – всё круто!

Пробуем через ssn over proxy
![](https://i.imgur.com/Dopvpnu.png)
пробуем сделать так (нужно обойти прокси через ssh)
Если нет ncat – устанавливаем:  доступ в инет для http трафика должен быть

Статейка по обходу: http://www.zeitoun.net/articles/ssh-through-http-proxy/start?s[]=ssh&s[]=proxy
![](https://i.imgur.com/jMJ98rz.png)
Делаем по статье:
apt install connect-proxy -> mkdir .ssh -> cd .ssh -> Open or create your ~/.ssh/config ->
![](https://i.imgur.com/Sz2alUw.png) - IP-шник FW1 172.16.12.254
nano(vim) /etc/ssh/sshd_config - укажем у себя 443 порт -> ssytemctl restart sshd ->
![](https://i.imgur.com/AypwmxY.png)
![](https://i.imgur.com/1KKN7NX.png)
![](https://i.imgur.com/8U4OvWi.png)
![](https://i.imgur.com/GtKi7Ef.png)
![](https://i.imgur.com/rOpZnlQ.png)
![](https://i.imgur.com/v6p9oQo.png)
![](https://i.imgur.com/Ij0NwVM.png)
![](https://i.imgur.com/TXPxrvd.png)
![](https://i.imgur.com/N4boyVo.png)
![](https://i.imgur.com/9e0jlCD.png) в line 19 в ssh конфиге ошибка - nano(vim) /etc/ssh/sshd_config -> #Host(закоментировать)
![](https://i.imgur.com/ZnzUE9N.png)
![](https://i.imgur.com/ZzYGtXa.png)
![](https://i.imgur.com/G2ZkQyx.png)

Возможно, нужно отключить МИТМ прокси -
![](https://i.imgur.com/37xIE6j.png) -> save. он подменивает сертификат и не хочет коннектится по этому сертификату.
![](https://i.imgur.com/GtGMl1C.png)

Получилось соединение.

Если есть МИТМ – то прокси не обходится, нельзя подключится. Получается со своим сертификатом лезет на прокси -> прокси подменяет сертификат и лезет на внешнюю кали ->она отвечает на этот сертификат, а с предыдущим никак не взаимодействует 

fw1/status/squid proxy reports/open sqstat работает
![](https://i.imgur.com/bpu3lHR.png)

Передаем файлик:
![](https://i.imgur.com/HYy6QCS.png)
видит передачю файла
![](https://i.imgur.com/hvMjJE8.png)
Т.е. прокси можно обойти, если выключен МИТМ прокси












