Мы — долго запрягаем, быстро ездим, и сильно тормозим.
www.lissyara.su —> статьи —> FreeBSD —> программы —> squid+AD

Авторизация пользователей squid в домене с доступом к ресурсам по группам

Автор: lissyara.


    Итак. Дошли руки до корпоративной прокси. Старая была на линухе, что не есть гуд - моё отношение к помойке хоршо известно. Хотя основным фактором стало не это - доступ рулился через текстовые файлы, хотя авторизовлись все в AD. Плюс конфиг был ну абсолютно непрозрачный - сказалось то что её, в общей сложности, админили 5 человек - и понять откуда растут рога вообще не представлялось возможным.
   Итак, задача - на правильной ОС поднять правильно настроенную проксю - т.е. авторизация в AD и руление доступа виндовыми группами через ту же AD - чтобы не напрягать ночных дежурных администраторов - пользователей в основном заводят они.
   Под это дело был выделен сервак - HP Proliant 380 G3, 2 ксенона по 3 чтоли гигарца, 4Gb RAM, и 6 "косых" U320 SCSI дисков (2x73G и 4x36G 10000RPM - разного размера, потому и косые). Соотвествено - под кэш были выделены 4 мелких - в 10 раид, под систему и логи - 2 больших, зеркалом. Получилось так:
squid$ df -h
Filesystem              Size    Used   Avail Capacity  Mounted on
/dev/da0s1a             496M     36M    420M     8%    /
devfs                   1.0K    1.0K      0B   100%    /dev
/dev/da1s1c              66G    108M     60G     0%    /shares
/dev/da0s1d             3.9G    403M    3.2G    11%    /tmp
/dev/da0s1e             7.7G    819M    6.3G    11%    /usr
/dev/da0s1f              52G     17M     48G     0%    /var
jabber:/shares/ports    206G     17G    172G     9%    /usr/ports
squid$

   Одной из задач было использовать sqstat - поэтому пришлось отказаться от squidGuard в пользу родных методов ограничения сквида - при использовании внешних редиректоров пропадает "живая" статистика.
   Поехали. Ставим самбу:
squid$ cd /usr/ports/net/samba3/
squid$ make install clean

   В вылезшем окошке расставляем такой набор галок:
+--------------------------------------------------------------------+
|                  Options for samba 3.0.26a_1,1                     |
| +----------------------------------------------------------------+ |
| |  [X] LDAP         With LDAP support                            | |
| |  [X] ADS          With Active Directory support                | |
| |  [ ] CUPS         With CUPS printing support                   | |
| |  [X] WINBIND      With WinBIND support                         | |
| |  [ ] ACL_SUPPORT  With ACL support                             | |
| |  [ ] FAM_SUPPORT  With File Alteration Monitor                 | |
| |  [ ] SYSLOG       With Syslog support                          | |
| |  [ ] QUOTAS       With Disk quota support                      | |
| |  [ ] UTMP         With UTMP accounting support                 | |
| |  [ ] MSDFS        With MSDFS support                           | |
| |  [ ] PAM_SMBPASS  With PAM authentication vs passdb backends   | |
| |  [ ] CLUSTER      With experimental cluster support            | |
| |  [ ] DNSUPDATE    With dynamic DNS update                      | |
| |  [ ] EXP_MODULES  With experimental modules                    | |
| |  [X] POPT         With system-wide POPT library                | |
+-+----------------------------------------------------------------+-+
|                       [  OK  ]       Cancel                        |
+--------------------------------------------------------------------+

   Заметим, что в современных версиях FreeBSD керберос из портов ставить не обязательно - прекрасно работает и без него. После инсталляции самбы, рисуем для неё такой конфиг:
squid$ more /usr/local/etc/smb.conf
# SAMBA for SQUID

[global]
        workgroup = MYDOMAIN
        security = ADS
        password server = MYDOMAIN.LOCAL
        realm = MYDOMAIN.LOCAL
        netbios name = SQUID
        server string = Proxy server of mydomain.local
