# **Защита периметра сети с помощью прокси сервера** ###### tags: `ПРОКСИ-СЕРВЕР` ***В данной работе будет показано использования прокси-сервера SQUID на базе PfSense и настройка его конфигурации для обеспечения безопасности. Для выполнения данной работы необходимо подготовить следующий стенд (в данной инструкции использовался EVE-NG).*** * Межсетевой экран №2(готовое решение PfSense(SNORT) - осталось с прошлого занятия) * Межсетевой экран №1(готовое решение PfSense(SQUID)) * Свичи для имитации DMZ и LAN (cisco в примере) * Машины в NET зоне для имитации атак (Debian, Kali, количество по требованию) * Машина в DMZ (kali, для настройки pfsense) * Машины в LAN (kali, для настройки, win7 для имитации атак) **В результате у вас должен быть примерно следующий стенд. По сути он такой же, как и в работе с IDS/IPS** ![](https://i.imgur.com/XoGOCtB.png) Вы можете использовать такой стенд, но к сожалению, в ходе работы при установке Squid, мощности моей машины не хватило для обеспечния корректной работы, поэтому мне пришлось убрать IPS Snort с прошлой работы и работать без LAN зоны. Моменты, где будут различия по настройке буду описывать. У меня схема выглядит вот так. *Итак, начнем!* 1. **Установка proxy server на pfsense.** Для начала определимся, что такое прокси сервер, прокси сервер - промежуточный сервер (комплекс программ) в компьютерных сетях, выполняющий роль посредника между пользователем и целевым сервером (при этом о посредничестве могут как знать, так и не знать обе стороны), позволяющий клиентам как выполнять косвенные запросы (принимая и передавая их через прокси-сервер) к другим сетевым службам, так и получать ответы. Для установки прокси сервера необходимо использовать pfsense 2.5.1 или pfsense 2.5.2. В качестве самого прокси в pfsense выступает Squid, его мы и будем устанавливать. Установка squid в pfsense, производиться также, как и установка IPS. Мы будем устанавливать pfsense на pfsense с suricata. Заходим на kali linux и в браузере заходим на pfsense. В pfsense проходим по пути **System>Package Manager>Available Packages** ![](https://i.imgur.com/ruY92SP.png) В поисковике вбиваем **squid** и устанавливаем следующие пакеты: **squid** **squidGuard** **Lightsquid** По очередно, поставив пакеты, список установленных пакетов у вас должен выглядить следующим образом: ![](https://i.imgur.com/vl8yVoq.png) Прокси сервер готов к настройке. 2. **Настройка squid** Теперь, переходим к настройки нашего прокси сервера. Для настройки squid proxy необходимо перейти по пути **Services>Squid Proxy Server**. Squid в pfsense имеет несколько основных групп настройки, а именно: - **General - основные настройки прокси** - **Remote Cache - настройки кэша выборочных страниц, которые будет хранить прокси** - **Local Cache - настройка локального кэша, который будет хранится при посещении пользователями страниц (по типу браузеров)** - **Antivirus - настройки антивируса для проверки запросов на вредоносы** - **ACL - правила доступа к прокси** - **Traffic Mgmt - настройки допустимого трафика в прокси** - **Authification - настройки способо аутентификации в прокси(или его отсутствие)** - **Users - перечень локальных пользователей прокси** - **Real time - логи в реальном времени** - **Status - показывает параметры прокси (время работы, активен или нет и т.д.) помогает при траблшутинге** Итак, приступим к настройке, одна из основных особенностей squid в pfsense, **преждем чем приступать к основной настройке и запуску squid необходимо настроить локальное кэширование** Переходим в **Local Cache**, если вы планируете хранить кэш, то можно просто перейти в самый низ и по кнопке сохранить, зафиксировать настройки локального кэша, но я рекомендую выключать полностью кэширования, достаточно кэша в браузере пользователя. Для выключения кэширования достаточно щеклнуть по галочке в первом пункте и сохранить. ![](https://i.imgur.com/68qny1Q.png) Теперь, переходим к основным настройкам во вкладку **General**, для запуска достаточно включить следующие элементы (указаны только те, что изменяються, остальные пункты не менять!!!): - **Proxy Interfaces - указываем внутреннюю сеть и loopback(он нужен для просмотра статистики и lightsquid, где наглядно выдны различные ssl подключения и есть подробная статистика)** - **Outgoing Network Interface - тут оставляем по умолчанию, но если не будет работать указать WAN** - **Proxy Port - оставляем по умолчанию, но для тестов или для некоторых случаев можно изменить.** - **Error Language - в самом конце страницы я выставляю русский язык** На этом этапе базовые параметры для работы прокси созданы, нажимаем сохранить. Теперь, можем выставить галочку в самом верху на включение прокси и **сохранить**. Таким образом, мы запустим наш прокси. ![](https://i.imgur.com/mu75vhy.png) 3. **Проверка прокси** Для его использования клиенте, необходимо явно указать его параметры, либо в глоабльных настройках прокси, либо в бразуере (например, Mozila). Итак, проверяем. ![](https://i.imgur.com/aKDhAw4.png) После применения настроек, заходя на страницу, видно, что прокси работает. ![](https://i.imgur.com/92CPEOK.png) > Если вы не убирали squid из вашей инфраструктуры, то у вас будет ошибка, с блокировкой прокси. В этом случае, вам нужно перейти на прокси в раздел **ACL** и в разрешенные(первая группа) добавить подсеть за вашим squid (у меня была 192.168.100.0/24). Итак, мы проверили, что squid работает, необходимо отметить, что можно следить, за обращениями пользователей к тем или иным ресурсам. Для этого, необходимо перейти по пути **Status>Squid Proxy Report** и там выбрать **open sqstat**, откроется окно обращений пользователей к различным ресурсам в реальном времени. ![](https://i.imgur.com/HP2ATIN.png) Также, в данном окне, по кнопке **Open Lightsquid**, можно открыть подробную статистику по каждому хосту, использующему прокси, где видны все запросы и по ним можно посмотреть подозрительный запрос или вредоносный. (У Lightsquid есть особенность, в правило на DMZ(LAN) необходимо разрешить доступ по порту 7445, иначе форма не откроется) ![](https://i.imgur.com/Yp56wUg.png) **В результате, мы настроили в базовой конфигурации. Дальнейшие дополнительные настройки будем использовать по мере проверки атак. Итак, попробуем отключить правила доступа к вебу из локальной сети (по умолчанию только прокси работает) и создать туннель** 4. **OpenVPN Tunnel** При запуске настроек по умолчанию, без конфигурации прокси, подключение действительно не работает. При попытке подключиться, ответа от сервера не поступает, подключение невозможно. ![](https://i.imgur.com/YpnbkHA.png) Но данная ситуация, обходиться добавлением в конфиг клиента прокси строчки с указанием работать через прокси: - Без проверки подлинности **http-proxy "ip" "port"** - Обычная проверка подлинности **http-proxy "ip" "port" stdin basic** - NTLM аутентификация **http-proxy "ip" "port" stdin ntlm** В нашем случае, добавляем без проверки подлинности. ![](https://i.imgur.com/iLw87iy.png) И как видим, все работает. ![](https://i.imgur.com/ihpySJx.png) Проблема доступа OpenVPN сохраняется. С помощью аутентификации данная проблема также не решается, выше можно добавить также и аутентификацию в конфиг прокси. **Попробуем использовать свой SSL сертификат на прокси, с помощью него, мы сможем расшифровывать запросы от клиентов на прокси, а также препятствуем подключению через VPN, который не может использовать сертификат прокси. Для создания отдельного сертификата переходим по пути SYSTEM>CERT. MANAGER, там создаем новый CA по кнопке ADD, параметры указываем как на скриншоте, также, указываем common name(можно также указать proxy-ca), поля с именованием субъекта можно не указывать(по желанию)** ![](https://i.imgur.com/h9OsIGc.png) По итогу у меня был создан вот такой сертификат. ![](https://i.imgur.com/HJiDEa1.png) Теперь, нам необходимо настроить использование данного сертификата в прокси, это настраивается в основных настройках squid в группе настроек **SSL Man in the Middle filtering** ![](https://i.imgur.com/mxRKxnm.png) Для корректной работы можно использовать параметры как на скриншоте. По параметрам, стандартный порт - 3129, количество процессов ssl по умолчанию 5, сертификат указываем, тот который создали. Настройка SSL завершена. Также, рекомендую включить следующую группу настроек (так как часто без использования данного параметра SSL отдельно не работает), так называемый Transparent Proxy, данная настройка принудительно подкидывает прокси для машин внутри сети, а также подкидывает сертификат, если включен SSL. ![](https://i.imgur.com/bl07Kgn.png) Дополнительно ничего указывать не нужно. Сохраняем параметры. И в случае подключения к сайту с SSL. Браузер вас не пустит и поругается на сертификат(если добавить его в доверенные корневые центры сертификации, то все сработает). ![](https://i.imgur.com/wouZEbW.png) Подключение через VPN также, не произойдет. ![](https://i.imgur.com/FufF4ha.png) Таким образом, можно ограничить использования OpenVPN через прокси.