кальмар, TLS-соединение между браузером и прокси

Вопрос или проблема

У меня есть экземпляр squid (v4.6) на публичном адресе A.B.C.D, настроенный с basic_auth (бэкенд ldap). Это работает через незащищенный порт, скажем, 8080, используя http_port A.B.C.D:8080. Я пытаюсь выяснить, как защитить соединения с моим squid через небезопасный интернет (только аутентифицированные пользователи должны иметь возможность использовать proxy). Я использую PROXY в текущем Firefox 75, чтобы протестировать соединение.

Я пробовал много вещей, включая:

https_port A.B.C.D:8443 tls-cert=/path/to/cert tls-key=/path/to/key
SLL_ports 8443

Когда я ввожу этот порт в настройки PROXY Firefox, ничего не происходит, не появляется никакой basic_auth запрос, ничего.

Логи говорят:

1587588731.539      0 F.G.H.I NONE/000 0 NONE error:transaction-end-before-headers - HIER_NONE/- -

Возможно ли защитить basic_auth (используя TLS) при использовании PROXY? Отправка незашифрованных паролей через интернет просто неправильно. Я начал думать о том, чтобы поставить nginx с TLS и basic_auth перед squid, но я еще не знаю, возможно ли это.

Не мог бы кто-нибудь помочь?

На случай, если кто-то все еще заинтересован, на FreeBSD.

    http_port 192.168.2.1:3128
    http_port 192.168.2.1:8888 intercept # ipfw fwd отправляет сюда http

# ipfw fwd 443 отправляет сюда
    http_port 192.168.2.1:8443 intercept ssl-bump cert=/usr/local/etc/squid/ssl/myCA.crt key=/usr/local/etc/squid/ssl/myCA.key generate-host-certificates=on dynamic_cert_mem_cache_size=16MB

и динамическая генерация сертификатов

    sslcrtd_program /usr/local/libexec/squid/security_file_certgen -s /var/log/squid/ssl_db -M 16MB

Ответ или решение

Безопасное соединение между браузером и прокси-сервером Squid является важной задачей в современных условиях обеспечения конфиденциальности и целостности данных. Если у вас уже настроен Squid с базовой аутентификацией с использованием LDAP, но вы хотите зашифровать соединение с помощью TLS для обеспечения безопасности передаваемых данных (включая учетные данные), то ниже приведены шаги, которые помогут вам правильно это сделать.

1. Настройка порта HTTPS

Для начала убедитесь, что вы настроили SSL-порт в конфигурации Squid. Используйте следующий синтаксис в вашем конфигурационном файле squid.conf:

https_port A.B.C.D:8443 tls-cert=/path/to/cert tls-key=/path/to/key

Где /path/to/cert и /path/to/key представляют путь к вашему сертификату и ключу соответственно. Важно, чтобы сертификат был действительным и подписан доверенным централизованным удостоверяющим центром (CA), или был самоподписанным, но с добавлением этого сертификата в список доверенных сертификатов клиентов.

2. Настройка браузера

После настройки порта HTTPS вам нужно правильно указать параметры прокси в Firefox. В разделе настроек прокси укажите:

  • Тип прокси: HTTP
  • Адрес: A.B.C.D
  • Порт: 8443

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

3. Проверьте журналы Squid

Если при подключении вы не видите запроса аутентификации, проверьте журналы Squid на наличие ошибок. Логирование, которое вы предоставили, говорит о том, что было завершено соединение до передачи заголовков. Это может указывать на ту возможность, что ваш браузер не может установить защищенное соединение.

4. Использование SSL Bump

Если необходимо заглянуть в зашифрованный трафик, можно использовать механизм ssl-bump. Он позволяет Squid перехватывать и расшифровывать трафик. Пример настроек для этого:

http_port 192.168.2.1:8443 intercept ssl-bump cert=/usr/local/etc/squid/ssl/myCA.crt key=/usr/local/etc/squid/ssl/myCA.key generate-host-certificates=on dynamic_cert_mem_cache_size=16MB
sslcrtd_program /usr/local/libexec/squid/security_file_certgen -s /var/log/squid/ssl_db -M 16MB

5. Использование Nginx в качестве обратного прокси

Если настройки Squid не работают так, как ожидалось, вы можете рассмотреть возможность использования Nginx в качестве обратного прокси перед Squid. Nginx может обеспечить безопасное соединение с клиентом, а затем передавать запросы на Squid по локальной сети. В конфигурации нужно будет настроить SSL и базовую аутентификацию в Nginx, что добавит уровень безопасности.

Заключение

Ваша задача состоит не только в том, чтобы зашифровать соединение, но и бороться с возможными уязвимостями базовой аутентификации. Назначение TLS и аутентификации через надежные механизмы, такие как OAuth или OpenID Connect, может значительно повысить безопасность. Настроив все необходимые протоколы и механизмы, вы сможете предотвратить перехват учетных данных и обеспечивает безопасность своих пользователей.

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

Оцените материал
Добавить комментарий

Капча загружается...