#       log level = 10
        log file = /var/log/samba/%m.%U.log
        max log size = 50000
        winbind uid = 10000-20000
        winbind gid = 10000-20000
        winbind use default domain = yes
        display charset = koi8-r
        unix charset = koi8-r
        dos charset = 866
        # for mail
        template homedir = /usr/home/%D/%U
        template shell=/bin/csh
        # added by lissyara 2007-06-21 in 10:36
        #magic script = /root/scripts/create_user_dir.sh %U
[printers]
        comment = All Printers
        path = /var/spool/samba
        printable = Yes
        browseable = No
        use client driver = yes
        public = No

squid$

   И для кербероса:
squid$ more /etc/krb5.conf
#

[libdefaults]
        default_realm = MYDOMAIN.LOCAL

[realms]
        MYDOMAIN.LOCAL = {
                kdc = MYDOMAIN.LOCAL
                admin_server = MYDOMAIN.LOCAL
        }

[domain_realm]
        .mydomain.local = MYDOMAIN.LOCAL

[logging]
        kdc = FILE:/var/log/krb5kdc.log
        admin_server = FILE:/var/log/kadmin.log
        default = FILE:/var/log/krb5lib.log
squid$

   А также для nsswitch:
squid$ more /etc/nss
nsswitch.conf        nsswitch.conf.orig
squid$ more /etc/nsswitch.conf
group: files winbind
passwd: files winbind
group_compat: nis
passwd_compat: nis
hosts: files dns
networks: files
shells: files

squid$

   Особых комментариев нет - всё это я уже рассказывал раньше, в статье про samba и ACL.
   Далее - ставим собственно сквид:
squid$ cd /usr/ports/www/squid
squid$ make install clean

   В окошке снимаем все галки - мне так ничё не нужно от него кроме авторизации и кэширования. Первый же возникающий вопрос - почему не ставил третий сквид? Ставил. Работает. Синтаксис как у 2.6 - но, QIP, сцуко, не может нативно авторизоваться. Авторизовалка ntlm у него кривая... Пришлось снести и поставить squid2.6.
   После инсталляции, занимаемся самбой - надо ввести её в домен, но, вначале получаем билетик керберос:
squid$ kinit akeda
akeda@MYDOMAIN.LOCAL's Password:
kinit: NOTICE: ticket renewable lifetime is 1 week

   Ну и вводим в домен:
squid$ net join -U akeda
akeda's password:
Using short domain name -- MYDOMAIN
Joined 'SQUID' to realm 'MYDOMAIN.LOCAL'

   Добавляем такие строки в /etc/rc.conf:
# squid
winbindd_enable="YES"
squid_enable="YES"

   Мне сама самба не нужна - нужен тока винбинд, поэтому тока он. После этого запускаем самбу
squid$ /usr/local/etc/rc.d/samba start
Performing sanity check on Samba configuration: OK
Removing stale Samba tdb files: .. done
Starting winbindd.

   Проверяем, что из всего этого получилось:
squid$ id akeda
uid=10000(akeda) gid=10000(domain users) groups=10000(domain users)
squid$
squid$ wbinfo -g | wc -l
     398
squid$ wbinfo -u | wc -l
    1131
squid$

   Всё нормально. Теперь проверяем работу хелпера отвечающего за группы. Это несложный перловый скрипт идущий в комплекте со сквидом - он тупо вызывает wbinfo на тему поиска СИДа группы, и ещё разок на тему принадлежности юзера к группе с найденным SID. Всё просто, но по три форка на запрос. Будет ли он кэшировать найденные значения - выясниться позже, когда запустим и посмотрим на скорость изменения PID`ов в шапке top`a (могу сразу успокоить - кэширует :))). Итак, проверяем хелпер:
squid$ echo akeda bank | /usr/local/libexec/squid/wbinfo_group.pl
OK
squid$ echo akeda novosibirsk_gr | /usr/local/libexec/squid/wbinfo_group.pl
ERR
squid$ echo akeda omsk_gr | /usr/local/libexec/squid/wbinfo_group.pl
ERR
squid$

   Работает. Тока косяк - не удалось ему впарить группу (или юзера) с пробелом в названии - что для меня не очень существенно, всё равно для разруливания прав будут созданы отдельные группы - разумеется без пробелов. Заметим, что сам wbinfo - прекрасно обрабатывает и группы и имена пользователей с пробелами. В принципе, допилить наверно несложно, но - у меня желания нет. Если кому понадобиться - пилите и шлите разработчикам - будет со следующих версий всем щассье.
   Далее, проверяем хелпер самого сквида:
