LINUX.ORG.RU
ФорумAdmin

Squid 4.8 выборочно блочит https

 , ,


0

1

Потребовалось уйти от прокси с подменой сертификатов на прозрачный прокси без подмены. Было сделано: CentOS 7+squid4.8+dhcp+dns(named) Цель: работа по белому списку. Пока не отлажу - деление на группы не ввожу, да и тестировать удобней... Результат: некоторые сайты работают нормально - e1.ru, yandex.ru некоторые сайты сквид запрещает, не смотря на то, что они в белом списке
yaklass.ru
dnevnik.ru

Опытным путём выяснилось, что yaklass.ru запрещён из-за компонентов с других сайтов - https://ykl-upl.azureedge.net/upload/CustomLandingPageFiles/id-32610/ver-8/im... и прочих

В чем я дурак?

Белый список:

.e1.ru
.yandex.ru
.azureedge.net
.cdnjs.cloudflare.com
.www.yaklass.ru
.cdn.mathjax.org
.stats.g.doubleclick.net
.adriver.ru
.googleadservices.com
.amazonaws.com
.visualstudio.com
.googleapis.com
.bootstrapcdn.com
.googletagmanager.com
.dnevnik.ru

Конфиг squid:

acl localnet src 192.168.16.0/24 # локалка vm

acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 443 # https
acl CONNECT method CONNECT

#Белый список сайтов, по которому будет работать фильтр
acl _white dstdomain «/etc/squid/acl/white.acl»

#DNS для Squid. на клиентах прилетает по DHCP 192.168.16.1 (ip CentOS)
dns_nameservers 127.0.0.1

#Порты http
http_port 192.168.16.1:3128
http_port 192.168.16.1:3129 intercept
https_port 192.168.16.1:3130 intercept ssl-bump options=ALL:NO_SSLv3 connection-auth=off cert=/etc/squid/squidCA.pem

#принимаем даже ошибочные ssl сертификаты
sslproxy_cert_error allow all

#peek and splice
acl step1 at_step SslBump1
ssl_bump peek step1
ssl_bump splice all

sslcrtd_program /usr/local/squid/libexec/security_file_certgen -s /usr/local/squid/var/cache/squid/ssl_db -M 4MB
#ВРУЧНУЮ ВЫПОЛНИТЬ ПРОГРАММУ /usr/local/squid/libexec/security_file_certgen -c -s /usr/local/squid/var/cache/squid/ssl_db -M 4MB

#НЕ ЗАБЫТЬ НАСТРОИТЬ ПРАВА НА ПАПКУ СКВИДА, ГДЕ КЕШ на [23] squid /usr/local/squid/var/cache/squid

http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow _white
#http_access allow all
http_access deny all

#время завершения работы сквида
shutdown_lifetime 5 seconds

coredump_dir /usr/local/squid/var/cache/squid
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern . 0 20% 4320
#logfile_rotate 4
pid_filename /var/run/squid.pid

Ответ на: комментарий от pod

Из того, что напрягает:

2019/10/01 15:13:31.904| 28,3| Acl.cc(151) matches: checked: http_access = 1
2019/10/01 15:13:31.904| 28,3| Checklist.cc(63) markFinished: 0x1a5e608 answer ALLOWED for match
2019/10/01 15:13:31.904| 28,3| Checklist.cc(163) checkCallback: ACLChecklist::checkCallback: 0x1a5e608 answer=ALLOWED
2019/10/01 15:13:31.904| 28,4| FilledChecklist.cc(67) ~ACLFilledChecklist: ACLFilledChecklist destroyed 0x7ffcebacb410
2019/10/01 15:13:31.904| 28,4| Checklist.cc(197) ~ACLChecklist: ACLChecklist::~ACLChecklist: destroyed 0x7ffcebacb410
2019/10/01 15:13:31.904| 28,4| FilledChecklist.cc(67) ~ACLFilledChecklist: ACLFilledChecklist destroyed 0x7ffcebacb410
2019/10/01 15:13:31.904| 28,4| Checklist.cc(197) ~ACLChecklist: ACLChecklist::~ACLChecklist: destroyed 0x7ffcebacb410
2019/10/01 15:13:31.904| 28,4| FilledChecklist.cc(67) ~ACLFilledChecklist: ACLFilledChecklist destroyed 0x1a5e608
2019/10/01 15:13:31.904| 28,4| Checklist.cc(197) ~ACLChecklist: ACLChecklist::~ACLChecklist: destroyed 0x1a5e608
2019/10/01 15:13:31.904| 28,4| FilledChecklist.cc(67) ~ACLFilledChecklist: ACLFilledChecklist destroyed 0x7ffcebacc440
2019/10/01 15:13:31.904| 28,4| Checklist.cc(197) ~ACLChecklist: ACLChecklist::~ACLChecklist: destroyed 0x7ffcebacc440
2019/10/01 15:13:31.908| 28,3| Checklist.cc(70) preCheck: 0x7ffcebacc640 checking fast ACLs
2019/10/01 15:13:31.908| 28,5| Acl.cc(124) matches: checking access_log daemon:/usr/local/squid/var/logs/access.log

