LINUX.ORG.RU
решено ФорумAdmin

SSl Squid Skype

 


0

2

День добрый господа. В сети стоит debian на котором стоит squid, авторизация в нём проходи средствами kerberos. Столкнулся с такой проблемой, что скайп через сквид ходит только при открытом ssl(443) порте. Уже решил плюнуть и оставить его открытым для определённых групп, но вылезла такая беда: при таком правиле: #http_access allow SSL_ports Скайп спокойно работает. Как только пытаюсь разбить каким либо способом на группы, а например:

http_access allow fullinet SSL_ports
либо
http_access allow SSL_ports !lowinet
либо
http_access allow CONNECT fullinet SSL_ports
Правило полностью игнорируется и скайп встаёт колом, а попытки гуглить не к чему полезному не привели. Буду благодарен, если кто подскажет в чём проблема. Заранее спасибо, конфиг приведу по надобности.

squid3 -v
Squid Cache: Version 3.1.20
configure options:  '--build=i486-linux-gnu' '--prefix=/usr' '--includedir=${prefix}/include' '--mandir=${prefix}/share/man' '--infodir=${prefix}/share/info' '--sysconfdir=/etc' '--localstatedir=/var' '--libexecdir=${prefix}/lib/squid3' '--srcdir=.' '--disable-maintainer-mode' '--disable-dependency-tracking' '--disable-silent-rules' '--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' '--enable-zph-qos' '--enable-wccpv2' '--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=i486-linux-gnu' 'CFLAGS=-g -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -Wall' 'LDFLAGS=-fPIE -pie -Wl,-z,relro -Wl,-z,now' 'CPPFLAGS=-D_FORTIFY_SOURCE=2' 'CXXFLAGS=-g -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security' --with-squid=/build/squid3-tMZN4r/squid3-3.1.20



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

Ответ на: комментарий от dada
 192.168.11.11 TCP_MISS/200 3049 CONNECT static.skypeassets.com:443 - DIRECT/23.212.228.108 -
192.168.11.11 TCP_MISS/200 4632 CONNECT ads1.msads.net:443 - DIRECT/172.227.102.201 -
1192.168.11.11 TCP_MISS/200 5657 CONNECT rad.msn.com:443 - DIRECT/207.46.194.25 -
192.168.11.11 TCP_MISS/200 4877 CONNECT ads1.msads.net:443 - DIRECT/172.227.102.201 -
192.168.11.11 TCP_MISS/200 915 CONNECT apps.skype.com:443 - DIRECT/23.212.182.161 -

192.168.11.11 TCP_MISS/200 2472 CONNECT apps.skype.com:443 - DIRECT/23.212.182.161 -
Namiz
() автор топика

Я не совсем понял... Стоит задача запретить весь интернет, кроме скайпа? Я не могу найти других причин банить 443 порт.

l0stparadise ★★★★★
()
Ответ на: комментарий от l0stparadise

НУ не совсем так, по сути без этого #http_access allow SSL_ports правила все хттпс сайты прекрасно отрабатывают, но методом проб выяснил, что скайп начинает работает только при указании такого правила. Ну и я решил таким методом разбить доступ к скайпу по группам, что получилось в результате описано в первом посте. Тут вопрос даже больше не в скайпе , а в том почему правила такого типа:

http_access allow fullinet SSL_ports
не отрабатывают.

Namiz
() автор топика
Ответ на: комментарий от blind_oracle

Ну честно говоря уже собирался так сделать, но скайп начал ходить к моему удивлению и без сокс, поэтому хочу пока попробовать придумать, что то с текущим вариантом.

Namiz
() автор топика
Ответ на: комментарий от Namiz

покажи сами acl fullinet и SSL_ports

Какая ОС используется(debian бывает разный)? Есть ли более новая версия squid в репозиториях?

Pinkbyte ★★★★★
()
Последнее исправление: Pinkbyte (всего исправлений: 2)
Ответ на: комментарий от Pinkbyte
 acl SSL_ports port 200 206 443 1935 4001 4017 5190 8080 8443 8445 9023 5999
acl fullinet external ldap_verify1 Full
uname -a
Linux Proxy 3.2.0-4-686-pae #1 SMP Debian 3.2.57-3 i686 GNU/Linux