squid$ ntlm_auth --helper-protocol=squid-2.5-basic --require-membership-of="mydomain\domain users" -d10 -I /tmp
[2007/10/29 10:20:29, 5] lib/debug.c:debug_dump_status(391)
INFO: Current debug levels:
all: True/10
tdb: False/0
printdrivers: False/0
lanman: False/0
smb: False/0
rpc_parse: False/0
rpc_srv: False/0
rpc_cli: False/0
passdb: False/0
sam: False/0
auth: False/0
winbind: False/0
vfs: False/0
idmap: False/0
quota: False/0
acls: False/0
locking: False/0
msdfs: False/0
dmapi: False/0
akeda my_password
[2007/10/29 10:20:30, 10] utils/ntlm_auth.c:manage_squid_request(2086)
Got 'akeda my_password' from squid (length: 16).
[2007/10/29 10:20:30, 3] utils/ntlm_auth.c:check_plaintext_auth(298)
NT_STATUS_OK: Success (0x0)
OK
^C
squid$

   'akeda' - это мой логин, 'my_password' - пароль. Всё нормально, пашет. Конечно, в итоге будет всё не так гладко, т.к. сквид запускается не от рута, от которого я запускал данный хелпер, и у него не хватит прав на доступ к сокету winbindd - поэтому, заранее исправляем сиё досадное упущение:
squid$ chown root:squid /var/db/samba/winbindd_privileged

   Теперь рисуем конфиг сквида:
squid$ cat /usr/local/etc/squid/squid.conf
# squid conf
# начат lissyara, 2007-10-25 в 13:25

# порт где слушаем
http_port 3128

# список слов, которые будучи обнаруженными в URL
# вызывают обработку без кэширования
hierarchy_stoplist cgi-bin ?
# список ACL которые вызывают несовпадение с кэшем,
# и, запрос с ответом кэшироваться не будут
acl QUERY urlpath_regex cgi-bin \?
# собственно - правило что не кэшируем
no_cache deny QUERY
# сколько отдаём ему памяти (реально пожрёт втрое больше)
cache_mem 1024 MB
# Директория для кэша, числа - размер кэша в Mb,
# число директорий первого уровня, число директорий второго
# уровня в каждой директории первого.
cache_dir ufs /shares/squid/cache 50000 64 512
# лог доступа - первый параметр путь, второй - формат
# форматы описаны в дефолтовом файле.
access_log /var/log/squid/access.log squid
# лог активности менеджера хранилища. Показывает, какие
# объекты были сохранениы/удалены из кэша и как долго.
# мне он не нужен, а места занимает прилично.
cache_store_log none
# файл hosts, проверяемый при запуске. Из него берётся
# доменное имя и добавляется к неполным адресам (которые
# не содержат ни одной точки в имени)
hosts_file /etc/hosts
# домен добавляемый к неполным именам
append_domain .mydomain.local
# директория где хранятся HTML c текстами ошибок
error_directory /usr/local/etc/squid/errors/Russian-1251


# программа редиректор (у меня сквидгард) для более простой
# и тонкой настройки правил использования инета
#redirect_program /usr/local/bin/squidGuard -c \
#       /usr/local/etc/squid/squidguard.conf
# число процессов редиректора
#redirect_children 20

#cache_log /usr/local/squid/logs/cache.log
#debug_options ALL,5

# авторизация
# нативная авторизация ослика
auth_param ntlm program /usr/local/bin/ntlm_auth        \
        --helper-protocol=squid-2.5-ntlmssp
# число детишек для авторизации - сколько процессов запускать
auth_param ntlm children 30
# базовая авторизация для тех, кто не может нативную (я, например,
# т.к. сижу из под FreeBSD, да и многие программы - например,
# родной ICQ клиент от AOL)
auth_param basic program /usr/local/bin/ntlm_auth       \
        --helper-protocol=squid-2.5-basic
