К основному контенту

Для чего водители вешают сзади автомобиля маленькое ведёрко?

Прозрачный прокси для https в Squid

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

В наше время все больше и больше сайтов используют HTTPS для обеспечения конфиденциальности своих пользователей. Нет никаких сомнений в том что шифрование это хорошая вещь для безопасности, но оно также создает ряд проблем для контролируемых сетей, часто используемых в офисах. Основной проблемой есть то что кроме пользователя и сервера никто не может видеть и тем более фильтровать зашифрованные данные. Для решения этой проблемы можно использовать прозрачную фильтрацию HTTPS в Squid с помощью расширения ssl bump.

Содержание статьи: Как это работает Установка Squid и Openssl Подготовка системы Запуск и фильтрация Завершение Как это работает

Когда пользователь пытается открыть сайт iptables перенаправляет запрос на наш прокси Squid. Обязательно чтобы трафик от пользователей проходил через машину с настроенным iptables и squid. Если используется протокол HTTPS, прокси сервер устанавливает шифрованное соединение с запрашиваемым сервером выдавая себя за браузер, а затем на основе собственного корневого сертификата подписывает новый ssl сертификат для запрашиваемого доменного имени и отправляет его браузеру пользователя выдавая себя за сервер. Таким образом устанавливается два шифрованных соединения и прокси получает полный доступ к проходимому трафику. Установка Squid и Openssl

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

Для работы с ssl сертификатами в системе должен быть установлен пакет openssl, если еще нет, установите:

sudo emerge -av openssl

Теперь squid нужно собрать с поддержкой ssl и динамической генерации сертификатов, а это соответственно опции: --enable-ssl --enable-ssl-crtd, поэтому:

nano /etc/portage/package.use

net-proxy/squid ssl-crtd ssl

В других дистрибутивах необходимо будет собрать собственную версию squid, скачав исходники и включив нужные опции в с помощью configure.

Устанавливаем:

sudo emerge -pv squid Подготовка системы

Сначала создадим папку для хранения сертификатов, например в /etc/squid/ssl:

mkdir /etc/squid/ssl

chown -R squid /etc/squid/ssl

Теперь генерируем корневой сертификат собственного CA (Центра сертификации) на основе которого будут подписываться сертификаты для сайтов:

 $ cd /etc/squid/ssl

$ sudo openssl genrsa -out /etc/squid/ssl/squid.key $ sudo openssl req -new -key /etc/squid/ssl/squid.key -out /etc/squid/ssl/squid.csr $ sudo openssl x509 -req -days 3650 -in /etc/squid/ssl/squid.csr -signkey /etc/squid/ssl/squid.key -out /etc/squid/ssl/squid.pem

Генерируем корневой сертификат который затем нужно будет добавить в браузер:

sudo openssl x509 -in /etc/squid/ssl/squid.pem -outform DER -out squid.der

Настроим конфигурационный файл squid:

http_port 3128 transparent https_port 3129 transparent ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=4MB cert=/etc/squid/ssl/squid.pem key=/etc/squid/ssl/squid.key sslproxy_flags DONT_VERIFY_PEER sslproxy_cert_error allow all always_direct allow all ssl_bump server-first all ssl_bump none all sslcrtd_program /usr/libexec/squid/ssl_crtd -s /var/lib/ssl_db -M 4MB

Путь /usr/libexec/squid/ssl_crtd указывать обязательно иначе будет ошибка.

Дальше нужно пересоздать базу данных сертификатов:

rm -rf /var/lib/ssl_db

$ /usr/libexec/squid/ssl_crtd -c -s /var/lib/ssl_db

$ chown -R squid /var/lib/ssl_db

Squid должен обязательно иметь права на директорию /var/lib/ssl_db.

Включаем ip_forwarding для разрешения проходящего трафика через узел:

echo 1 >> /proc/sys/net/ipv4/ip_forward Запуск и фильтрация

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

sudo /etc/init.d/squid start

Проверить прослушиваются ли оба порта можно командой:

netstat -nap | grep 312

tcp6 0 0 :::3128 :::* LISTEN tcp6 0 0 :::3129 :::* LISTEN

Перенаправляем весь проходящий через узел трафик с целевыми портами http и https на squid:

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3128

$ iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-port 3129

Если все настроено правильно наш прозрачный прокси для https заработает и в логе /var/log/squid/access.log мы увидим кода и зачем ходит пользователь:

tail -f /var/log/squid/access.log

