Ru-Board.club
← Вернуться в раздел «В помощь системному администратору»

» SQUID (только под *nix)

Автор: ipmanyak
Дата сообщения: 27.04.2010 12:40
Alukardd если бы был программер, может тоже бы сваял прогу, потому пришлось найти в инете этот скриптец на opennet.ru.
Автор: Alukardd
Дата сообщения: 14.05.2010 02:58
Народ подскажите плз... умаялся я с ним бороться...

имеем сервер win2k3 + AD
шлюз Debian Lenny + squid3 + iptables

собрался на squid3 навесить авторизацию через AD - взялся... почти прикрутид LDAP потом понял, что облажался т.к. auth_param basic меня совсем не устраивает - собрался прикрутить ntlm_auth да не тут-то было... ни черта у меня не вышло - и даже не потому что squid её не воспринимает а все застопорилось намного раньше...
мне не удалось запустить ни какие демоны для связи с AD! Пытался делать следующее:
установил samba + winbind настроил [more=smb.conf][no][global]
workgroup = SCHOOL.RU
netbios name = router
server string = router
hosts allow = 192.168. 127.
winbind separator = +
winbind use default domain = yes
winbind uid = 10000-20000
winbind gid = 10000-20000
winbind enum users = yes
winbind enum groups = yes
template homedir = /home/winnt/%D/%U
template shell = /bin/bash
max log size = 500
security = domain
password server = pdc
encrypt passwords = yes[/no][/more] при попытке wbinfo -t пишет checking the trust secret via RPC calls failed Could not check secret

пробывал наладить kerberos - установил все пакеты типа krb5-kdc и прочее...
настроил [more=krb5.conf][no][libdefaults]
    dns_lookup_realm = false
    dns_lookup_kdc = false
    ticket_lifetime = 24h
    forwardable = yes
    default_realm = SCHOOL.RU


# The following krb5.conf variables are only for MIT Kerberos.
    krb4_config = /etc/krb.conf
    krb4_realms = /etc/krb.realms
    kdc_timesync = 1
    ccache_type = 4
    forwardable = true
    proxiable = true

# The following encryption type specification will be used by MIT Kerberos
# if uncommented. In general, the defaults in the MIT Kerberos code are
# correct and overriding these specifications only serves to disable new
# encryption types as they are added, creating interoperability problems.
#
# Thie only time when you might need to uncomment these lines and change
# the enctypes is if you have local software that will break on ticket
# caches containing ticket encryption types it doesn't know about (such as
# old versions of Sun Java).

#    default_tgs_enctypes = des3-hmac-sha1
#    default_tkt_enctypes = des3-hmac-sha1
#    permitted_enctypes = des3-hmac-sha1

# The following libdefaults parameters are only for Heimdal Kerberos.
    v4_instance_resolve = false
    v4_name_convert = {
        host = {
            rcmd = host
            ftp = ftp
        }
        plain = {
            something = something-else
        }
    }
    fcc-mit-ticketflags = true

[realms]
    SCHOOL.RU = {
        kdc = pdc.school.ru
        admin_server = pdc.school.ru
    }

[domain_realm]
    .school.ru = PDC.SCHOOL.RU
    school.ru = PDC.SCHOOL.RU

[login]
    krb4_convert = true
    krb4_get_tickets = false

[logging]
    kdc = FILE:/var/log/kerberos/krb5kdc.log
    admin_server = FILE:/var/log/kerberos/kadmin.log
    default = FILE:/var/log/kerberos/krb5lib.log[/no][/more] запукаю демона он мне пишет krb5kdc: cannot initialize realm SCHOOL.RU - see log file for details - в логах понятное дело 1 строчка и вы её и так видите...

не знаю уже как заставить его работать и обсчаться с AD?!