# Число процессов для базовой аворизации - значительно меньше
# чем для основной, т.к. таких юзеров/программ немного
auth_param basic children 4
# Заголовок окна выводимяй при запросе авторизации
auth_param basic realm Squid proxy-caching web server
# время жизни авторизации - сколько кэшировать данные
# (для базовой авторизации)
auth_param basic credentialsttl 2 hours



#refresh_pattern ^ftp:           1440    20%     10080
#refresh_pattern ^gopher:        1440    0%      1440
#refresh_pattern .               0       20%     4320

# внешняя ACL для разруливания по группам
external_acl_type nt_group %LOGIN       \
        /usr/local/libexec/squid/wbinfo_group.pl


# пользователи у которых просто интернет - с ограничениями
acl     inet_users      external nt_group inet_users
# пользователи у которых есть тока аська
acl     inet_icq        external nt_group inet_icq
# пользователи с полными парвами на доступ в инет
acl     inet_full       external nt_group inet_full
# люди с доступом к серверу аналитики
acl     inet_analit     external nt_group inet_analit
# пользователи с ограниченным доступом в инет - тока
# определённый набор ресурсов и всё.
acl     inet_restrict   external nt_group inet_restrict
# Пользователи которым разрешён метод CONNECT
acl     inet_connect    external nt_group inet_connect
# ACL авторизации на проксе
acl     MYDOMAIN            proxy_auth     REQUIRED


# Описываем порты на которые разрешено лазить
acl     SSL_ports               port    443 563
acl     SSL_for_client_banks    port    910 8443 4500
# порты на которе можно ходить юзерам
acl     safe_ports              port    80      # http
acl     safe_ports              port    21      # ftp
acl     safe_ports              port    443     # ssl
acl     ICQ_ports               port    5190    # ICQ
# надо ли? 1025-65535
acl     CONNECT                 method  CONNECT
# для /usr/ports/www/sqstat/
# копируете конфиг, ставите вместо 'host' - 'user'
# и начальство не оторвать от экрана :))
acl     manager                 proto   cache_object


# Описываем все сети все IP
acl all src 0.0.0.0/0.0.0.0
# описываем локалхост
acl localhost src 127.0.0.1/255.255.255.255
# acl до сайтов которые разрешены всем]
acl     mydomain_site      dstdomain       \
        "/usr/local/etc/squid/db/allow_all.txt"
# запрещённые в URL выражения (для всего УРЛа)
acl     bad_url         url_regex       \
        "/usr/local/etc/squid/db/deny_url.txt"
# запрещённые в URL выражения (для самого урла, без домена)
#acl    bad_url_2       urlpath_regex   \
#       "/usr/local/etc/squid/db/deny_url_2.txt"
# запрещённые доменные имена
acl     deny_domains    dstdomain       \
        "/usr/local/etc/squid/db/deny_domains.txt"
# acl для клиент-банков и прочих кому надо напрямую ходить
acl     client_banks    dst             \
        "/usr/local/etc/squid/db/clinet_banks.txt"
# сети в которые ходить не надо (ICQ и прочия)
acl     bad_networks    dst             \
        "/usr/local/etc/squid/db/bad_networks.txt"
# те кто ходят без авторизации
acl     not_autorized   src             \
        "/usr/local/etc/squid/db/not_autorized.txt"
# список сайтов для тех у кого их определённый набор
acl     domains_for_restrict dstdomain  \
        "/usr/local/etc/squid/db/domains_for_restrict.txt"

### настройки доступа ####

# вводим свои определения для сообщений о
# отказе по ACL - пригодиться когда кто-то
# воет что не может попасть на определённый сайт
deny_info       ERR_BAD_URL             bad_url
deny_info       ERR_BAD_NETWORKS        bad_networks
deny_info       ERR_DENY_DOMAINS        deny_domains
deny_info       ERR_SAFE_PORTS          safe_ports
deny_info       ERR_SSL_PORTS           SSL_ports


# пропускаем sqstat
http_access     allow   manager         localhost
http_access     deny    manager

