URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID12
Нить номер: 7201
[ Назад ]

Исходное сообщение
"squid transparent https, google drive dropbox"

Отправлено sasiska , 16-Июл-15 12:56 
Здравствуйте, имеется прокси сервер на фря:

9.3-RELEASE FreeBSD 9.3-RELEASE #2: Thu Jun 11 09:52:58 MSK 2015     user@gate.local:/usr/obj/usr/src/sys/MYKERNEL  amd64

И Есть вопрос
Шлюз с nat+ipfw+squid, прокси работает в прозрачном режиме, так же прикручен sslbump, все работает, но есть проблема с google drive, dropbox и яндекс диском, подключение не происходит. Если прописать проксю в браузере вида 192.168.0.* 3128 то, гугл драйв начинает работать, но по https перестает блокироваться аудио видео, редиректор блокирует запрещенные сайты, но при этом почему то не перенаправляет на корп. ресурс, а просто открывается пустая страница
Готов добавить в исключения (allow_site), но не понимаю как корректно занести все поддомены, пробовал на яндексе, добавив:
yandex.ru
disk.yandex.ru
яндекс диск стал подключаться за 5-10 минут, при этом если я открываю яндекс то, в свойствах безопасности я вижу сертификат яндекса (а не свой), если я иду по вкладкам то, содержимое страниц начинает отображаться не полность, возможно там используются еще какие то сертификаты, которые прокси уже не пропускает, но с гуглом не получилось даже так. В поддержка гугла есть https://support.google.com/drive/answer/2589954?hl=ru вся имена, которые надо добавить в исключения, но не очень понятно как это сделать корректно, и в каком виде
Если смотреть логи, то весь трафик идет на googledrive.com:433

Пробовал добавлять googledrive.\com, но результат тот же

конфиг сквида (убрал блокировку видео\аудио и флеша для сокращения):


shutdown_lifetime 2 seconds
#########################################################################
acl localnet src 192.168.0.0/24
###########################################################################

acl SSL_ports port 443
acl Safe_ports port 80          # http
acl Safe_ports port 21          # ftp
acl Safe_ports port 443         # https
acl Safe_ports port 70          # gopher
acl Safe_ports port 210         # wais
acl Safe_ports port 1025-65535  # unregistered ports
acl Safe_ports port 280         # http-mgmt
acl Safe_ports port 488         # gss-http
acl Safe_ports port 591         # filemaker
acl Safe_ports port 777         # multiling http
acl CONNECT method CONNECT

http_access deny !Safe_ports

# Deny CONNECT to other than secure SSL ports
http_access deny CONNECT !SSL_ports

# Only allow cachemgr access from localhost

acl webserver src 192.168.0.30/32
http_access allow manager localhost
http_access allow manager webserver
http_access deny manager

cachemgr_passwd ********* all

http_access deny to_localhost

acl allow_sites url_regex "/usr/local/etc/squid/allow_site"

###########################################################################
http_access allow localnet
http_access allow localhost
#######################################################################
http_access deny all
#######################################################################

# Squid normally listens to port 3128
http_port 3128
http_port 3129 intercept
https_port 3127 intercept ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=4MB cert=/usr/local/etc/squid/squid.pem key=/usr/local/etc/squid/squid.pem

redirect_program /usr/local/rejik3/redirector /usr/local/rejik3/redirector.conf

ssl_bump none domains_ssl_direct
ssl_bump server-first all

# Also add the following lines to enable SSL bumping:
always_direct allow all !domains_ssl_direct
ssl_bump client-first all

# the following two options are unsafe and not always necessary:
sslproxy_cert_error allow all
sslproxy_flags DONT_VERIFY_PEER

#sslproxy_capath /var/lib/ssl_db/certs

sslcrtd_program /usr/local/libexec/squid/ssl_crtd -s /var/lib/ssl_db -M 4MB
#Access.log
#log_fqdn on
access_log /var/log/squid/access.log squid !user-gods


# Uncomment and adjust the following to add a disk cache directory.
cache_log /var/log/squid/cache.log
cache_dir ufs /var/squid/cache 8192 16 256
maximum_object_size 10 MB
cache_effective_user squid
#cachemgr_passwd none all
# Leave coredumps in the first cache dir
coredump_dir /var/squid/cache/squid

#
# Add any of your own refresh_pattern entries above these.
#
refresh_pattern ^ftp:         &n... 1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern -i (/cgi-bin/|\?) 0     0%      0
refresh_pattern .               0       20%     4320

dns_v4_first on
redirector_access deny localhost



Содержание

Сообщения в этом обсуждении
"squid transparent https, google drive dropbox"
Отправлено Alexander Sheiko , 16-Июл-15 23:52 
> все работает, но есть проблема с google drive, dropbox и яндекс
> диском, подключение не происходит. Если прописать проксю в браузере вида 192.168.0.*
> 3128 то, гугл драйв начинает работать, но по https перестает блокироваться
> аудио видео, редиректор блокирует запрещенные сайты, но при этом почему то
> не перенаправляет на корп. ресурс, а просто открывается пустая страница

Когда Вы ставите прокси в броузере, соединение идёт методом connect и прокси видит лишь домены, без полных ссылок. По этому и не блокирует.

Мне кажется, что нужно копать в сторону того, чтобы сертификат прокси сервера не использовался для установки соединений с серверами. В настройках прокси должны быть подобные опции. Когда устанавливается TLS соединение, возможны варианты, как использования сертификатов клиента (ваш прокси) и сервера (упомянутые сайты), так и использование только сертификатов сервера. Так вот - Ваш проси имеет "кривой" сертификат, который не пройдёт проверку на вышеупомянутых серверах и они его отбросят - соединение не установится.