2019/10/01 15:13:31.908| 28,5| Acl.cc(124) matches: checking (access_log daemon:/usr/local/squid/var/logs/access.log line)

2019/10/01 15:13:31.908| 28,3| Acl.cc(151) matches: checked: (access_log daemon:/usr/local/squid/var/logs/access.log line) = 1
2019/10/01 15:13:31.908| 28,3| Acl.cc(151) matches: checked: access_log daemon:/usr/local/squid/var/logs/access.log = 1
2019/10/01 15:13:31.908| 28,3| Checklist.cc(63) markFinished: 0x7ffcebacc640 answer ALLOWED for match
2019/10/01 15:13:31.908| 28,4| FilledChecklist.cc(67)
~ACLFilledChecklist: ACLFilledChecklist destroyed 0x7ffcebacc640
2019/10/01 15:13:31.908| 28,4| Checklist.cc(197) ~ACLChecklist: ACLChecklist::~ACLChecklist: destroyed 0x7ffcebacc640

Ещё есть очень непонятная фигня: он проверят в белом списке не доменное имя, а ip адрес...


2019/10/01 15:13:21.858| 28,5| Acl.cc(124) matches: checking _white
2019/10/01 15:13:21.858| 28,3| DomainData.cc(110) match: aclMatchDomainList: checking '51.144.182.8'
2019/10/01 15:13:21.858| 28,3| DomainData.cc(115) match: aclMatchDomainList: '51.144.182.8' NOT found
2019/10/01 15:13:21.858| 28,3| DomainData.cc(110) match: aclMatchDomainList: checking 'none'
2019/10/01 15:13:21.858| 28,3| DomainData.cc(115) match: aclMatchDomainList: 'none' NOT found
2019/10/01 15:13:21.858| 28,3| Acl.cc(151) matches: checked: http_access = -1 async
2019/10/01 15:13:21.858| 28,3| Acl.cc(151) matches: checked: _white = 0
2019/10/01 15:13:21.858| 28,3| InnerNode.cc(97) resumeMatchingAt: checked: http_access#1 = 0
2019/10/01 15:13:21.858| 28,5| Checklist.cc(397) bannedAction: Action 'DENIED/0' is not banned

zz1666 ()
Ответ на: комментарий от vel

Дак у меня и нет в белом списке ip. Если открывать по ip доступ - на одном адресе ведь будет куча доменных имён крутиться, в том числе и не входящих в белый список...

zz1666 ()
Ответ на: комментарий от zz1666
2019/10/01 15:13:21.858| 28,5| Acl.cc(124) matches: checking _white
2019/10/01 15:13:21.858| 28,3| DomainData.cc(110) match: aclMatchDomainList: checking '51.144.182.8'
2019/10/01 15:13:21.858| 28,3| DomainData.cc(115) match: aclMatchDomainList: '51.144.182.8' NOT found
2019/10/01 15:13:21.858| 28,3| DomainData.cc(110) match: aclMatchDomainList: checking 'none'
2019/10/01 15:13:21.858| 28,3| DomainData.cc(115) match: aclMatchDomainList: 'none' NOT found

У тебя клиент идет по ip. Это всегда так при прозрачном прокси. Клиент уже все сам отрезолвил и выполняет коннект, который попадает в сквид.

При фильтрации ssl запросов acl dstdomain в http_access бессмыслен. Нужно что-то типа для фильтрации обычных запросов

acl https connections_encrypted
http_access allow !https _white
http_access allow https

Для проверки имени сертификата в https соединении используется отдельный тип acl «ssl::server_name» и использовать его нужно в «ssl_bump terminate»

vel ★★★★★ ()
Последнее исправление: vel (всего исправлений: 1)