# выпускаем на неавторизуемые сайты
http_access     allow   client_banks
# выпускаем тех кто не авторизуется в принципе
# т.к. они не в домене и т.п.
http_access     allow   not_autorized
# Разрешаем всем доступ на сайт конторы
# Этим же правилом срубаются все неавторизованные
http_access     allow   MYDOMAIN           mydomain_site
# Разрешаем доступ ко всему группе 'inet_full'
http_access     allow   inet_full       all
# Зарубаем запрещённые куски url
http_access     deny    bad_url
# Разрешаем асечный порт тем у кого есть аська
http_access     allow   inet_icq        ICQ_ports
# зарубаем запрещённые сети
http_access     deny    bad_networks
# зарубаем запрещённые домены
http_access     deny    deny_domains
# Зарубаем коннект кроме как к SSL (надо ли группе отдельной?)
http_access     deny    CONNECT         !SSL_ports
# зарубаем все порты проме safe_ports
http_access     deny    !safe_ports
# разрешаем инет обычным пользователям
http_access     allow   inet_users
# разрешаем инет ограниченным пользователям на разрешённые сайты
http_access     allow   inet_restrict   domains_for_restrict


# зарубаем всё нах :)
# Для начала кустомизируем сообщение о ошибке.
# ERR_INET_NO_ALLOW - это имя файла в
# /usr/local/etc/squid/errors/Russian-1251
# синтаксис описан
# http://wiki.squid-cache.org/SquidFaq/MiscFeatures
deny_info       ERR_INET_NO_ALLOW       all
http_access     deny                    all

   Сам конфиг хорошо прокомментирован, поэтому, дополнительные камменты не делаю, тока привожу файлики которые в нём фигурируют:
squid$ more /usr/local/etc/squid/db/allow_all.txt
# файл с сайтами доступ на которые разрешён всем
squid
mydomain.ru
ttb.kz
squid$


squid$ more /usr/local/etc/squid/db/deny_domains.txt
# файл со списком запрещённых доменов
# если надо весь домен с субдоменами - в начало
# надо поставить точку

# из файла mydomain_bad
download.zachot.ru
goblin.faberz.com
muzoff.ru
.udaff.ru
.udaff.com
.ziza.ru
.rapidshare.de
stream.fluendo.com
realaudio.aradio.ru
.mp3real.ru
files.rfonline.ru
files1.rfonline.ru
files2.rfonline.ru
files3.rfonline.ru
.proxy80.com
.cloakme.net
stream03.rambler.ru
.odnoklassniki.ru
.odnoklasniki.ru
.mamba.ru
.cirota.ru
.vkontakte.ru
.youtube.com
.video.google.com

# из сквидгарда - аудио-видео

123mp3links.tsx.org
128.242.103.21
128.242.103.22
128.242.103.23


squid$ more /usr/local/etc/squid/db/deny_url.txt
# url на котоые нельзя никому кроме тех у кого полный доступ
#
# ya[a-z/0-9/-]+dex\.ru диапазон буквы (мелкие), цифры и дефис
# ya.+ex\.ru - всё что начинается на ya и кончается на ex.ru
# объединение (gaz|plan)(eta) порубаются gazeta planeta
# Ахтунг! Длинна строки имеет ограничения, когда оно превышено он
# тупо отсекает лишнюю часть и ругается на несбалансированные
# скобки (у меня такое было на регулярных выражениях)
porn
sex
# из скивдгарда - реклама
/ads/
/ad/
/banner/
/sponsor/
/event.ng/
/Advertisement
/adverts/
# из сквидгарда - сайты для взрослых
# ... покоцано ... строки длинные - дезигн портят :)

#из сквидгарда - аудио-видео
\.(ra?m|wma|mp2|mpv2|mp3|asx)($|\?)
\.(mpe?g?|wmv|mov|movie|qt|avi|dvd?|divx|flv|iflv)($|\?)
\.(iso|exe|vbs)($|\?)


squid$ more /usr/local/etc/squid/db/clinet_banks.txt
# всякие назначения на которые надо попадать напрямую

# WU
206.211.228.242/32
206.211.227.242/32

# RF
217.227.42.3/32

# STC ATNN
213.191.224.0/19

# SB
213.85.162.11/32
193.33.122.18/32
194.84.227.220/32


squid$ more /usr/local/etc/squid/db/bad_networks.txt
# сети в которые ограничен доступ - ICQ и прочия

# переенсены из конфига старого прокси
81.19.68.114/32
217.16.18.76/32

# ICQ
64.12.0.0/16
205.188.0.0/16