"squid transparent https, google drive dropbox"
Отправлено sasiska , 17-Июл-15 13:01 
> Когда Вы ставите прокси в броузере, соединение идёт методом connect и прокси

Но при этом запрещенные ресурсы фильтруются, даже не смотря на https, тот же ютуб, вконтакт по https не открывается на пользовательских машинах.
Или при этом сам сквид не лезет в https трафик, а видит лишь доменное имя?
То есть squid увидел как пользователь ломанулся по https на страницу vk.com, и прокся его отфутболила, но при этом если пользователю будет разрешен туда доступ то, когда он зайдет трафик расшифровать, как при ssl_bump будет невозможно?

> видит лишь домены, без полных ссылок. По этому и не блокирует.

Да, это понятно

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

Ну я и хотел добавить в исключения все имена, но через url_regex указываю основные домены, такие как google.com googledrive.com, но при это их поддомены, как написано в статье поддержки гугла, например drive.google.com или docs.google.com почему то не попадают в исключения. Так же и с яндексом, какие то поддомены яндекса, например market.yandex.ru или maps.yandex.ru нормально ходят мимо прокси, но именно disk.yandex.ru не хочет это делать

>Так вот - Ваш проси имеет "кривой" сертификат, который не пройдёт проверку на вышеупомянутых серверах

Кривой так как самоподписанный?


"squid transparent https, google drive dropbox"
Отправлено sasiska , 17-Июл-15 13:01 
> Когда Вы ставите прокси в броузере, соединение идёт методом connect и прокси

Но при этом запрещенные ресурсы фильтруются, даже не смотря на https, тот же ютуб, вконтакт по https не открывается на пользовательских машинах.
Или при этом сам сквид не лезет в https трафик, а видит лишь доменное имя?
То есть squid увидел как пользователь ломанулся по https на страницу vk.com, и прокся его отфутболила, но при этом если пользователю будет разрешен туда доступ то, когда он зайдет трафик расшифровать, как при ssl_bump будет невозможно?

> видит лишь домены, без полных ссылок. По этому и не блокирует.

Да, это понятно

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

Ну я и хотел добавить в исключения все имена, но через url_regex указываю основные домены, такие как google.com googledrive.com, но при это их поддомены, как написано в статье поддержки гугла, например drive.google.com или docs.google.com почему то не попадают в исключения. Так же и с яндексом, какие то поддомены яндекса, например market.yandex.ru или maps.yandex.ru нормально ходят мимо прокси, но именно disk.yandex.ru не хочет это делать

>Так вот - Ваш проси имеет "кривой" сертификат, который не пройдёт проверку на вышеупомянутых серверах

Кривой так как самоподписанный?


"squid transparent https, google drive dropbox"
Отправлено Alexander Sheiko , 17-Июл-15 22:04 
> Или при этом сам сквид не лезет в https трафик, а видит лишь доменное имя?

Именно так.

> но при этом если пользователю будет разрешен туда доступ то, когда он зайдет трафик расшифровать, как при ssl_bump будет невозможно?

Да. Ибо он заходит методом connect. После установки соединения все команды передаются уже зашифрованными.

> Кривой так как самоподписанный?

Да.

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


"squid transparent https, google drive dropbox"
Отправлено sasiska , 20-Июл-15 12:08 
> Ищите опции, отвечающие за использование сертификата прокси при работе с сайтами. Его
> передачу сайтам нужно отключить.

ну я так и пытался сделать, создал acl
acl domains_ssl_direct url_regex "/usr/local/etc/squid/allow_site"

в файле allow_site дословно написал yandex.ru disk.yandex.ru

дальше исключил из сслбумпа

ssl_bump none domains_ssl_direct

И сам яндекс открывается нормально, с сертификатом самого яндекса, а не сгенерированного проксей, но яндекс диск не работает.
несмотря на url_regex почему то он добавил не все поддомены сайта, то есть у той же radio.yandex.ru сертификат уже попадает самоподписанный


ps может кому то поможет, яндекс диск сейчас работает
порядок действий такой:
делаем acl куда добавим все доменные имена
acl domains_ssl_direct url_regex "/usr/local/etc/squid/allow_site"
url_regex - означает, что надо включить поддомены (если я ничего не путаю)
в сам файл allow_site добавим записи для этой acl, для яндекса disk.yandex.ru и webdav.yandex.ru, этого оказалось достаточно
Дальше делаем исключение из sll_bump, где domains_ssl_direct - вышесозднная acl

ssl_bump none domains_ssl_direct

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


"squid transparent https, google drive dropbox"
Отправлено Alexander Sheiko , 20-Июл-15 23:36 
> в файле allow_site дословно написал yandex.ru disk.yandex.ru
> дальше исключил из сслбумпа
> ssl_bump none domains_ssl_direct
> И сам яндекс открывается нормально, с сертификатом самого яндекса, а не сгенерированного

Это не то. Вы выключили подмену сертификата для этих доменов. А нужно выключить не это, а передачу самоподписанного сертификата прокси при установке TLS соединения с сервером. TLS соединение с сервером может осуществляться, как с использованием только сертификата сервера (что нам нужно), так и с обоюдным использованием сертификатов сервера и прокси (что нам не нужно).

> url_regex - означает, что надо включить поддомены (если я ничего не путаю)

url_regex означает, что к списку применяется регулярное выражение.


"squid transparent https, google drive dropbox"
Отправлено Alexander Sheiko , 20-Июл-15 23:39 
> url_regex означает, что к списку применяется регулярное выражение.

Опечатка - сам список является регулярными выражениями.