I am trying to install squid 3.5.4 (on docker, running debian and run it in ssl-bump mode.
Compilation:
./configure --prefix=/opt/squid --srcdir=. --disable-maintainer-mode
--disable-dependency-tracking --disable-silent-rules --enable-inline
--disable-arch-native --enable-async-io=8
--enable-storeio=ufs,aufs,diskd,rock
--enable-removal-policies=lru,heap --enable-delay-pools
--enable-cache-digests --enable-icap-client
--enable-follow-x-forwarded-for
--enable-auth-basic=DB,fake,getpwnam,LDAP,MSNT-multi-domain,NCSA,NIS,PAM,POP3,RADIUS,SASL,SMB
--enable-auth-digest=file,LDAP
--enable-auth-negotiate=kerberos,wrapper
--enable-auth-ntlm=fake,smb_lm
--enable-external-acl-helpers=file_userip,kerberos_ldap_group,LDAP_group,session,SQL_session,unix_group,wbinfo_group
--enable-url-rewrite-helpers=fake --enable-eui
--enable-esi --enable-icmp --enable-zph-qos
--disable-translation --with-filedescriptors=65536
--with-large-files --with-default-user=squid
--enable-linux-netfilter
CFLAGS="-g -O2 -fPIE -Wall" LDFLAGS="-fPIE -pie -Wl,-z,relro -Wl,-z,now" CPPFLAGS="-D_FORTIFY_SOURCE=2"
CXXFLAGS="-g -O2 -fPIE " --enable-ssl --with-openssl --enable-ssl-crtd
Changed configuration (squid.conf) (rest is default):
# Squid normally listens to port 3128
http_port 9090
sslcrtd_program /opt/squid/libexec/ssl_crtd -s /opt/squid/var/lib/ssl_db -M 4MB
https_port 8080 intercept ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=4MB key=/opt/squid/certs/private.pem cert=/opt/squid/certs/public.pem
### New configuration for Squid version 3.5
acl step1 at_step SslBump1
ssl_bump peek step1
ssl_bump bump all
### New config ends
sslproxy_capath /etc/ssl/certs
sslproxy_cert_error allow all
always_direct allow all
sslproxy_flags DONT_VERIFY_PEER
Generated certificates:
openssl req -new -newkey rsa:2048 -sha256 -days 365 -nodes -x509 -keyout private.pem -out public.pem
Generate squid certs dir and change ownership:
/opt/squid/libexec/ssl_crtd -c -s /opt/squid/var/lib/ssl_db -M 4MB
chown -R squid:squid /opt/squid/var/lib/ssl_db
CA Root certs are present in the default path
squid@525f5d9c759a:/opt/squid/certs$ ls -lsthr /etc/ssl/certs | wc -l
741
I am testing this configuration, using HTTP CONNECT, configuring the proxy directly in the browser.
ISSUE:
I get the following error when the browser request hits the proxy
8zjv9ksCWknblqfZ3rjWczvKNRboHpu940olZAbvSP0JWSXhFfRRTIsHIHD2/rt/
n5/qsURq/WLodLffFxuk+bLVTDZu
-----END PRIVATE KEY-----
2015/05/04 15:13:46.468 kid1| client_side.cc(3981) sslCrtdHandleReply: Certificate for 172.17.0.7 was successfully recieved from ssl_crtd
2015/05/04 15:13:46.468 kid1| client_side.cc(3664) httpsCreate: will negotate SSL on local=172.17.0.7:2222 remote=172.17.42.1:40686 FD 10 flags=33
2015/05/04 15:13:46.468 kid1| AsyncCall.cc(26) AsyncCall: The AsyncCall ConnStateData::requestTimeout constructed, this=0x7f0357a16c10 [call105]
2015/05/04 15:13:46.468 kid1| Error negotiating SSL connection on FD 10: Success (0)
2015/05/04 15:13:46.468 kid1| AsyncCall.cc(93) ScheduleCall: comm.cc(730) will call ConnStateData::connStateClosed(FD -1, data=0x7f03575d43b8) [call95]
2015/05/04 15:13:46.468 kid1| AsyncCallQueue.cc(55) fireNext: entering ConnStateData::connStateClosed(FD -1, data=0x7f03575d43b8)
2015/05/04 15:13:46.468 kid1| AsyncCall.cc(38) make: make call ConnStateData::connStateClosed [call95]
2015/05/05 10:00:25| pinger: Initialising ICMP pinger ...
2015/05/05 10:00:25| icmp_sock: (1) Operation not permitted
2015/05/05 10:00:25| pinger: Unable to start ICMP pinger.
2015/05/05 10:00:25| icmp_sock: (1) Operation not permitted
2015/05/05 10:00:25| pinger: Unable to start ICMPv6 pinger.
2015/05/05 10:00:25| FATAL: pinger: Unable to open any ICMP sockets.
Sending a curl request shows this:
curl --proxy https://localhost:8080 -w 'n' https://google.com -v
* Rebuilt URL to: https://google.com/
* Trying ::1...
* Connected to localhost (::1) port 8080 (#0)
* Establish HTTP proxy tunnel to google.com:443
> CONNECT google.com:443 HTTP/1.1
> Host: google.com:443
> User-Agent: curl/7.42.0
> Proxy-Connection: Keep-Alive
>
* Proxy CONNECT aborted
* Connection #0 to host localhost left intact
curl: (56) Proxy CONNECT aborted
Can anyone help with this?
Рассмотрим как реализовать перехват пользовательских HTTPS-запросов в сеть интернет для дальнейшего анализа и учета их. Все ниже описанные действия производятся на Debian 9 Stretch с установленным прокси-сервером Squid 4.9.
Для работы с HTTPS трафиком необходимо, чтобы Squid был собран с следующими параметрами:
—enable-ssl-crtd —with-openssl |
ПОДСКАЗКА. Как собрать из исходников Squid 4.9 с необходимыми параметрами, можно посмотреть из этой статьи.
Для просмотра HTTPS трафика, прокси-сервер Squid должен иметь свой собственный СА сертификат, который используется для подписывания динамически генерируемых сертификатов для серверов, к которым пользователи посылают запросы.
Выполним генерацию CA сертификата и назначим права доступа для него, выполним команды:
cd /usr/local/etc/squid/ssl openssl req -new -newkey rsa:2048 -days 3650 -nodes -x509 -keyout squidca.pem -out squidca.pem chown proxy:proxy squidca.pem chmod 640 squidca.pem |
Конвертируем сертификат в формат для импорта на пользовательские системы:
openssl x509 -outform der -in squidca.pem -out squidca.crt |
ПОДСКАЗКА. Как скачать сертификат из Linux системы в Windows, можно посмотреть из этой статье.
Полученный сертификат необходимо установить в «Доверенные корневые сертификаты» на все пользовательские компьютеры, которые будут работать через прокси-сервер Squid. В доменной среде это проще всего сделать при помощи GPO (Group Policy objects).
Далее необходимо инициализировать каталог для хранения кэша имитированных сертификатов и указать разрешения на этот каталог для прокси-сервера Squid, выполним команды:
/usr/lib/squid/security_file_certgen -c -s /var/lib/ssl_db -M 4MB chown proxy:proxy -R /var/lib/ssl_db |
В файле конфигурации (/etc/squid/squid.conf) указываем следующие параметры:
http_port 3128 ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=4MB cert=/etc/squid/ssl/squidca.pem acl step1 at_step SslBump1 ssl_bump peek step1 ssl_bump bump all sslcrtd_program /usr/lib/squid/security_file_certgen -s /var/lib/ssl_db -M 4MB |
Выше описанные параметры предполагают перехват всех запросов к HTTPS сайтам. Но как показала практика такой вариант настройки может наложить некие сложности в работе некоторых сайтов и для реализации возможности указания сайтов исключения из перехвата HTTPS трафика, зададим следующие параметры:
acl nosslintercept ssl::server_name «/etc/squid/sites_nossl.txt» acl step1 at_step SslBump1 ssl_bump peek step1 ssl_bump splice nosslintercept ssl_bump bump all |
ПОЯСНЕНИЕ. Указываем ACL (nosslintercept) с указанием списка сайтов исключений (прим. /etc/squid/sites_nossl.txt) и затем в обработке ssl_bump ничего не делаем с указанными в списке сайтами, а запросы к всем остальными сайтам мы перехватываем.
Перезапускаем Squid и проверяем работу:
/etc/init.d/squid restart |
На скриншоте выше видим что запрос к сайту https://yandex.ru был успешно перехвачен прокси-сервером, о чем свидетельствует имитированный сертификат и в лог-файле /var/log/access.log будут фиксироваться все действия на данном сайте.
В случае блокирования доступа какого либо сайта средствами прокси-сервера, будет корректно отрабатывать директива DENY_INFO. Пользователь при входе на заблокированный сайт будет видеть заглушку прокси-сервера, вместо не информативного сообщения о разрыве соединения…
ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОБЛАГОДАРИ АВТОРА
ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОБЛАГОДАРИ АВТОРА
Загрузка…
День добрый.
Добился полностью прозрачного Squid’a, с генерацией самоподписанных SSL, которые вполне себе жуют большинство сайтов, работающих по HTTPS.
Примерно разобрался, как выпустить Squid через parrent proxy.
Вот кусок Squid.conf дочернего сервера (Squid1), отвечающий за parrent proxy:
Код: Выделить всё
cache_peer 192.168.0.162 parent 8080 0 ssl no-query default no-digest no-netdb-exchange originserver
cache_peer_access 192.168.0.162 allow all
never_direct allow all
К сожалению, пока не осилил, как подружить два Squid’a через SSl.
В cache.log дочернего Squid’a вылезает ошибка:
Код: Выделить всё
2014/09/25 06:25:00 kid1| fwdNegotiateSSL: Error negotiating SSL connection on FD 13: error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol (1/-1/0)
2014/09/25 06:25:00 kid1| TCP connection to 192.168.0.162/8080 failed
Аналогичная ошибка вылезает и в браузере:
Код: Выделить всё
(92) Protocol error (TLS code: SQUID_ERR_SSL_HANDSHAKE)
Handshake with SSL server failed: error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol
В связи в этим вопрос — какие сертификаты надо подсовывать родительскому Squid’у, если надо именно это?
Или настроить ему точно такую же SSL-генерацию как и дочернему?
На всякий случай, вот куски конфигов, описывающие генерацию SSL:
Дочерний squid (Squid1):
Код: Выделить всё
#HTTPS SECTION
https_port 127.0.0.1:3128 intercept ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=4MB cert=/usr/local/etc/squid/ssl/squid.pem key=/usr/local/etc/squid/ssl/root.key
http_port 127.0.0.1:3129 intercept
http_port 3130
ssl_bump server-first all
sslproxy_cert_error allow all
sslproxy_flags DONT_VERIFY_PEER
sslcrtd_program /usr/local/libexec/squid/ssl_crtd -s /usr/local/etc/squid/ssl/ssl_db -M 4MB
Родительский squid (Squid2):
Код: Выделить всё
#HTTPS SECTION
http_port 8080 ssl-bump cert=/usr/local/etc/squid/root.cer key=/usr/local/etc/squid/root.key generate-host-certificates=on
ssl_bump client-first all
sslproxy_cert_error allow all
Из одинакового у них только ключевой сертификат root.key
Сорри, раньше с сертификацией особо сталкиваться не приходилось.
Пришло время задать один сложный вопрос. Форумчане, администраторы, кто хорошо знаком со сквидом в режиме ssl-bumb с подменой сертификата, подскажите:
работает система вроде как надо, новая установка: Centos 7.4, squid/3.5.27. Сертификаты в ssl_db создаются, несмотря на то что в cache.log’е
Кликните здесь для просмотра всего текста
2018/06/08 15:02:44 kid1| Error negotiating SSL on FD 90: error:00000000:lib(0):func(0):reason(0) (5/-1/104)
2018/06/08 15:02:44 kid1| Error negotiating SSL on FD 89: error:00000000:lib(0):func(0):reason(0) (5/-1/104)
2018/06/08 15:02:44 kid1| Error negotiating SSL on FD 66: error:00000000:lib(0):func(0):reason(0) (5/-1/104)
2018/06/08 15:02:44 kid1| Error negotiating SSL on FD 91: error:00000000:lib(0):func(0):reason(0) (5/-1/104)
2018/06/08 15:02:45 kid1| Error negotiating SSL on FD 91: error:00000000:lib(0):func(0):reason(0) (5/-1/104)
2018/06/08 15:02:45 kid1| Error negotiating SSL on FD 97: error:00000000:lib(0):func(0):reason(0) (5/-1/104)
2018/06/08 15:02:45 kid1| Error negotiating SSL on FD 91: error:00000000:lib(0):func(0):reason(0) (5/-1/104)
2018/06/08 15:02:45 kid1| Error negotiating SSL on FD 96: error:00000000:lib(0):func(0):reason(0) (5/-1/104)
2018/06/08 15:02:45 kid1| Error negotiating SSL on FD 100: error:00000000:lib(0):func(0):reason(0) (5/-1/104)
2018/06/08 15:02:46 kid1| Error negotiating SSL on FD 105: error:00000000:lib(0):func(0):reason(0) (5/-1/104)
2018/06/08 15:02:46 kid1| Error negotiating SSL on FD 107: error:00000000:lib(0):func(0):reason(0) (5/-1/104)
2018/06/08 15:02:46 kid1| Error negotiating SSL on FD 115: error:00000000:lib(0):func(0):reason(0) (5/-1/104)
2018/06/08 15:02:46 kid1| Error negotiating SSL on FD 105: error:00000000:lib(0):func(0):reason(0) (5/-1/104)
2018/06/08 15:02:46 kid1| Error negotiating SSL on FD 23: error:00000000:lib(0):func(0):reason(0) (5/-1/104)
2018/06/08 15:02:46 kid1| Error negotiating SSL on FD 20: error:00000000:lib(0):func(0):reason(0) (5/-1/104)
2018/06/08 15:02:47 kid1| Error negotiating SSL on FD 31: error:00000000:lib(0):func(0):reason(0) (5/-1/104)
2018/06/08 15:03:00 kid1| Error negotiating SSL on FD 52: error:00000000:lib(0):func(0):reason(0) (5/-1/104)
2018/06/08 15:03:00 kid1| Error negotiating SSL on FD 43: error:00000000:lib(0):func(0):reason(0) (5/-1/104)
2018/06/08 15:03:04 kid1| Error negotiating SSL on FD 26: error:00000000:lib(0):func(0):reason(0) (5/-1/104)
и т.д.
Проблема в том что не пускает на некоторые сайты, возьмём для примера habr.com/. Браузер сообщает, что владелец habr.com неправильно настроил свой веб-сайт и
habr.com использует недействительный сертификат безопасности. Сертификат действителен только для следующих имён: habrahabr.ru, api.habrahabr.ru, m.habrahabr.ru, special.habrahabr.ru, www.habrahabr.ru Код ошибки: SSL_ERROR_BAD_CERT_DOMAIN
Собственно эта информация содержится в графе «дополнительное имя субъекта» созданного на сервере сертификата:
DNS-имя=habrahabr.ru
DNS-имя=api.habrahabr.ru
DNS-имя=m.habrahabr.ru
DNS-имя=special.habrahabr.ru
DNS-имя=www.habrahabr.ru
Кусок конфигурации сквида:
Кликните здесь для просмотра всего текста
# Opisanie proxy portov
http_port 3128 intercept
https_port 192.168.0.2:3129 intercept ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=4MB cert=/opt/squid/etc/cert/Dlya_vihoda.pem key=/opt/squid/etc/cert/Dlya_vihoda.key
always_direct allow all
dns_v4_first on
visible_hostname Shluz2
ssl_bump server-first all
ssl_bump none localhost
sslproxy_cert_error allow all
sslproxy_flags DONT_VERIFY_PEER
# Nastroyki slujbi ssl servera
sslcrtd_children 8 startup=1 idle=1
Такие сайты ведь будут вылавливаться и в работе пользователей. Что с этим делать?
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
День добрый.
Настраивал прозрачное проксирование Squid, + каскадирование, + SSL.
Схема такая клиент====>Squid1=====>Squid2=====>Интернет.
Добился полностью прозрачного Squid’a, с генерацией самоподписанных SSL, которые вполне себе жуют большинство сайтов, работающих по HTTPS.
Примерно разобрался, как выпустить Squid через parrent proxy.
Вот кусок Squid.conf дочернего сервера (Squid1), отвечающий за parrent proxy:
Код: Выделить всё
cache_peer 192.168.0.162 parent 8080 0 ssl no-query default no-digest no-netdb-exchange originserver
cache_peer_access 192.168.0.162 allow all
never_direct allow all
К сожалению, пока не осилил, как подружить два Squid’a через SSl.
В cache.log дочернего Squid’a вылезает ошибка:
Код: Выделить всё
2014/09/25 06:25:00 kid1| fwdNegotiateSSL: Error negotiating SSL connection on FD 13: error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol (1/-1/0)
2014/09/25 06:25:00 kid1| TCP connection to 192.168.0.162/8080 failed
Аналогичная ошибка вылезает и в браузере:
Код: Выделить всё
(92) Protocol error (TLS code: SQUID_ERR_SSL_HANDSHAKE)
Handshake with SSL server failed: error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol
В связи в этим вопрос — какие сертификаты надо подсовывать родительскому Squid’у, если надо именно это?
Или настроить ему точно такую же SSL-генерацию как и дочернему?
На всякий случай, вот куски конфигов, описывающие генерацию SSL:
Дочерний squid (Squid1):
Код: Выделить всё
#HTTPS SECTION
https_port 127.0.0.1:3128 intercept ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=4MB cert=/usr/local/etc/squid/ssl/squid.pem key=/usr/local/etc/squid/ssl/root.key
http_port 127.0.0.1:3129 intercept
http_port 3130
ssl_bump server-first all
sslproxy_cert_error allow all
sslproxy_flags DONT_VERIFY_PEER
sslcrtd_program /usr/local/libexec/squid/ssl_crtd -s /usr/local/etc/squid/ssl/ssl_db -M 4MB
Родительский squid (Squid2):
Код: Выделить всё
#HTTPS SECTION
http_port 8080 ssl-bump cert=/usr/local/etc/squid/root.cer key=/usr/local/etc/squid/root.key generate-host-certificates=on
ssl_bump client-first all
sslproxy_cert_error allow all
Из одинакового у них только ключевой сертификат root.key
Сорри, раньше с сертификацией особо сталкиваться не приходилось.
Последний раз редактировалось f_andrey 2014-09-25 11:20:42, всего редактировалось 1 раз.
Причина: Автору. пожалуйста, выбирайте соответствующий раздел форума.
Добрый день. Активна связка Squid+AD(kerberos). Начали выскакивать такие ошибки
2020/03/02 12:54:11 kid1| Error negotiating SSL connection on FD 328: error:14094416:SSL routines:ssl3_read_bytes:sslv3 alert certificate unknown (1/0)
2020/03/02 12:54:45 kid1| Error negotiating SSL connection on FD 313: error:14094416:SSL routines:ssl3_read_bytes:sslv3 alert certificate unknown (1/0)
support_resolv.cc(201): pid=8533 :2020/03/02 12:55:07| kerberos_ldap_group: ERROR: Error while resolving ip address with getnameinfo: Temporary failure in name resolution
support_sasl.cc(276): pid=8533 :2020/03/02 12:55:07| kerberos_ldap_group: ERROR: ldap_sasl_interactive_bind_s error: Can't contact LDAP server
support_ldap.cc(957): pid=8533 :2020/03/02 12:55:07| kerberos_ldap_group: ERROR: Error while binding to ldap server with SASL/GSSAPI: Can't contact LDAP server
support_resolv.cc(289): pid=8533 :2020/03/02 12:55:56| kerberos_ldap_group: ERROR: Error while resolving service record _ldap._tcp.ZARYA.INT with res_search
support_resolv.cc(77): pid=8533 :2020/03/02 12:55:56| kerberos_ldap_group: ERROR: res_search: No response for SRV query
2020/03/02 12:56:07 kid1| Error negotiating SSL connection on FD 372: error:14094416:SSL routines:ssl3_read_bytes:sslv3 alert certificate unknown (1/0)
2020/03/02 12:56:16 kid1| Error negotiating SSL connection on FD 122: error:14094416:SSL routines:ssl3_read_bytes:sslv3 alert certificate unknown (1/0)
2020/03/02 12:56:29| Error sending to ICMP packet to 64.233.161.198. ERR: (1) Operation not permitted
Mar 02 13:00:16 proxy (ext_kerberos_ldap_group_acl)[8533]: GSSAPI client step 1
Mar 02 13:00:17 proxy (ext_kerberos_ldap_group_acl)[8533]: GSSAPI Error: Unspecified GSS failure. Minor code may provide more information (Server not found in Kerberos database)
Mar 02 13:00:17 proxy (ext_kerberos_ldap_group_acl)[8533]: GSSAPI client step 1
Подскажите что нужно сделать. куда «копать»?
Смотреть в сторону DNS, у вас явные проблемы этой службой:
No response for SRV query
Error while resolving ip address with getnameinfo: Temporary failure in name resolution
DNS у меня на WІ2k8 r2. тестил, там все ок!
c ntp тоже все ок,!
куда еще смотреть?
Начали появляться такие ошибки
Mar 04 12:04:36 proxy (ext_kerberos_ldap_group_acl)[6744]: GSSAPI client step 1
Mar 04 12:04:36 proxy (ext_kerberos_ldap_group_acl)[6744]: GSSAPI client step 2
Mar 04 12:04:37 proxy (squid-1)[6737]: The squid_user helpers are crashing too rapidly, need help!
Mar 04 12:04:37 proxy squid[4212]: Squid Parent: (squid-1) process 6737 exited with status 1
Mar 04 12:04:37 proxy squid[4212]: Squid Parent: (squid-1) process 6737 will not be restarted due to repeated, frequent failures
Mar 04 12:04:37 proxy squid[4212]: Exiting due to repeated, frequent failures
Mar 04 12:04:38 proxy (ext_kerberos_ldap_group_acl)[6753]: GSSAPI client step 1
Mar 04 12:04:38 proxy (ext_kerberos_ldap_group_acl)[6753]: GSSAPI client step 1
Mar 04 12:04:38 proxy (ext_kerberos_ldap_group_acl)[6753]: GSSAPI client step 1
Mar 04 12:04:38 proxy (ext_kerberos_ldap_group_acl)[6753]: GSSAPI client step 2
Проверил еще раз DNS.
И правда появилась ошибка DFSREvent
За последние 24 часа после предоставления SYSVOL в общий доступ
зафиксированы предупреждения или сообщения об ошибках. Сбои при
репликации SYSVOL могут стать причиной проблем групповой политики.
Возникла ошибка. Код события (EventID): 0xC00004B2
Время создания: 03/04/2020 08:31:05
Строка события:
Службе репликации DFS не удалось связаться с контроллером домена , ч
тобы получить сведения о конфигурации. Репликация остановлена. Служба вновь попы
тается это сделать во время следующего цикла опроса, который произойдет через 60
мин. Это событие может быть вызвано проблемами с подключением TCP/IP, брандмауэ
ром, доменными службами Active Directory или DNS.
Дополнительные сведения:
Ошибка: 160 (Неверны один или несколько аргументов.)
......................... WSDC1 - не пройдена проверка DFSREvent
Гуглю, но пока не нагуглил, подскажите как решить проблему.
Вы не там смотрите, проверяйте взаимодействие с DNS непосредственно с роутера. Затем запустите хелпер вручную в режиме отладки и посмотрите вывод. В статьях все это есть.
- Записки IT специалиста — Форум
-
►
Серверные операционные системы -
►
Ubuntu Server/Debian -
►
Ошибка Squid+AD(kerberos)