squid$ more /usr/local/etc/squid/db/not_autorized.txt
# те кто ходят неавторизованными

# _guests
172.30.105.38/32
172.30.101.17/32

# notariat
172.30.19.92/32
172.30.19.93/32
172.30.19.103/32

squid$  


squid$ more /usr/local/etc/squid/db/domains_for_restrict.txt
# список доменов для юзеров с ограниченным доступом в инет.

# из файла good
mydomain.ru
localhost.mydomain.local
maps.yandex.ru
img.yandex.net
img.yandex.ru
postindex.otrok.ru


# из файла good
mts.ru
gismeteo.ru
yandex.ru

   После рисовки всех конфигов, делаем сквида владельцем директории с кэшем, и создаём субдиректории:
squid$ chown -R squid:wheel /shares/squid
squid$ squid -z
2007/10/29 12:38:02| Creating Swap Directories
2007/10/29 12:38:02| /shares/squid/cache exists
2007/10/29 12:38:02| Making directories in /shares/squid/cache/00
2007/10/29 12:38:02| Making directories in /shares/squid/cache/01
2007/10/29 12:38:02| Making directories in /shares/squid/cache/02
2007/10/29 12:38:02| Making directories in /shares/squid/cache/03
2007/10/29 12:38:02| Making directories in /shares/squid/cache/04
2007/10/29 12:38:02| Making directories in /shares/squid/cache/05
2007/10/29 12:38:03| Making directories in /shares/squid/cache/06
2007/10/29 12:38:03| Making directories in /shares/squid/cache/07
2007/10/29 12:38:03| Making directories in /shares/squid/cache/08
2007/10/29 12:38:03| Making directories in /shares/squid/cache/09
2007/10/29 12:38:03| Making directories in /shares/squid/cache/0A
2007/10/29 12:38:03| Making directories in /shares/squid/cache/0B
2007/10/29 12:38:03| Making directories in /shares/squid/cache/0C
2007/10/29 12:38:04| Making directories in /shares/squid/cache/0D
2007/10/29 12:38:04| Making directories in /shares/squid/cache/0E
2007/10/29 12:38:04| Making directories in /shares/squid/cache/0F
squid$

   Всё. Запускаем и юзаем.

P.S. С вопросами - в форум а не в камменты - камменты для косяков.
P.S.2 По дефолту, ОС не отдайт приложению более 512 мегов рамы, поэтому на реальной эксплуатации было замечено, что сквид регулярно отлетает на этом числе используемой оперативки. Решение:
kern.maxdsiz="2610612736"
kern.dfldsiz="2610612736"
kern.maxssiz="2610612736"

в /boot/loader.conf и проблемы сняло как рукой.



размещено: 2007-11-06,
последнее обновление: 2008-04-13,
автор: lissyara


Kolesya, 2007-11-06 в 17:10:20

Пора уже порт делать :)
Вот и название ему ADSambaSquid.

Кому статистика не критична, wbinfo_group.pl можно не юзать:

redirect_program /usr/local/rejik/redirector
redirect_children 15

auth_param ntlm  program /usr/local/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp --require-membership-of=LOCAL\\internet
auth_param ntlm children 5
auth_param ntlm keep_alive on

auth_param basic  program /usr/local/bin/ntlm_auth --helper-protocol=squid-2.5-basic --require-membership-of=LOCAL\\internet
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off

В redirector.conf используется доменный аккаунт без домена при настройке самбы "winbind use default domain = yes". Обратное не проверял.
Доступ юзеру будет предоставлен если он входит в группу "LOCAL\internet"

P.S. Firefox ходит через проксю по ntlm авторизации без проблем.

adsh, 2007-11-06 в 19:49:05

В качестве хранилища для кеша лучше юзать diskd и выставить:

cache_replacement_policy heap LFUDA
memory_replacement_policy heap GDSF

qqq, 2007-11-07 в 7:10:42

> chown -R squid:wheel /shares/squid

какого ... ? заменить на
chown -R squid:squid

lissyara, 2007-11-07 в 10:17:45

а у вас в группе wheel - кто попало?
У меня - нет.

gmn, 2007-11-07 в 16:18:54