439471662.652 706 192.168.1.3 TCP_MISS/200 30189 GET https://www.linux.org.ru/ - ORIGINAL_DST/178.248.233.6 text/html 1439471662.663 0 192.168.1.3 TAG_NONE/200 0 CONNECT 74.125.143.95:443 - HIER_NONE/- - 1439471662.816 144 192.168.1.3 TCP_MISS/200 6080 GET https://www.linux.org.ru/tango/combined.css? - ORIGINAL_DST/178.248.233.6 text/css 1439471662.825 0 192.168.1.3 TAG_NONE/200 0 CONNECT 178.248.233.6:443 - HIER_NONE/- - ... 1439471662.969 137 192.168.1.3 TCP_MISS/200 4924 GET https://www.linux.org.ru/tango/img/opensource-logo.png - ORIGINAL_DST/178.248.233.6 image/png 1439471663.131 155 192.168.1.3 TCP_MISS/200 7998 GET https://www.linux.org.ru/tango/img/gnu-logo.png - ORIGINAL_DST/178.248.233.6 image/png Завершение

Как видите мы можем узнать какие страницы и изображения запрашивает пользователь, а этого более чем достаточно для нормального контроля трафика. Остался последний штрих. Нашего ssl сертификата нет в списке доверенных сертификатов браузера, поэтому при попытке открыть https сайт пользователь получит предупреждение о недостоверном ssl сертификате. Для того чтобы это устранить нужно добавить сертификат в браузеры всех пользователей. Для добавления сертификата в Chrome откройте настройки браузера, нажмите кнопку показать дополнительные настройки, пролистайте в низ и нажмите кнопку управление сертификатами:



В открывшимся окне перейдите на вкладку Центры сертификации и нажмите кнопку импорт:



Останется выбрать файл сертификата в формате der, ввести пароль и нажать кнопку готово.

Иногда важно отдохнуть, расслабиться, посмотреть на природу. На десерт сегодня, красивое видео - путь на вершину:

Комментарии


Дистанционная компьтерная помощь, удаленная компьютерная помощь онлайн.

Популярные сообщения из этого блога

Лучшие плагины для OBS Studio

Open Broadcast Software или OBS - это свободное программное обеспечение с открытым исходным кодом для стриминга аудио и видео данных в сеть интернет. Программа полностью кроссплатформенная и может работать в Windows, Linux или MacOS. Это отличная альтернатива для таких программ, как Wirecast и XSplit. OBS использует для вещания стандартный протокол обмена сообщениями в реальном времени, а поэтому может транслировать данные в любой сервис, поддерживающий это, например, Yotube. Несмотря на широкие возможности OBS, программа поддерживает еще и множество плагинов. В этой статье мы рассмотрим лучшие плагины для OBS Studio, которые вы можете использовать. Содержание статьи: Лучшие плагины OBS Studio 1. Browser Source Plugin 2. Video Source Plugin 3. Simple Scene Switcher 4. DirectShow Audio Source 5. CLR Browser Source 6. OBS Remote 7. AMD Advanced Media Framework Encoder 8. Text Source Plugin Выводы Лучшие плагины OBS Studio Чтобы найти плагины OBS Studio для Video пользователям пр…

Установка операционной системы Raspberry pi 3

Raspberry Pi - это недорогой микрокомпьютер, который  помещается на ладони и может сделать очень многое. На основе этого микрокомпьютера можно создавать как серьезные проекты, по управлению умным домом, так и использовать в качестве медиацентра или даже легковесного домашнего компьютера с Linux. В одной из предыдущих статей мы подробно рассматривали начало работы с Raspberry Pi 3, как подключить устройство и что для этого необходимо, сейчас же остановимся более подробно на такой задаче, как установка операционной системы Raspberry Pi 3. Здесь используется процессор на архитектуре ARM, а значит вы можете установить любой поддерживаемый ARM дистрибутив, или же созданный специально для Raspberry дистрибутив Raspbian. Содержание статьи: Установка системы Raspberry с помощью NOOBS 1. Подготовка SD карты 2. Загрузка образ NOOBS 3. Запись на SD карту 4. Запуск системы Установка системы Raspberry из образа 1. Загрузка образа 2. Запись образ на карту Выводы Установка системы Raspberry …

Подключение OneDrive в Linux

OneDrive (Ранее известный как SkyDrive) это популярное облачное хранилище файлов от Майкрософт. Сейчас OneDrive бесплатно предоставляет 7 гигабайт пространства новым пользователям. Как вы знаете OneDrive хорошо интегрирован с другими продуктами компании  Microsoft. В OneDrive Также есть официальный клиент который автоматически загружает ваши видео и фотографии с камеры в облако. Но к сожалению этот клиент недоступен для операционных систем семейства Linux. Но не все так плохо. Сообщество открытого программного обеспечения уже нашло решение. Это opedrive-d от Boilermaker. Запустившись как демон программа автоматически синхронизирует локальную папку с облаком OneDrive. Содержание статьи: Установка Onedrive-d в Linux Настройка Синхронизация локальной папки с OneDrive Установка Onedrive-d в Linux Несмотря на то что onedrive-d разрабатывается для Ubuntu/Debian, CentOs/Fedora/RHEL поддерживается тоже хорошо. Для установки достаточно набрать несколько команд: $ git clone https://gith…