дополнительная инфа...
как я уже говорил выше ldap мне удалось заставить пообсчаться с AD
ldapsearch -D "squidreader@school.ru" -x -W -b "dc=school,dc=ru" -h 192.168.0.1 - пашет на ура, впрочем как и команды проверки пароля и принадлежности группе...

с шлюза nslookup school.ru - проходит... соответсвенно имя pdc и pdc.school.ru тоже разрешает...

вотЪ такой вот гемор свалился на мою голову этой ночью! очень прошу помочь найти затыку...

Автор: Ruza
Дата сообщения: 14.05.2010 09:21
Alukardd
http://forum.ru-board.com/topic.cgi?forum=8&topic=0458&start=380#lt
Автор: Alukardd
Дата сообщения: 14.05.2010 12:11
Ruza
трололо хоть статья и не совсем то что нужно... однако пройдя по чепочке ссылок благодаря неё я настроил samba на работу с AD - дело как обычно было в 1 слове((( так что за это спасибо
kerberos пока атк и не удалось заставить дружить с AD

правда squid по прежнему отказывается пускать меня в интерент - к тому же он выводит запрос логина/пароля хотя вроде бы и не должен при ntlm авторизации... в сквиде написанно так:
Код: . . .
auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp
auth_param ntlm children 10
acl authorized proxy_auth REQUIRED
. . .
http_access allow authorized workingTime
http_access deny all
. . .
Автор: Ruza
Дата сообщения: 14.05.2010 15:35
Alukardd
Как это не совсем то что нужно?
Самбу сделал, значит можно и к сквиду переходить... Просто исправлять в этой ветке твои конфиги самбы и кербероса ИМХО не правильно, да и почитав форум с реальными примерами ты понял больше чем если бы я отдал тебе твои готовые конфиги.

Автор: Alukardd
Дата сообщения: 14.05.2010 20:50
Ruza
ошибку я нашёл не с форума а ссылок из его шапки

как это не печально но настроить до конца так и не удалось

ntlm_auth --helper-protocol=squid-2.5-basic
user01 user01
OK


ntlm_auth --helper-protocol=squid-2.5-ntlmssp
user01 user01
utils/ntlm_auth.c:manage_squid_ntlmssp_request(786)
BH NTLMSSP query invalid


не пашет ntlm авторизация... хз почему( права на /var/run/samba/winbindd_privileged выставил 0777 привелегии

вот в дополнение кусок лога /var/log/squid3/cache.log
Код: Login for user [SCHOOL]\[user01]@[PDC] failed due to [winbind client not authorized to use winbindd_pam_auth_crap. Ensure permissions on /var/run/samba/winbindd_privileged are set correctly.]
[2010/05/14 13:08:12, 0] utils/ntlm_auth.c:manage_squid_ntlmssp_request(817)
NTLMSSP BH: NT_STATUS_ACCESS_DENIED
2010/05/14 13:08:12| authenticateNTLMHandleReply: Error validating user via NTLM. Error returned 'BH NT_STATUS_ACCESS_DENIED'
[2010/05/14 13:08:14, 0] utils/ntlm_auth.c:winbind_pw_check(545)
Автор: vlary
Дата сообщения: 14.05.2010 21:25
Alukardd Я к сквиду прицепил самописную программу, которая авторизует юзеров через AD, поскольку через ntlm почему-то сразу не срослось.
Работает без проблем уже года три.
Автор: Alukardd
Дата сообщения: 14.05.2010 21:42
vlary
я конечно счастлив за вас) но писать самому когда я только поверхностно представляю порядок алгоритма аутентификации пользователя...
если в краце то я вашу мыслю представляю так...
1 - squid получает запрос от юзера
2 - в squid прописан auth_param -хз правда какой именно - на внешнюю прогу - видимо ваш скрипт
3 - скрипт каким-то чудом выполняет проверку типо этой - /usr/lib/squid3/squid_ldap_group -R -b "dc=school,dc=ru" -f "(&(sAMAccountName=%v)(memberOf=cn=%a,ou=groups,ou=school,dc=school,dc=ru))" -D squidreader@school.ru -W /etc/squid3/adpw.txt 192.168.0.1
т.е. просто проверяет принадлежность к группе допущеных в инет юзеров.
4 - отдает ответ привыный для squid - ERR/OK - на сколько мне известно...
5 - дальше вроде всё как обычно...

можно наверное как-нить так проверять - wbinfo -a user01%user01 - но тут вопро - а разве squid3 знает с каким логином и паролем работает юзер что бы их проверять?)
только в этом алгоритме нету уверенности что юзер именно из AD а н просто с таким же именем как в AD создал себе акк и прописал настройи проксика - а скрипт проверил имя есть - типо всё хорошо

не понятно как при этом будет работать учёт личного трафика и ширины канала - delay_pools и иже с ним?! в общем пока для меня это темный кусок...

готовой проги с разжеванными коментами я конечно от вас не прошу, но разъянения по поводу алгоритма получить хотелось бы - если это действительно не сильно сложно сделать самому и не сильно вас напряжёт или не перчит вашим идеалам
Автор: Ruza
Дата сообщения: 14.05.2010 22:56
Alukardd

Цитата:
ошибку я нашёл не с форума а ссылок из его шапки

Но ведь нашёл же, остальное патетика...


Цитата:
права на /var/run/samba/winbindd_privileged

сквид стартуй от группы wbpriv, а права не трогай


Цитата:
в squid прописан auth_param -хз правда какой именно - на внешнюю прогу - видимо ваш скрипт

Чей скрипт и где он?


Цитата:
разъянения по поводу алгоритма получить хотелось бы - если это действительно не сильно сложно сделать самому и не сильно вас напряжёт или не перчит вашим идеалам

эх молодость молодость... При чём тут идеалы или напряги, ты с утра спросил про самбу потом приплёл какой то скрипт. куча конфигов, какие то извини "домыслы/соображения" и в самом конце концов просьба описать протокол ntlm и его взаимодействие со squid.
Ты определись что тебе надо... либо шашки либо ехать...
Шашки - Чёрные, Белые
Ехать - Поиск
Автор: Alukardd
Дата сообщения: 14.05.2010 23:12
Ruza

Цитата:
Чей скрипт и где он?
это мои размышления по поводу сказанного vlary!!!

краткие пояснения...
вся суета из-за необходимости сделать контроль за происходящим в squid3 - соответственно необходимо идентифицировать каждую личность ( нету фиксированного рабочего места ) использующую squid3 и ограничить в скорости и трафике в день.
получается что надо тем или иным способом авторизировать ползователей - настройку samba крутил для того что бы сделать squid3 + winbind из samba - ntlmssp авторизацию через доменное имя ( без запроса логина/пароля в браузере - для IE разумеется ).

вот в общем-то и все что надо сделать - ну потом delay_pools и sarg для ограничений думаю доковыряю - а пока авторизацию провернуть не удается...
Автор: vlary
Дата сообщения: 14.05.2010 23:23
Поскольку мастерил я ее весьма давно, то сам уже многого не помню.
Работает программа с библиотекой LDAP, посему самому низкоуровневыми вещами заниматься не пришлось. Пункты 1-5 совершенно справедливы, в конфиге сквида я передаю имя проги и айпи контроллера домена в качестве параметра. "OU=m1,dc=school,dc=ru" вставил непосредственно в исходник программы.
Можно, конечно и в параметрах передавать.

Цитата:
не понятно как при этом будет работать учёт личного трафика и ширины канала - delay_pools и иже с ним?
С эти все нормально, учет ведется по логинам в логе сквида, delay_pools при необходимости тоже легко прикрутить через акцесс листы.

Цитата:
готовой проги с разжеванными коментами я конечно от вас не прошу
А их, комментов, там и нету, этим не грешу. Исходник валяется до сих пор, могу сбросить.




Автор: Alukardd
Дата сообщения: 14.05.2010 23:33
vlary

Цитата:
Исходник валяется до сих пор, могу сбросить.
был бы весь ма признателен - хотя вам и так большое спасибо за разжовывание многих вещей...
если можно к исходнику строчки вызова его из squid.
скинуть можно в личку или на мыло в профиле...

и пока я их еще не видел вопрос про то, что получает squid всё же висит - теории в этом вопросе нехватка...
Автор: vlary
Дата сообщения: 14.05.2010 23:39

Цитата:
вопрос про то, что получает squid всё же висит
squid получает от браузера строчку вида юзер пассворд.
Он передает ее программе, та запрашивает LDAP и возвращает сквиду OK или ERR в зависимости от результата.
Автор: vlary
Дата сообщения: 15.05.2010 09:23
Alukardd Программа ушла на мыло. Параметры в конфиге сквида:
auth_param basic program /usr/local/squid/libexec/squid_ad_auth 192.168.1.100
auth_param basic children 1
auth_param basic realm Corporate Squid Proxy
auth_param basic credentialsttl 24 hours
.......................
acl knownusers proxy_auth REQUIRED
..........................................
http_access allow CONNECT knownusers Safe_ports
http_access allow CONNECT knownusers SSL_ports
http_access allow knownusers




Автор: Alukardd
Дата сообщения: 15.05.2010 17:26
vlary
большое спасибо - еще не проверял работу...

оО мну смущают строчки auth_param basic - я всё-таки добиваюсь того что бы запрос на ввод логина/пароля не вылезал...
и вопрос про то как squid получает логин/пароль тоже был для ntlmssp авторизации, когда юзер не вбивает непосредственно данные в браузер...

а еще при попытке собрать:
gcc ./squid_ad_auth.c -o ./squid_ad_auth
ругаетя( - undefined reference to `ldap_get_option' - и еще на парочку - хотя я честно проверил есть такие функции в /usr/include/ldap.h и lber.h - конечно описанны не совсем привычным мне языком - но думаю что правильно
Автор: vlary
Дата сообщения: 15.05.2010 19:32
AlukarddДа, юзерам придется вводить пароль, прозрачного прокси не получится. Но раз в день это не затруднительно, тем более есть чекбокс "запомнить пароль".

Цитата:
undefined reference to `ldap_get_option'
Собирать нужно gcc -o squid_ad_auth -lldap squid_ad_auth.c
Иначе откуда ей знать, какие линковать библиотеки? Если libldap не в /usr/lib, добавить путь опцией -L

Автор: Alukardd
Дата сообщения: 15.05.2010 19:44
vlary

Цитата:
Да, юзерам придется вводить пароль, прозрачного прокси не получится. Но раз в день это не затруднительно, тем более есть чекбокс "запомнить пароль".
хм.. вы с галочкой натолкнули меня на мыслю... а ведь пароль сохранится в профиле? если он перемещаемый... то галочка запомнится навсегда по идее, и на всех компах заново вводить не придется?

и что значит откуда ему знать? он же заинклюдил ldap.h и lber.h!!!
Автор: vlary
Дата сообщения: 15.05.2010 20:17

Цитата:
и что значит откуда ему знать? он же заинклюдил ldap.h и lber.h!!!
Ну и что? Это не освобождает от необходимости указывать библиотеки, откуда он должен брать нужные функции. И пути к библиотекам, если они нестандартные. Так работают компиляторы. Если у нас эти функции лежат в libldap.a, мы должны добавить -lldap, если в libldap2.a, то -lldap2. Ну и -lsocket иногда может потребоваться.
Короче, по умолчанию только библиотека libc.
Автор: PhoenixUA
Дата сообщения: 16.05.2010 16:59
Я себе прозрачную авторизацию без самбы через керберос прикрутил:


Цитата:
auth_param negotiate program /usr/local/squid/libexec/squid_kerb_auth
auth_param negotiate children 10
auth_param negotiate keep_alive on

auth_param basic program /usr/local/squid/libexec/squid_ldap_auth -R \
-b "dc=...,dc=..." \
-f "(&(objectClass=person)(sAMAccountName=%s))" \
-D "squidconnect@DOMAIN" -W "/etc/squid_ad_pw" \
-h 192.168.10.16
auth_param basic children 10
auth_param basic realm Proxy Authentication
auth_param basic credentialsttl 2 hours

external_acl_type ldap_check ttl=120 %LOGIN \
/usr/local/squid/libexec/squid_ldap_group -R -S -K \
-b "dc=...,dc=..." \
-f "(&(sAMAccountName=%u)(memberof=cn=%g,cn=users,dc=...,dc=...))" \
-D "squidconnect@DOMAIN" -W "/etc/squid_ad_pw" \
-h 192.168.10.16

acl auth proxy_auth REQUIRED
acl ad_inet_users external ldap_check inet_users
acl ad_inet_dirs external ldap_check inet_dirs
acl ad_inet_asu external ldap_check inet_asu


Из минусов - не работает с Оперой (хз почему не работает даже базовая авторизация), IE меньше 7 (базовая работает, прозрачная нет)
Автор: Arkey
Дата сообщения: 17.05.2010 03:46
uTorrent настроенный на работу через прокси сильно сервер загружает Сквид.

В нормальном состоянии у меня:

top - 19:36:34 up 4:51, 2 users, load average: 0.01, 0.07, 0.07
Tasks: 103 total, 1 running, 102 sleeping, 0 stopped, 0 zombie
CPU0 : 0.0% us, 0.0% sy, 0.0% ni, 96.7% id, 0.0% wa, 1.3% hi, 2.0% si
CPU1 : 0.0% us, 0.0% sy, 0.0% ni, 96.7% id, 0.0% wa, 0.7% hi, 2.7% si
CPU2 : 0.0% us, 0.0% sy, 0.0% ni, 94.7% id, 0.0% wa, 3.3% hi, 2.0% si
CPU3 : 0.3% us, 0.3% sy, 0.0% ni, 95.7% id, 0.0% wa, 1.0% hi, 2.7% si
Mem: 2073944K total, 694916K used, 1379028K free, 8600K buffers
Swap: 1044184K total, 0K used, 1044184K free, 392068K cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
6566 squid 18 0 231M 211M 3184 S 0.3 10.4 11:02.29 squid

Стоит только поднять скорость на Торренте (использую на своей машине uTorrent через прокси сервер) например до 64 Кбайт (максимум 1 Мбит) как картина становится вот такой:

top - 19:38:40 up 4:53, 2 users, load average: 0.42, 0.15, 0.10
Tasks: 103 total, 1 running, 102 sleeping, 0 stopped, 0 zombie
CPU0 : 0.0% us, 0.0% sy, 0.0% ni, 97.0% id, 0.0% wa, 1.0% hi, 2.0% si
CPU1 : 8.4% us, 9.4% sy, 0.0% ni, 74.6% id, 0.0% wa, 0.3% hi, 7.4% si
CPU2 : 30.7% us, 31.0% sy, 0.0% ni, 35.3% id, 0.0% wa, 0.3% hi, 2.7% si
CPU3 : 0.0% us, 0.0% sy, 0.0% ni, 98.7% id, 0.0% wa, 1.0% hi, 0.3% si
Mem: 2073944K total, 698800K used, 1375144K free, 8608K buffers
Swap: 1044184K total, 0K used, 1044184K free, 393764K cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
6566 squid 15 0 232M 212M 3184 S 86.8 10.5 11:25.44 squid

Если поднять скорость выше то сквид вообще занимает 99.9% процессорного времени. В чем может быть причина, ниужели Сквид не справляется? Машинка достаточно мощная, 4 ядра и т.д.

squid -v
Squid Cache: Version 3.0.STABLE15
Автор: Ruza
Дата сообщения: 17.05.2010 09:19
Arkey
Количество соединений обрабатываемых squid посмотри при повышении скорости...

PhoenixUA

Цитата:
Из минусов - не работает с Оперой

Это не минус,это фитча Оперы которая не умеет ntlm и kerberos.


Цитата:
IE меньше 7 (базовая работает, прозрачная нет)

Смотри версию протокола ntlm, но желательно обновить всё до 7/8

Автор: Arkey
Дата сообщения: 17.05.2010 09:31

Цитата:
Количество соединений обрабатываемых squid посмотри при повышении скорости...

Как? netstat -tap | grep squid ?

Естевственно количество подключений достаточно высокое. И все с одной машины. Но это разве критично?

Кстати. такой вопрос есть ли у сквида какие нибудь тулзы в реальном времени чтобы можно было оценить его сосотояние.
Автор: PhoenixUA
Дата сообщения: 17.05.2010 10:04

Цитата:
но желательно обновить всё до 7/8

Угу. Обновлял всем через WSUS до IE 7. Просто инфо для тех, кто захочет воспользоваться конфигом.
Автор: Ruza
Дата сообщения: 17.05.2010 10:44
Arkey
Конфиг я свой посмотрю?
Автор: vlary
Дата сообщения: 17.05.2010 11:23
Arkey

Цитата:
есть ли у сквида какие нибудь тулзы в реальном времени
Настройка MRTG для мониторинга текущего состояния Squid
Автор: dekstero4eg
Дата сообщения: 17.05.2010 11:47
Arkey


Цитата:
Кстати. такой вопрос есть ли у сквида какие нибудь тулзы в реальном времени чтобы можно было оценить его сосотояние.



Код:
#!/bin/sh
if [ -n "`ps ax | grep squid | grep -v grep`" ]
then
echo "squid not started"
fi
Автор: Ruza
Дата сообщения: 17.05.2010 11:52
Arkey

Цитата:
Кстати. такой вопрос есть ли у сквида какие нибудь тулзы в реальном времени чтобы можно было оценить его сосотояние.


cachemgr.cgi
sqstat.php

Автор: vlary
Дата сообщения: 17.05.2010 11:53
dekstero4eg Ну, возможно человеку нужно знать не просто работает или не работает сквид, а КАК он работает. А ваш вариант достигается без всяких скриптов, у меня через пару минут после аварии сквида телефон до бела раскаляется ...
Автор: dekstero4eg
Дата сообщения: 17.05.2010 14:26
vlary
ну хз, человек спросил про состояние Сквида, а состояний вроде 2 - работает или не работает .Кстати, sqstat.php неплохой вариант, пользовался этим скриптом, при настройке возник какой-то трабл (не помню уж какой), который был решён небольшим гуглением
Автор: Arkey
Дата сообщения: 18.05.2010 01:14

Цитата:
Ну, возможно человеку нужно знать не просто работает или не работает сквид, а КАК он работает.

Естевственно я это и спросил. про ps aux с грепом я вкурсе. Вот MRTG мне показалась полезной тулзой.

Цитата:
у меня через пару минут после аварии сквида телефон до бела раскаляется ...

И у меня есть такое


Цитата:
sqstat.php неплохой вариант

Посмотрю что за зверь. По скриншоту вроде полезная штучка.

Сквид валится при > 240 подключений с одного ip, загружает процессор и т.д. Думаю ограничить количество подключений с одного ip при помощи maxconn Кстати такая проблема появилась у меня при использовании uTorrent версии 2 и выше. 1.8.5. работал отменно.



Добавлено:

Цитата:
а состояний вроде 2 - работает или не работает

есть еще третье -- работает, но х-ево

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687

Предыдущая тема: Неполадки в работе DHCP сервера


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.