> Для вопросов есть форум!
Укажите, плиз, ветку форума, куда писать вопросы, комментарии.
Их есть у меня :-)

mac, 2007-11-07 в 16:56:11

для cache_dir не рекомендуется использовать raid. Лучше для каждого винта указать отдельный cache_dir.
Причем непонятно зачем в этом рэйде избыточность? Или для вас содержимое кэша очень важно?

gmn, 2007-11-07 в 17:01:22

А как же aufs на FreeBSD после пятерки?
Я перешел с diskd на aufs - не жалею.
Диск с кешем монтирован с "noatime".
lissyara, может на форуме тему заведем?
Подобная схема работает у меня уже несколько лет и дорабатывается периодически. Есть чем поделиться.

adsh, 2007-11-07 в 17:40:26

Для больших кешей при интенсивном обмене diskd вообще то стал классикой - работает быстрее.

gmn, 2007-11-07 в 17:56:12

Зайдите на squid-cache.org и почитайте списки рассылок:
"if you have FreeBSD5 or higher, you can use aufs, which should be faster and doesn't require SHM tuning."
(насколько помню, было в теме о скорости работы кешей).

lissyara, 2007-11-08 в 0:58:31

обещщанная ветка. Делитесь наработками - потещу под нагрузкой - поправлю в статье и камментов подпишу, что лучше и почему.
Что касается избыточности для кэша - я не хочу с жопой в мыле править конфиг сквида, когда отдуплиться диск под кэшем. Лучше уж прочитаю об этом в ночном отчёте и спокойно закажу замену, чтоб поменять вечерком.

Basilio Cat, 2007-11-16 в 12:18:10

Решение пробелм с пробелами для wbinfo_group.sh - https://bugzilla.altlinux.org/attachment.cgi?id=669
внутри следующий скрипт
--------------------
#!/bin/sh

while read user group; do
   g_sid=`wbinfo -n "$group"`
   g_gid=`wbinfo -Y "$g_sid"`
   wbinfo -r "$user" | grep -qs "^$g_gid\$" 2>/dev/null && echo "OK" || echo "ERR"
done
--------------------
И скажите после этого, что на перле писать удобнее ;)

bb, 2007-12-05 в 1:24:55

а как избавится от запроса на автаризацию если юзер не состоит в группе ?

Poppel, 2007-12-23 в 1:21:04

-— подрихтовано для свежей самбы (3.0.28) ---

#!/bin/sh

while read user group; do
  g_sid=`wbinfo -n "$group" | awk '{ print $1 }'`
  g_gid=`wbinfo -Y "$g_sid"`
  wbinfo -r "$user" | grep -qs "^$g_gid\$" 2>/dev/null && echo "OK" || echo "ERR"
done

mandrake, 2008-01-10 в 21:36:31

Есть один косяк - когда пользователь из группы  restricted заходит на дозволеный сайт на котором есть много чужих баннеров, картинок короче ссылок на другие запрещенные сайты, ему вылазит окошечко для ввода пользователя и пароля, причем ровно столько раз сколько этих ссылок. Получается очень неудобно. Конечно можна резать баннеры но имхо всех всеравно не вырежешь и потому проблема остается открытой.

Morty, 2008-01-25 в 0:47:39

всё кул!
только у меня пару мелких затыков было - добавлял
в squid.conf
visible_hostname gtw3.domain.local
dns_nameservers 210.210.210.210 <== эт не обязательно но мне нравиться так -)
------------
в smb.conf
password server = 10.5.5.1 (либо полное имя серва)
hosts allow = 10.5.0.0

Stalker, 2008-02-14 в 14:52:19

Странно вроде конфиг в норме с правами на папки и файлы тож все в порядке а выдает ошибку
failed to find or read error text file

UncleS, 2008-02-18 в 13:17:33

УВАЖАЕМЫЕ, а давайте статью чтоль по поводу сквида 3.0, что да как настроить и что там нового появилось.
Самому как-то экспериментировать на рабочей проксе страшновато. Лиссяра, давайте статью по настройке!

max, 2008-02-25 в 23:01:16

/etc/krb5.conf у меня нет и /etc/nsswitch.conf дефолтовый, а также тикет  я не получал, только загнал тачку с сквидом и самбой в виндовый домен, как здесь было сказано: net ads join -U blablabla. Работает уже больше года без глюков и сбоев. :)

