Вопрос или проблема
У меня есть экземпляр 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, может значительно повысить безопасность. Настроив все необходимые протоколы и механизмы, вы сможете предотвратить перехват учетных данных и обеспечивает безопасность своих пользователей.
Обязательно протестируйте каждый этап настройки, чтобы убедиться, что все работает согласно ожиданиям.