News:

Теория- это когда ты знаешь все, но ничего не работает. Практика - это когда все работает, но никто не знает почему.

Main Menu

squid непонятности в логах

Started by sbrain, 11 October 2016, 12:11

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

sbrain

Доброго времени суток!
Вертится все на
[size=2][font=Segoe UI, Helvetica Neue, Nimbus Sans L, Arial, Liberation Sans, sans-serif][root@squid squid]# uname -a[/font][/size]
[size=2][font=Segoe UI, Helvetica Neue, Nimbus Sans L, Arial, Liberation Sans, sans-serif]Linux squid 3.10.0-327.28.3.el7.x86_64 #1 SMP Thu Aug 18 19:05:49 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux[/font][/size]
сам сквид :
[root@squid squid]# squid -v
Squid Cache: Version 3.3.8
configure options:  '--build=x86_64-redhat-linux-gnu' '--host=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' '--disable-strict-error-checking'
'--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-eui'
'--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=file_userip,LDAP_group,time_quota,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-removal-policies=heap,lru' '--enable-snmp' '--enable-ssl' '--enable-ssl-crtd'
 '--enable-storeio=aufs,diskd,ufs' '--enable-wccpv2' '--enable-esi' '--enable-ecap' '--with-aio' '--with-default-user=squid'
'--with-filedescriptors=16384' '--with-dl' '--with-openssl' '--with-pthreads' 'build_alias=x86_64-redhat-linux-gnu'
'host_alias=x86_64-redhat-linux-gnu'
'CFLAGS=-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches  
-m64 -mtune=generic -fpie' 'LDFLAGS=-Wl,-z,relro  -pie -Wl,-z,relro -Wl,-z,now' 'CXXFLAGS=-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions
-fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches   -m64 -mtune=generic -fpie'
'PKG_CONFIG_PATH=:/usr/lib64/pkgconfig:/usr/share/pkgconfig'

squid.conf раздел отвечающий за аутентификацию и авторизацию
auth_param negotiate program /usr/lib64/squid/negotiate_kerberos_auth -d -s HTTP/squid.ya.local
auth_param negotiate children 1000 startup=900 idle=900
auth_param negotiate keep_alive on

external_acl_type ldap_group children-max=1000 children-startup=900 %LOGIN /usr/lib64/squid/ext_ldap_group_acl -b dc=yar,dc=local -f
"(&(sAMAccountType=805306368)(sAMAccountName=%v)(memberOf=cn=%a,ou=proxy,dc=ya,dc=local))" -D ldap@YA.LOCAL -w "pass" -R -K -d -h s76-dc01.ya.local
s76-dc02.ya.local

Вижу в логах что вместо имени пользователя подставляется имя пк в sAMAccountname
Причем все работает....(но есть проблема такая что ИНОГДА не проходит авторизация, то есть человек попадает под последнее запрещающее правило)
Очень надеюсь на вашу помощь! Линуксом и вообще прокси занимаюсь недавно поэтому хотелось бы детально получить ответ
Всем заранее спасибо!
Приложил скрин логов

Уваров А.С.

Зачем использовать сложный, небезопасный и не всегда правильно работающий ext_ldap_group_acl, если есть ext_kerberos_ldap_group_acl?

sbrain

Скажу честно...я пытался =D что то у меня не вышло.....возможно есть смысл сегодня вечером попробовать еще...может и проблема моя решится c авторизацией....тему пока не закрываю.. скорее всего появятся вопросы

sbrain

в общем, посмотрел я наличие этого хелпера (его там не оказалось) взял хелпер с вашего сайта....поставил пакет cyrus_sasl для CentOS но при попытке запустить хелпер он ругается на этот пакет

/usr/lib64/squid/ext_kerberos_ldap_group_acl: error while loading shared libraries: libsasl2.so.2: cannot open shared object file: No such file or directory

Какие есть варианты для решения данной проблемы:?
 

Уваров А.С.

И будет ругаться, наш пакет собран для Debian, попробуйте собрать хелпер самостоятельно.

sbrain

Делаю так....скачал исходники на другую ос.....если я сделаю ./configure -> make -> make install
потом зайду в папку с хелперами и скопирую оттуда этот хелпер в УЖЕ РАБОТАЮЩИЙ сквид на другой ос...будет ли он так работать?

Уваров А.С.

Будет, тем более что собирать на рабочем сервере - это не очень хорошая практика. Оптимально - держать под сборку отдельную машину (виртуалку). Главное - чтобы версии ОС там и там совпадали (т.е. рабочее окружение было одинаковым).

make install можно не делать, а просто забрать собранный хелпер из папки с сорцами.

sbrain

#7
делаю ./configure --enable-external-acl-helpers=ext_kerberos_ldap_group_acl далее make
долго долго собирается а хелпер так и не появляется (скачал исходники squid 3.3.8) может я криворукий...но других опций я не нагуглил
Огромное вам спасибо за помощь !

Уваров А.С.

А сам хелпер вы так и не собрали, на Debian делается так, в CentOS возможно пути к библиотекам уточнить надо будет.

./configure --enable-external-acl-helpers="kerberos_ldap_group" --libexecdir=/usr/lib/squid3 --sysconfdir=/etc/squid3
make
cd /usr/src/squid/squid-3.3.8/helpers/external_acl/kerberos_ldap_group
make

sbrain

В общем после сборки хелпера центос радостно сообщил что он не поддерживается .....не стал мучать вас и себя собрал и установил 3.5 версию с керберос хелперами (пока все работает стабильно) хотелось бы уточнить следующий вопрос
Когда возникнет необходимость в более чем 5 хелперах сквид сам запустит недостающие? На данный момент у него по 5 хелперов для каждой из групп AD 

Уваров А.С.

Все зависит от того, что у вас прописано в:

auth_param negotiate children