LinuxForum.Fans
Тема

Squid ssl-bump, прозрачный прокси с https (443)

Автор: zenon 47 сообщений 208226 просмотров
01.03.2013 22:18 #306060


- Поддержка режима SSL-Bump Server для перехвата содержимого шифрованных HTTPS-сеансов. При поступлении первого перехватываемого HTTPS-запроса, Squid осуществляет (http://wiki.squid-cache.org/Features/BumpSslServerFirst) SSL-соединение с сервером и получает его сертификат. После этого Squid использует имя хоста из реального полученного от сервера сертификата и создаёт фиктивный сертификат, при помощи которого имитирует запрошенный сервер при взаимодействии с клиентом, продолжая при этом использовать SSL-соединение, установленное с сервером. Кроме HTTPS-соединений, указанная схема может использоваться для перехвата большинства HTTP-запросов с методом CONNECT.

Как уже где-то было замечено, кальмар потихоньку превращается в hackware...
Ну да ладно, кто нибудь настраивал?
Из любопытства хочу попробовать.
Немного не понял с вот этим:

text
ssl_bump client-first specialOnes 
ssl_bump server-first mostOthers 
ssl_bump none all 

Не понятно тут кто-куда первый-клиент-сервер...
http://www.squid-cache.org/mail-archive/squid-dev/201206/0089.html

02.03.2013 00:44 #306068

Ну почти работает.
Сертификаты:

text
# mkdir /etc/squid/ssl && cd /etc/squid/ssl && chown -R squid:squd /etc/squid/ssl
# openssl genrsa -out /etc/squid/ssl/squid.key
# openssl req -new -key /etc/squid/ssl/squid.key -out /etc/squid/ssl/squid.csr
# openssl x509 -req -days 3650 -in /etc/squid/ssl/squid.csr -signkey /etc/squid/ssl/squid.key -out /etc/squid/ssl/squid.pem

В squd.conf:

text
http_port 3128 transparent
https_port 3129 intercept ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=4MB cert=/etc/squid/ssl/squid.pem key=/etc/squi /ssl/squid.key
sslproxy_flags DONT_VERIFY_PEER
sslproxy_cert_error allow all
always_direct allow all

ssl_bump client-first all ssl_bump server-first all ssl_bump none all sslcrtd_program /usr/libexec/squid/ssl_crtd -s /var/lib/ssl_db -M 4MB

Важный момент путь до sslcrtd_program /usr/libexec/squid/ssl_crtd
И каталог /var/lib/ssl_db
Иначе будет вываливаться с ошибкой в логе:

text
(squid-1): The ssl_crtd helpers are crashing too rapidly, need help!

Пересоздать базу сертификатов так:

text

# rm -rf /var/lib/ssl_db && /usr/libexec/squid/ssl_crtd -c -s /var/lib/ssl_db && chown -R squid:squid /var/lib/ssl_db
text
# squid -v
Squid Cache: Version 3.3.1
configure options:  '--prefix=/usr' '--build=x86_64-pc-linux-gnu' '--host=x86_64-pc-linux-gnu' '--mandir=/usr/share/man' '--infodir=/usr/share/info' '--datadir=/usr/share' '--sysconfdir=/etc' '--localstatedir=/var/lib' '--libdir=/usr/lib64' '--disable-dependency-tracking' '--sysconfdir=/etc/squid' '--libexecdir=/usr/libexec/squid' '--localstatedir=/var' '--with-pidfile=/run/squid.pid' '--datadir=/usr/share/squid' '--with-logdir=/var/log/squid' '--with-default-user=squid' '--enable-removal-policies=lru,heap' '--enable-storeio=aufs,diskd,rock,ufs' '--enable-disk-io' '--enable-auth' '--enable-auth-basic=MSNT,MSNT-multi-domain,NCSA,POP3,getpwnam,SMB,LDAP,PAM,NIS,DB' '--enable-auth-digest=file,LDAP,eDirectory' '--enable-auth-ntlm=smb_lm' '--enable-auth-negotiate=none' '--enable-external-acl-helpers=file_userip,session,unix_group,wbinfo_group,LDAP_group,eDirectory_userip' '--enable-log-daemon-helpers' '--enable-url-rewrite-helpers' '--enable-cache-digests' '--enable-delay-pools' '--enable-eui' '--enable-icmp' '--enable-follow-x-forwarded-for' '--enable-esi' '--with-large-files' '--disable-strict-error-checking' '--with-libcap' '--disable-ipv6' '--enable-snmp' '--enable-ssl' '--enable-ssl-crtd' '--enable-icap-client' '--enable-ecap' '--enable-linux-netfilter' '--enable-zph-qos' '--with-netfilter-conntrack' 'build_alias=x86_64-pc-linux-gnu' 'host_alias=x86_64-pc-linux-gnu' 'CC=gcc' 'CFLAGS=-march=native -mtune=native -O2 -pipe -g0 -Wno-all' 'LDFLAGS=-Wl,-O1 -Wl,--as-needed' 'CXX=g++' 'CXXFLAGS=-march=native -mtune=native -O2 -pipe -g0 -Wno-all' 'PKG_CONFIG_PATH=/usr/lib64/pkgconfig'
text
# netstat -nap | grep 312
tcp        0      0 0.0.0.0:3128            0.0.0.0:*               LISTEN      24713/(squid-1)     
tcp        0      0 0.0.0.0:3129            0.0.0.0:*               LISTEN      24713/(squid-1)     

Iptables - для проверки на один ip:

text
iptables -t nat -A PREROUTING -s 192.168.0.8 -p tcp --dport 80 -j REDIRECT --to-port 3128
iptables -t nat -A PREROUTING -s 192.168.0.8 -p tcp --dport 443 -j REDIRECT --to-port 3129
02.03.2013 21:18 · отредактировано #306212

А почта гугл у вас работает ? В недавнем прошлом пробовал такой маневр, но половина сайтов не работала поэтому пришлось отказаться.

02.03.2013 21:26 #306214

В Midori заходит на гуглопочту нормально.
На iPad в Safari ругнулся на сертификат, но зашёл.

02.03.2013 21:28 #306215

ы. Строка про https в сквиде вот такая:

text
https_port 3129 transparent ssl-bump 
generate-host-certificates=on 
dynamic_cert_mem_cache_size=4MB 
cert=/etc/squid/ssl/squid.pem 
key=/etc/squid/ssl/squid.key

Только в одну строку.

21.03.2013 10:50 #310543

Всем доброго времени суток! Помогите пожалуйста вот с чем:
прописал в конфиге:

ssl_bump client-first all
ssl_bump server-first all
ssl_bump none all

после рестарта squid выдает:

Останавливается squid: 2013/03/21 10:55:24| aclParseAccessLine: squid.conf line 71: ssl_bump client-first all
2013/03/21 10:55:24| aclParseAccessLine: expecting 'allow' or 'deny', got 'client-first'.
2013/03/21 10:55:24| aclParseAccessLine: squid.conf line 72: ssl_bump server-first all
2013/03/21 10:55:24| aclParseAccessLine: expecting 'allow' or 'deny', got 'server-first'.
2013/03/21 10:55:24| aclParseAccessLine: squid.conf line 73: ssl_bump none all
2013/03/21 10:55:24| aclParseAccessLine: expecting 'allow' or 'deny', got 'none'.

прописываю:

rm -rf /var/lib/ssl_db && /usr/libexec/squid/ssl_crtd -c -s /var/lib/ssl_db && chown -R squid:squid /var/lib/ssl_db

а он мне

-bash: /usr/libexec/squid/ssl_crtd: Нет такого файла или каталога
21.03.2013 15:19 #310613

ruldik, пути проверяй они от Gentoo могут отличаться.

21.03.2013 15:30 · отредактировано #310619

У меня CentOS

text
Squid Version 3.2.7
configure options:  '--build=x86_64-unknown-linux-gnu' '--host=x86_64-unknown-linux-gnu' '--target=x86_64-redhat-linux-gnu' '--program-prefix=' '--prefix=/usr' '--exec-prefix=/usr' '--bindir=/usr/bin' '--sbindir=/usr/sbin' '--sysconfdir=/etc' '--datadir=/usr/share' '--includedir=/usr/include' '--libdir=/usr/lib64' '--libexecdir=/usr/libexec' '--sharedstatedir=/var/lib' '--mandir=/usr/share/man' '--infodir=/usr/share/info' '--exec_prefix=/usr' '--libexecdir=/usr/lib64/squid' '--localstatedir=/var' '--datadir=/usr/share/squid' '--sysconfdir=/etc/squid' '--with-logdir=$(localstatedir)/log/squid' '--with-pidfile=$(localstatedir)/run/squid.pid' '--disable-dependency-tracking' '--enable-arp-acl' '--enable-follow-x-forwarded-for' '--enable-auth' '--enable-auth-basic=DB,LDAP,MSNT,MSNT-multi-domain,NCSA,NIS,PAM,POP3,RADIUS,SASL,SMB,getpwnam' '--enable-auth-ntlm=smb_lm,fake' '--enable-auth-digest=file,LDAP,eDirectory' '--enable-auth-negotiate=kerberos' '--enable-external-acl-helpers=ip_user,ldap_group,session,unix_group,wbinfo_group' '--enable-cache-digests' '--enable-cachemgr-hostname=localhost' '--enable-delay-pools' '--enable-epoll' '--enable-icap-client' '--enable-ident-lookups' '--enable-linux-netfilter' '--enable-referer-log' '--enable-removal-policies=heap,lru' '--enable-snmp' '--enable-ssl' '--enable-storeio=aufs,diskd,ufs' '--enable-useragent-log' '--enable-wccpv2' '--enable-esi' '--with-aio' '--with-default-user=squid' '--with-filedescriptors=16384' '--with-dl' '--with-openssl' '--with-pthreads' 'build_alias=x86_64-unknown-linux-gnu' 'host_alias=x86_64-unknown-linux-gnu' 'target_alias=x86_64-redhat-linux-gnu' 'CFLAGS=-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -fpie' 'CXXFLAGS=-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -fpie' 'PKG_CONFIG_PATH=/usr/lib64/pkgconfig:/usr/share/pkgconfig'
[root@Area-51 ~]#
08.05.2013 11:30 · отредактировано #319780

"zenon⇓" написал:
&& chown -R squid:squd /etc/squid/ssl
а не?
text
&& chown -R proxy:proxy /etc/squid/ssl

жалко что нет поддержки тегов color и bold внутри тега code

08.05.2013 11:44 · отредактировано #319782
"zenon⇓" написал:
key=/etc/squi /ssl/squid.key
text
key=/etc/squid/ssl/squid.key
08.05.2013 12:23 · отредактировано #319790

zenon, остановился на шаге:

"zenon⇓" написал:
Важный момент путь до sslcrtd_program /usr/libexec/squid/ssl_crtd
нет ее у меня, сделал squid -v|grep ssl и ничего не выдало. собирать и ставить их исходников? У меня тогда sams2 кони двинет..
мой sqiud -v
Показать
text
root@gw5:/# squid -v
Squid Cache: Version 3.1.6
configure options:  '--build=x86_64-linux-gnu' '--prefix=/usr' '--includedir=${prefix}/include' '--mandir=${prefix}/share/man' '--infodir=${prefix}/share/info' '--sysconfdir=/etc' '--localstatedir=/var' '--libexecdir=${prefix}/lib/squid3' '--disable-maintainer-mode' '--disable-dependency-tracking' '--disable-silent-rules' '--srcdir=.' '--datadir=/usr/share/squid3' '--sysconfdir=/etc/squid3' '--mandir=/usr/share/man' '--with-cppunit-basedir=/usr' '--enable-inline' '--enable-async-io=8' '--enable-storeio=ufs,aufs,diskd' '--enable-removal-policies=lru,heap' '--enable-delay-pools' '--enable-cache-digests' '--enable-underscores' '--enable-icap-client' '--enable-follow-x-forwarded-for' '--enable-auth=basic,digest,ntlm,negotiate' '--enable-basic-auth-helpers=LDAP,MSNT,NCSA,PAM,SASL,SMB,YP,DB,POP3,getpwnam,squid_radius_auth,multi-domain-NTLM' '--enable-ntlm-auth-helpers=smb_lm,' '--enable-digest-auth-helpers=ldap,password' '--enable-negotiate-auth-helpers=squid_kerb_auth' '--enable-external-acl-helpers=ip_user,ldap_group,session,unix_group,wbinfo_group' '--enable-arp-acl' '--enable-esi' '--disable-translation' '--with-logdir=/var/log/squid3' '--with-pidfile=/var/run/squid3.pid' '--with-filedescriptors=65536' '--with-large-files' '--with-default-user=proxy' '--enable-linux-netfilter' 'build_alias=x86_64-linux-gnu' 'CFLAGS=-g -O2 -g -Wall -O2' 'LDFLAGS=' 'CPPFLAGS=' 'CXXFLAGS=-g -O2 -g -Wall -O2' --with-squid=/tmp/buildd/squid3-3.1.6

ваш: sqiud -v

Показать
text
# squid -v
Squid Cache: Version 3.3.1
configure options:  '--prefix=/usr' '--build=x86_64-pc-linux-gnu' '--host=x86_64-pc-linux-gnu' '--mandir=/usr/share/man' '--infodir=/usr/share/info' '--datadir=/usr/share' '--sysconfdir=/etc' '--localstatedir=/var/lib' '--libdir=/usr/lib64' '--disable-dependency-tracking' '--sysconfdir=/etc/squid' '--libexecdir=/usr/libexec/squid' '--localstatedir=/var' '--with-pidfile=/run/squid.pid' '--datadir=/usr/share/squid' '--with-logdir=/var/log/squid' '--with-default-user=squid' '--enable-removal-policies=lru,heap' '--enable-storeio=aufs,diskd,rock,ufs' '--enable-disk-io' '--enable-auth' '--enable-auth-basic=MSNT,MSNT-multi-domain,NCSA,POP3,getpwnam,SMB,LDAP,PAM,NIS,DB' '--enable-auth-digest=file,LDAP,eDirectory' '--enable-auth-ntlm=smb_lm' '--enable-auth-negotiate=none' '--enable-external-acl-helpers=file_userip,session,unix_group,wbinfo_group,LDAP_group,eDirectory_userip' '--enable-log-daemon-helpers' '--enable-url-rewrite-helpers' '--enable-cache-digests' '--enable-delay-pools' '--enable-eui' '--enable-icmp' '--enable-follow-x-forwarded-for' '--enable-esi' '--with-large-files' '--disable-strict-error-checking' '--with-libcap' '--disable-ipv6' '--enable-snmp' '--enable-ssl' '--enable-ssl-crtd' '--enable-icap-client' '--enable-ecap' '--enable-linux-netfilter' '--enable-zph-qos' '--with-netfilter-conntrack' 'build_alias=x86_64-pc-linux-gnu' 'host_alias=x86_64-pc-linux-gnu' 'CC=gcc' 'CFLAGS=-march=native -mtune=native -O2 -pipe -g0 -Wno-all' 'LDFLAGS=-Wl,-O1 -Wl,--as-needed' 'CXX=g++' 'CXXFLAGS=-march=native -mtune=native -O2 -pipe -g0 -Wno-all' 'PKG_CONFIG_PATH=/usr/lib64/pkgconfig'

я так понял, моя задача - вручную найти отличя, собрать и поставить?

08.05.2013 16:14 #319819
Me_Shock написал:

я так понял, моя задача - вручную найти отличя, собрать и поставить?

Да.

14.05.2013 10:34 · отредактировано #320523

"zenon⇓" написал:
Me_Shock пишет:
я так понял, моя задача - вручную найти отличя, собрать и поставить?
Да.
Не вышло. Компиляция squid3 lastest на clear console debian7 stable amd64. Делал по доке. Вроде поставил, а скрипта запуска сервиса в /etc/init.d/squid или /etc/init.d/squid3 нет, и вообще какое-то все мертовое и кривое. Как норм собрать, чтобы было как "из коробки/из репозитория".
мои репы:
Показать
text
# Debian packages for stable
deb http://debian.nsu.ru/debian/ stable main contrib non-free
# Uncomment the deb-src line if you want 'apt-get source'
# to work with most packages.
deb-src http://debian.nsu.ru/debian/ stable main contrib non-free

# Security updates for stable deb http://security.debian.org/ stable/updates main contrib non-free

как собирал и ставил:

Показать
[console]# cd ~
# aptitude install gcc cpp binutils make automake libssl-dev
# aptitude build-dep squid3
# wget 'http://www.squid-cache.org/Versions/v3/3.3/squid-3.3.4-20130512-r12548.tar.gz'
# tar xzf squid-3.3.4-20130512-r12548.tar.gz && cd squid-3.3.4-20130512-r12548/
./configure --prefix=/usr --localstatedir=/var --libexecdir=${prefix}/lib/squid --srcdir=. --datadir=${prefix}/share/squid --sysconfdir=/etc/squid --with-default-user=proxy --with-logdir=/var/log --with-pidfile=/var/run/squid.pid --enable-ssl --enable-ssl-crtd
# make
# make install[/console]
т.е. как я понял, пакет из репозитория собран без поддержки ssl-bump а я норм собрать не могу.((( Прошу поделиться опытом сборки / необходимыми клячами конфигурирования именно под debian7 ибо на офсайте инфа только вскользь.

14.05.2013 12:53 #320536
"Me_Shock⇓" написал:
Как норм собрать, чтобы было как "из коробки/из репозитория".

Собери пакет, самый простой способ - checkinstall.

"Me_Shock⇓" написал:
Вроде поставил, а скрипта запуска сервиса в /etc/init.d/squid или /etc/init.d/squid3 нет

Весьма вероятно что при самосборе init-скрипт придется самому искать, но можно забрать из стандартного deb-пакета (из реп).

14.05.2013 13:06 · отредактировано #320537

"zenon⇓" написал:
Собери пакет, самый простой способ - checkinstall.
поставил пакет checkinstall, зашел в директорию с распакованными сорсами, сделал # checkinstall -D - оно попросило заметку, написал. Сейчас ставит.
UPD: стало доходить, оно на ставит а хочет мне deb-пакет собрать, который я штатно поставлю ч/з # dpkg -i
14.05.2013 13:11 · отредактировано #320540

Снова трабл:

Показать
text
======================== Installation successful ==========================

Copying documentation directory... ./ ./COPYING ./RELEASENOTES.html ./README ./CONTRIBUTORS ./ChangeLog ./INSTALL ./COPYRIGHT ./doc/ ./doc/manuals/ ./doc/manuals/Makefile ./doc/manuals/language.list ./doc/manuals/Makefile.am ./doc/manuals/Makefile.in ./doc/manuals/Substitute.am ./doc/debug-sections.txt ./doc/Makefile ./doc/Makefile.am ./doc/Makefile.in ./CREDITS

Copying files to the temporary directory... OK

Stripping ELF binaries and libraries...OK

Compressing man pages...OK

Building file list...OK

Building Debian package... FAILED!

*** Failed to build the package

Do you want to see the log file? [y]: dpkg-deb: error: parsing file '/var/tmp/tmp.0Cqg76tEGs/package/DEBIAN/control' near line 7 package 'squid-3.3.4-20130512': error in Version string 'r12548-1': version number does not start with digit

Пробовал указывать параметры сборки от дефолтного пакета squid3 из репозитория но ./configure их не все понял и копание в этом направлении "у гугла вызвали затруднения" Так и не смог собрать ни по офдоке, ни чекинсталом ни заимствовав список ключей сборки от оригинального.(

15.05.2013 08:11 · отредактировано #320595

Все же решил воткнуть в исходники ключи от пакета. Выдает такое:

text
configure: error: unrecognized argument to --enable-auth: basic,digest,ntlm,negotiate

на мое:

text
... '--enable-auth=basic,digest,ntlm,negotiate' ...

В хелпе:

--enable-auth
Build global support for authentication. The list of schemes and helpers to be enabled is defined elsewhere
Че?
UPD: подошло просто
text
... '--enable-auth' ...
16.05.2013 09:51 #320734

zenon, все сделал, в /var/log/squid3/cache.log вот такое:

text
2013/05/16 12:32:55 kid1|  NF getsockopt(SO_ORIGINAL_DST) failed on local=192.168.0.254:3128 remote=192.168.0.65:2647 FD 12 flags=33: (92) Protocol not availble
2013/05/16 12:33:07 kid1|  NF getsockopt(SO_ORIGINAL_DST) failed on local=192.168.0.254:3128 remote=192.168.0.65:2649 FD 12 flags=33: (92) Protocol not availble
2013/05/16 12:33:38 kid1| ERROR: No forward-proxy ports configured.
2013/05/16 12:33:51 kid1| ERROR: No forward-proxy ports configured.

в iptables добавил для своей машины (192.168.0.65):

text
iptables -t nat -A PREROUTING -s 192.168.0.65 -p tcp --dport 80 -j REDIRECT --to-port 3128
iptables -t nat -A PREROUTING -s 192.168.0.65 -p tcp --dport 443 -j REDIRECT --to-port 3129

прозрачное http норм, а прозрачное https пинает в окно:

Показать
text
Сертификат безопасности сайта не является доверенным!
Вы попытались перейти на сайт www.google.ru, но сервер предоставил сертификат, выданный организацией, которая не классифицируется операционной системой компьютера как доверенная. Это может означать, что сервер имеет свои учетные данные защиты, которым Google Chrome не может доверять, или что вмешался злоумышленник.
Невозможно продолжить, так как для домена включена повышенная защита.

16.05.2013 12:20 #320741
"Me_Shock⇓" написал:
прозрачное https пинает в окно:

У меня что-то подобное было, но возможность продолжить была.
Вообще имей ввиду что https через squid - это чистой воды хак, и не факт что всё будет работать.

16.05.2013 13:44 · отредактировано #320748
"zenon⇓" написал:
У меня что-то подобное было, но возможность продолжить была.

[console]-enable-ssl — включает поддержку ssl режима
--enable-ssl-crtd — генерацией сертификатов занимается отдельный процесс, а не сам прокси сервер.
--with-openssl — путь куда был установлен кастомный openssl[/console] третий ключ я видимо забыл при сборке, от того и не пускает..

Кому интересно как я делал для debian7 amd64 могу пока показать только этот оочень сырой гуглдок:

Войдите или зарегистрируйтесь, чтобы ответить.