Настройка «прозрачного» Squid HTTPS прокси с записью запросов в лог файлы

Все статьи

HTTPS-трафик зашифрован и использует SSL протокол (Secure Sockets Layer ) для защиты передаваемой информации от посторонних лиц. Тем не менее, HTTPS трафик может представлять угрозу безопасности и скрывать незаконную деятельность сотрудников и вредоносный трафик. Также трафик передаваемый по HTTPS не полностью отображается в лог файлах Squid HTTPS прокси и как следствие, в отчетах ProxyInspector. Данную проблему можно исправить с помощью функции Squid SSL bump, она позволяет осуществлять расшифровку и запись в лог файл запросов передаваемых по протоколу HTTPS.

Подготовка к настройке Squid HTTPS: создание и установка сертификата

Для работы Squid SSL bump необходимо создать корневой сертификат:

openssl req -new -newkey rsa:2048 -sha256 -days 365 -nodes -x509 -extensions v3_ca -keyout proxyCA.pem  -out proxyCA.pem

Как правило данный сертификат хранится в каталоге /etc/squid/ssl_cert/. Данный сертификат должен быть установлен как корневой в браузерах всех пользователей, для чего его необходимо конвертировать в .der формат:

openssl x509 -in proxyCA.pem -outform DER -out proxyCA.der

Для установки сертификата в браузер(на примере Chrome), необходимо открыть Настройки | Показать дополнительные настройки | HTTPS/SSL | Настроить сертификаты, и импортировать сертификат в раздел Доверенные корневые центры сертификации.

Без установки сертификата в браузеры пользователей, при каждом запросе страницы через Squid HTTPS прокси, будет выдаваться предупреждение безопасности, что крайне неудобно.

Сборка и настройка Squid HTTPS прокси

Как правило версия включенная в поставку дистрибутива Linux собрана без поддержки SSL, поэтому необходимо пересобрать последнюю версию c ключами:

./configure \
--with-openssl \
--enable-ssl-crtd

Инструкции по сборке Squid 3.5 из исходных кодов:

Windows версия как правило изначально собрана с этими опциями:
Скачать Squid для Windows.

В конфигурационный файл squid.conf нужно добавить следующие строки(где /etc/squid/ssl_cert/proxyCA.pem - ранее созданный сертификат):

http_port 3128 ssl-bump \
  cert=/etc/squid/ssl_cert/proxyCA.pem \
  generate-host-certificates=on dynamic_cert_mem_cache_size=4MB

acl step1 at_step SslBump1

ssl_bump peek step1
ssl_bump bump all

sslproxy_cafile /usr/local/openssl/cabundle.file

После выполнения данных настроек, информация обо всех запросах выполненных по протоколу HTTPS через Squid прокси будет записываться в лог файл access.log, также как и запросы выполненные по HTTP.

Возможные ошибки

На некоторых сайтах будут возникать ошибки связанные с невозможностью проверки корневого сертификата. В данном случае необходимо либо добавить данные корневые сертификаты в файл cabundle.file либо отключить проверку сертификатов в squid.conf (ЭТО НЕБЕЗОПАСНО!):

sslproxy_cert_error allow all
sslproxy_flags DONT_VERIFY_PEER

Настройка записи в access.log

В данной статье описана дальнейшая настройка Squid HTTPS прокси для записи информации в лог файл access.log.

Теги: squid, ssl bump, ssl, https, proxyinspector