# 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) Т.е. прокси можно обойти, если выключен МИТМ прокси