Более новых увы нету(

Namiz
() автор топика
Ответ на: комментарий от Pinkbyte

Мм в курсе, но какой то информации про конфликты этих acl пока не нашёл, но спасибо за наводку проверю этот вариант завтра.

Namiz
() автор топика
Ответ на: комментарий от Namiz

давай полный squid.conf И тащем-то 3.1 это прям совсем тяжело и древне, у меня скайпы вполне работают на 3.3/3.5 с отдельными группами доступа. Посвежее нет вариантов поставить

splinoz
()

Включить дебаг в сквиде:

debug_options ALL,1 33,2 28,9
и смотреть cache.log на предмет, какое правило срабатывает.

pod ★★
()
Ответ на: комментарий от splinoz

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

015/10/09 10:26:01| Processing Configuration File: /etc/squid3/squid.conf (depth 0)
acl manager proto cache_object
acl localhost src 127.0.0.1/32 ::1
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1
acl SSL_ports port 200 206 443 1935 4001 4017 5190 8080 8443 8445 9023 5999
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
acl white_list url_regex -i "/etc/squid3/white_list"
acl black_list url_regex -i "/etc/squid3/black_list"
 acl filetypes urlpath_regex -i "/etc/squid3/filetypes.acl"
acl banners url_regex  "/etc/squid3/banners.acl"
acl localnet src 10.100.0.0/22
acl to_localnet dst 10.100.0.0/22
acl localnet src 192.168.21.0/24
acl to_localnet dst 192.168.21.0/24
acl localnet src 192.168.12.0/24
acl localnet src 192.168.13.0/24
acl localnet src 192.168.14.0/24
acl localnet src 192.168.15.0/24
acl localnet src 192.168.16.0/24
acl localnet src 192.168.17.0/24
acl localnet src 192.168.18.0/24
acl localnet src 192.168.19.0/24
 acl localnet src 192.168.20.0/24
acl localnet src 192.168.29.0/24
acl localnet src 192.168.34.0/24
acl localnet src 192.168.36.0/24
acl localnet src 192.168.37.0/24
acl localnet src 192.168.35.0/24
acl localnet src 192.168.39.0/24
acl localnet src 10.54.30.0/24
http_access allow manager localhost
http_access deny manager
include /etc/squid3/auth.conf
2015/10/09 10:26:01| Processing Configuration File: /etc/squid3/auth.conf (depth 1)
auth_param negotiate program /usr/lib/squid3/squid_kerb_auth -s HTTP/proxy.domain.local@DOMAIN.LOCAL
auth_param negotiate children 500
auth_param negotiate keep_alive on
external_acl_type ldap_verify1 children=500  %LOGIN /usr/lib/squid3/squid_ldap_group -R -b "dc=domain,dc=local" -f  "(&(objectClass=user)(sAMAccountName=%v)(memberof=cn=%a,ou=lnternet,ou=Groups,dc=domain,dc=local))" -D squid@domain.local -K -W /etc/squid3/aduser dc1.domain.local.
external_acl_type ldap_verify2 %LOGIN /usr/lib/squid3/squid_ldap_group -R -b "dc=k2,dc=domain,dc=local"  -f  "(&(objectClass=user)(sAMAccountName=%v)(memberof=cn=%a,ou=Groups,dc=k2,dc=domain,dc=local))" -D squid@domain.local -K -W /etc/squid3/aduser k2-dc1.k2.domain.local.
acl all_it external ldap_verify1 IT
acl all_full external ldap_verify1 Full
acl all_inet external ldap_verify1 InternetAll
 acl all_normal external ldap_verify1 normal
acl all_low external ldap_verify1 low
acl all_noinet external ldap_verify1 noInet
acl all_itl external ldap_verify2 ITl
 http_access deny filetypes !all_full
http_access allow all_it
http_access allow all_full SSl_ports
http_access allow all_full
http_access deny all_normal banners
http_access deny all_normal black_list
http_access allow all_normal
http_access deny all_inet banners
http_access deny all_inet black_list
deny_info http://proxy.mfc-nso.local/3214.jpg banners
http_access allow all_inet
http_access allow all_low white_list
http_access deny all_low all
deny_info http://corp.mfc-nso.local/index.htm all
http_access deny all_noinet all
http_access allow all_itl
http_access allow localnet white_list
http_access deny localnet all
http_port 3128
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost
http_access deny all
debug_options ALL,1 33,2 28,9
hierarchy_stoplist cgi-bin ?
cache_mem 512 MB
cache_dir ufs /home/squid3 5000 16 256
 minimum_object_size 2 KB
maximum_object_size 61440 KB
cache_swap_high 95
cache_swap_low 90
coredump_dir /var/spool/squid3
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
Пробовал весить отдельные acl аля
#acl Skype_ports port 200 206 443 1935 4001 4017 5190 8080 8443
Ну и соответственно правило к нему но увы не помогло(

Namiz
() автор топика
Ответ на: комментарий от pod

Спасибо добавил, сейчас буду копаться в логах.

Namiz
() автор топика
Ответ на: комментарий от pod

Апну темку, так как вновь вернулся к этой проблеме. Обновление пока сделать не получится. Добавил дебаг опцию и создал несколько отделньных acl

cl Skype_ports port 200 206 443 1935 4001 4017 5190 8080 8443
И правило для него
http_access allow CONNECT all_full Skype_ports
http_access deny CONNECT !Skype_ports 

Мониторю cache.log и вижу там только вот это

2015/10/20 12:22:42.495| ACLChecklist::preCheck: 0xa65c16f8 checking 'http_access deny CONNECT !Skype_ports'
2015/10/20 12:22:42.495| ACLList::matches: checking CONNECT
2015/10/20 12:22:42.495| ACL::checklistMatches: checking 'CONNECT'
2015/10/20 12:22:42.495| ACL::ChecklistMatches: result for 'CONNECT' is 1
2015/10/20 12:22:42.495| ACLList::matches: result is true
2015/10/20 12:22:42.495| ACLList::matches: checking !Skype_ports
2015/10/20 12:22:42.495| ACL::checklistMatches: checking 'Skype_ports'
2015/10/20 12:22:42.495| ACL::ChecklistMatches: result for 'Skype_ports' is 1
2015/10/20 12:22:42.495| ACLList::matches: result is false
2015/10/20 12:22:42.495| aclmatchAclList: 0xa65c16f8 returning false (AND list entry failed to match)
2015/10/20 12:22:42.495| aclmatchAclList: async=0 nodeMatched=0 async_in_progress=0 lastACLResult() = 0 finished()

Собственно если и использовать стандартный acl SSl он тоже возвращает false, что ему не нравится я не понимаю.Буду признателен за подсказки.

Namiz
() автор топика
Ответ на: комментарий от Namiz

Ты этой acl разрешил метод CONNECT для пользователей all_full на порты skype_ports. Что-то мне подсказывает, что кроме метода CONNECT нужно ещё и http запросы разрешить.

pod ★★
()
Ответ на: комментарий от Namiz

ACLChecklist::preCheck: 0xa65c16f8 checking 'http_access deny CONNECT !Skype_ports'

А судя по логу, у тебя вообще запрос не попал под разрешающий acl, и заденаился.

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

Нет разрешающий acl тоже есть, но выглядит аналогично.

ACLChecklist::preCheck: 0xb9771b70 checking 'http_access allow CONNECT all_full Skype_ports'
2015/10/20 12:22:42.374| ACLList::matches: checking CONNECT
2015/10/20 12:22:42.374| ACL::checklistMatches: checking 'CONNECT'
2015/10/20 12:22:42.374| ACL::ChecklistMatches: result for 'CONNECT' is 0
2015/10/20 12:22:42.374| ACLList::matches: result is false
2015/10/20 12:22:42.374| aclmatchAclList: 0xb9771b70 returning false (AND list entry failed to match)
2015/10/20 12:22:42.374| aclmatchAclList: async=0 nodeMatched=0 async_in_progress=0 lastACLResult() = 0 finished() = 0
2015/10/20 12:22:42.374| ACLChecklist::preCheck: 0xb9771b70 checking 'http_access allow all_full'
2015/10/20 12:22:42.374| ACLList::matches: checking all_full
2015/10/20 12:22:42.374| ACL::checklistMatches: checking 'all_full'
Такое правило тоже есть.
http_access allow all_full Skype_ports

Namiz
() автор топика
Ответ на: комментарий от Namiz

посмотри, с каким acl всё-таки происходит совпадение. я так понимаю, должно быть ACLList::matches: result is true

Я в конфиге вижу много http_access и всё идёт в перемешку, сложно сориентироваться. Надо структурировать и отделить deny от allow. Не забудь учесть, что проверка идёт только до первого совпавшего правила.

pod ★★
()
Последнее исправление: pod (всего исправлений: 2)
Ответ на: комментарий от pod

Ну совпадение первое проходит с разрещающим правилом, но оба эти правила(и разерешить и запретить) циклично повторяют вот этот кусок лога, причём не важно возвращается и true и false результат один и тот же.

CLChecklist::preCheck: 0xa65c16f8 checking 'http_access allow CONNECT all_full Skype_ports'
2015/10/20 12:22:42.570| ACLList::matches: checking CONNECT
2015/10/20 12:22:42.570| ACL::checklistMatches: checking 'CONNECT'
2015/10/20 12:22:42.570| ACL::ChecklistMatches: result for 'CONNECT' is 1
2015/10/20 12:22:42.570| ACLList::matches: result is true
2015/10/20 12:22:42.570| ACLList::matches: checking all_full
2015/10/20 12:22:42.570| ACL::checklistMatches: checking 'all_full'
2015/10/20 12:22:42.570| ACL::ChecklistMatches: result for 'all_full' is 1
2015/10/20 12:22:42.570| ACLList::matches: result is true
2015/10/20 12:22:42.570| ACLList::matches: checking Skype_ports
2015/10/20 12:22:42.570| ACL::checklistMatches: checking 'Skype_ports'
2015/10/20 12:22:42.570| ACL::ChecklistMatches: result for 'Skype_ports' is 1
2015/10/20 12:22:42.570| ACLList::matches: result is true
2015/10/20 12:22:42.570| aclmatchAclList: 0xa65c16f8 returning true (AND list satisfied)
2015/10/20 12:22:42.570| ACLChecklist::markFinished: 0xa65c16f8 checklist processing finished
2015/10/20 12:22:42.570| ACLChecklist::check: 0xa65c16f8 match found, calling back with 1
2015/10/20 12:22:42.570| ACLFilledChecklist::checkCallback: 0xa65c16f8 answer=1
2015/10/20 12:22:42.570| ACLChecklist::checkCallback: 0xa65c16f8 answer=1
2015/10/20 12:22:42.570| FilledChecklist.cc(168) ~ACLFilledChecklist: ACLFilledChecklist destroyed 0xa65c16f8

Пытался кстати вот с этим методом, что либо придумать, но тоже не работает:(

acl numeric_IPs url_regex ^(([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)|(\[([0-9af]+)?:([0-9af:]+)?:([0-9af+)?\])):443
acl Skype_UA browser ^skype^

Namiz
() автор топика
Ответ на: комментарий от Namiz

Если прочитать дословно, то получается - первое совпавшее правило - ТОЛЬКО метод CONNECT для all_full на Skype_ports.

Попробуй основываться на стандартном конфиге сквида. Что-то вроде этого (кусок из рабочего конфига, вроде никто не жаловался):

...
# разрешить CONNECT всем, ближе к началу у тебя есть, а потом вообще не трогай CONNECT - закомментируй acl с ним.
acl CONNECT method CONNECT
# acl по user agent
acl skype browser -i ^skype
# разрешаем группе доступ
http_access allow all_full skype
...
pod ★★
()
Ответ на: комментарий от pod

Попробовал так и тоже не помогло. Понимаю, что наглая просьба, но не мог бы ты в личку кинуть пример своего конфига, сравнить хочу,так будет гораздо быстрее ошибку мне найти.Буду очень благодарен.

Namiz
() автор топика
Ответ на: комментарий от Namiz

Не готов предоставить 100% рабочее правило, то что есть, просили добавить, но насколько его протестировали в рабочем конфиге - не знаю.

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

Думаю тему можно закрывать, психанул и поставил рядом socks и пустил по нему скайп , всё прекрасно работает. Всем спасибо за помощь.)

Namiz
() автор топика
Ответ на: комментарий от Namiz

Собственно, я раньше так всегда и делал, тоже периодически бывали проблемы со skype через http :)

pod ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.