bracus, 2008-03-03 в 15:42:28

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

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

external_acl_type nt_group %LOGIN       \
       /usr/local/libexec/squid/wbinfo_group.pl

acl internet external nt_group internet
http_access allow internet

А проблема вот в чем, если я в ADS исключаю(добавляю) пользователя из группы internet. То сквид понимает это только после перезапуска сквида.

bracus, 2008-03-03 в 17:06:09

Сорри Товарищщи!Разобрался надо было просто указать время в секунадах например ожидание 2 минуты ttl=120

external_acl_type nt_group ttl=120 %LOGIN       \
      /usr/local/libexec/squid/wbinfo_group.pl

artem, 2008-03-12 в 16:03:31

В ветке 2.6.STABLE произошли изменения и теперь вместо параметров redirect_program и redirect_children необходимо использовать url_rewrite_program и url_rewrite_children соответственно.
http://www.sys-adm.org.ua/www/squid-ncsa.php

Andrew, 2008-08-04 в 14:40:31

to mandrake, 2008-01-10 в 21:36:31
Фича: если надоело жать отмена на каждый запрещённый баннер - заведи одного юзера совсем без прав. Пусть проведут авторизацию под ним 1 раз и больше ни одного запроса не увидишь :)

Name, 2008-08-27 в 20:07:23

В статье не указано что нужно создать файлики с ошибками
ERR_BAD_URL
ERR_BAD_NETWORKS
ERR_DENY_DOMAINS
ERR_SAFE_PORTS
ERR_SSL_PORTS
ERR_INET_NO_ALLOW

Затем создать директорию для логов и дать на нее права.

Name, 2008-10-28 в 20:36:58

acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY

у меня squid 2.6.STABLE16
там надо
acl QUERY urlpath_regex cgi-bin \?
cache deny QUERY

vova, 2008-12-09 в 11:19:11

Спасибо за статью. Делал по ней, все работает но есть одна маленькая неприятная вещь. Когда пользователь меняет пароль в AD то squid с новым паролем пользователя не может аутентифицировать. После рестарта сквида все работает. Кто-нить сталкивался с этим ? Научите плиз как победить. Заранее спасибо за советы.

atomic, 2009-01-13 в 14:47:16

2 vova:

он будет аутентифицироваться. только через определенное время. только надо ещё при этом перезайти в браузере

KaMa-CyTpA, 2009-02-14 в 18:02:26

ВОт надо было про sqstat писать?
Теперь сам от моника оторваться не могу, какое там начальство?!!!
РЕСПКЕТ ТЕБЕ!

m0ps, 2010-02-16 в 17:03:56

хотелось бы немного добавить:
если между прокси и КД есть нат, то билетик от кербероса получить не удастся. что бы это пофиксить, нужно создать конфиг /etc/krb5.conf и в секцию
[libdefaults]
добавить опцию
no-addresses = yes
пример конфига кербероса можно взять здесь:
http://www.lissyara.su/archive/samba+acl/

VP, 2010-04-12 в 10:42:41

В новой версии сквида нету ERR_BAD_URL
поэтому поменяйте
deny_info       ERR_BAD_URL             bad_url
на
deny_info       ERR_INVALID_URL         bad_url

roman_ssh, 2011-10-20 в 6:32:59

Ребята, не добавляйте эту хрень!
kern.maxdsiz="2610612736"
kern.dfldsiz="2610612736"
kern.maxssiz="2610612736"
3 месяца бился пока нашёл, получаю типа "cannot create main thread", вроде бы от ruby, не работают руби-сктипты, собственно сам руби18 через порты переустановиться не захотел, через pkg_add -r ruby установился, но так-же не работал.

Andrey, 2020-10-22 в 10:38:19

У кого криво пишутся русские логины в access.log, исправьте в исходниках Squid:
src/format/quoting.cc
|| c >= 0x7F
на
|| c >= 0xFA



 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.0678 секунд
Из них PHP: 54%; SQL: 46%; Число SQL-запросов: 77 шт.
У Вас отключено GZIP-сжатие в браузере. Размер страницы 86583