Просветите про тонкости настройки ACL в Squid

Проблемы с установкой, настройкой и работой системных и сетевых программ.

Модераторы: GRooVE, alexco

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Просветите про тонкости настройки ACL в Squid

Непрочитанное сообщение terminus » 2010-09-01 12:53:39

Уже много раз наступал на грабли когда мои настройки в сквиде работали или через Ж, или не работали вовсе... Гугление и чтение доков на сайте сквида никуда не привели. На данный момент я точно знаю, что элементы в ACL списках применяются через логический OR, а в директивах контроля доступа (http_access) через AND. Так же вкурсе, что обработка директив происходит сверху в низ до как бы первого совпадения.

Вот тут и начинаются заморочки. Если бы оно работало до первого совпадения, то очень многих проблем у меня бы небыло. Но оно обрабатывается как-то по-хитрому, вроде бы по группам одинаковых директив? И что это за правило, когда если в конце есть deny, то применяется allow?

http://www.squid-cache.org/Doc/config/http_access/
If none of the "access" lines cause a match, the default is the
opposite of the last line in the list. If the last line was
deny, the default is allow. Conversely, if the last line
is allow, the default will be deny. For these reasons, it is a
good idea to have an "deny all" entry at the end of your access
lists to avoid potential confusion.
Там что-то сильно нахуеверчено в логике обработки - есть тонкости которые я никак не могу сложить у себя в башке в качестве теорем. Вследствии чего имею гиморой и ошибки.

Кто-нить может внятно сформулировать эти тонкие моменты? На статью бы потянуло...
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
skeletor
майор
Сообщения: 2548
Зарегистрирован: 2007-11-16 18:22:04

Re: Просветите про тонкости настройки ACL в Squid

Непрочитанное сообщение skeletor » 2010-09-01 15:12:48

На статью думаю не потянуло б. Если перевести то, что ты привёл, то получаем такое:

В squid'e всегда есть "последнее невидимое" (виртуальное, но оно применяется) правило, которое определяется, как противоположное от последнего записанного вами: если у вас стоит allow all user_acl, то после запуска squid'a правила будут такими:

Код: Выделить всё

....
allow all user_acl
deny all all
хотя вы и не писали deny, но squid сам его добавил. Аналогично наоборот:
имеем правило deny all user_acl, а в итоге получится:

Код: Выделить всё

....
deny all user_acl
allow all all
В конце заметки есть рекомендация: всегда применяйте в конце правило deny all для избежания несанкционированного доступа.

Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: Просветите про тонкости настройки ACL в Squid

Непрочитанное сообщение terminus » 2010-09-09 17:37:14

Ну вот есть скажем в конфиге такой кусок по серединке:

Код: Выделить всё

http_access allow INTERNET GlobalWhiteList_domains
http_access allow WebVIP GlobalWhiteList_domains
http_access allow WebUsers GlobalWhiteList_domains
http_access allow GlobalWhiteList_domains
INTERNET, WebVIP, WebUsers - это группы из AD через NTLM.

Проблема с этим куском в том, что когда юзер аутентифицируется на прокси, то вводить имя/пароль требуется три раза подряд. Если проверка конфига идет до первого совпадения, то почему проверка на группу юзера происходит три раза?

Причем есть еще одна беда. Последняя строчка предусмотрена для таких систем которые не могут себя аутентифицировать. В белом списке GlobalWhiteList_domains грубо говоря сайт с windows update. Сделана эта конструкция для того, чтобы в логи сквида шли имена юзеров, а для тех кто не может себя аутентифицировать оставался бы последний шанс на доступ без аутентификации. Из лога потом free-sa репорты генерирует.
Так вот - при такой конструкции во-первых три раза аутентификация, а во вторых последняя строка не срабатывает.

:st:
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.


Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: Просветите про тонкости настройки ACL в Squid

Непрочитанное сообщение terminus » 2010-09-12 16:04:20

Ну вот хотя бы такой конфиг:

Код: Выделить всё

auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp
auth_param ntlm children 5
auth_param ntlm keep_alive on

auth_param basic program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-basic
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 1 hours

external_acl_type nt_group %LOGIN /usr/lib/squid/wbinfo_group.pl

acl INTERNET external nt_group internet
acl localnetwork src 192.168.0.0/16
acl manager proto cache_object
acl localhost src 127.0.0.1/32 192.168.1.30/32
acl to_localhost dst 127.0.0.0/8
acl Safe_ports port 443
acl SSL_ports port 443
acl POST method POST
acl CONNECT method CONNECT
acl FTP_ports port 21 20
acl FTP_protocol proto FTP

icp_access deny all
htcp_access deny all
http_access allow INTERNET
http_access allow localnetwork
http_access allow localhost
http_access deny all

visible_hostname squid.test.local

http_port 192.168.1.30:8080

logfile_rotate 12

access_log /var/log/squid/access.log squid

cache_dir ufs /var/spool/squid 1024 32 512
cache_mem 128 MB
cache_log /var/log/squid/cache.log

dns_defnames on

refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern (cgi-bin|\?)    0       0%      0
refresh_pattern .               0       20%     4320
в логах при доступе юзера user1 из группы ИНТЕРНЕТ:

Код: Выделить всё

1284296450.858      1 192.168.1.11 TCP_DENIED/407 3791 GET http://www.lissyara.su/ - NONE/- text/html
1284296450.904     33 192.168.1.11 TCP_DENIED/407 4045 GET http://www.lissyara.su/ - NONE/- text/html
1284296451.164    191 192.168.1.11 TCP_HIT/200 7337 GET http://www.lissyara.su/ user1 NONE/- text/html
1284296451.382      9 192.168.1.11 TCP_DENIED/407 3939 GET http://www.lissyara.su/scripts/bbcode_script.js - NONE/- text/html
1284296451.484     19 192.168.1.11 TCP_DENIED/407 3911 GET http://www.lissyara.su/scripts/style.css - NONE/- text/html
1284296451.493      9 192.168.1.11 TCP_DENIED/407 3693 CONNECT urs.microsoft.com:443 - NONE/- text/html
1284296451.493      9 192.168.1.11 TCP_DENIED/407 3951 GET http://www.google.com/afsonline/show_afs_search.js - NONE/- text/html
1284296451.493      9 192.168.1.11 TCP_DENIED/407 3971 GET http://pagead2.googlesyndication.com/pagead/show_ads.js - NONE/- text/html
1284296451.543     19 192.168.1.11 TCP_DENIED/407 4165 GET http://www.lissyara.su/scripts/style.css - NONE/- text/html
1284296451.564     40 192.168.1.11 TCP_DENIED/407 4225 GET http://pagead2.googlesyndication.com/pagead/show_ads.js - NONE/- text/html
1284296451.565     41 192.168.1.11 TCP_DENIED/407 3947 CONNECT urs.microsoft.com:443 - NONE/- text/html
1284296451.567     43 192.168.1.11 TCP_DENIED/407 4205 GET http://www.google.com/afsonline/show_afs_search.js - NONE/- text/html
1284296451.584     99 192.168.1.11 TCP_DENIED/407 4193 GET http://www.lissyara.su/scripts/bbcode_script.js - NONE/- text/html
1284296451.604     38 192.168.1.11 TCP_HIT/200 18102 GET http://pagead2.googlesyndication.com/pagead/show_ads.js user1 NONE/- text/javascript
1284296451.604     40 192.168.1.11 TCP_HIT/200 6543 GET http://www.lissyara.su/scripts/style.css user1 NONE/- text/css
1284296451.632      8 192.168.1.11 TCP_HIT/200 7736 GET http://www.lissyara.su/scripts/bbcode_script.js user1 NONE/- application/x-javascript
1284296451.683      0 192.168.1.11 TCP_HIT/200 413 GET http://www.lissyara.su/images/blank.gif user1 NONE/- image/gif
1284296451.683      0 192.168.1.11 TCP_HIT/200 3774 GET http://www.lissyara.su/images/gradient1.jpg user1 NONE/- image/jpeg
1284296451.683      0 192.168.1.11 TCP_HIT/200 2971 GET http://www.lissyara.su/images/gradient2.jpg user1 NONE/- image/jpeg
1284296451.852    239 192.168.1.11 TCP_MISS/200 1760 GET http://www.google.com/afsonline/show_afs_search.js user1 DIRECT/74.125.77.147 text/javascript
1284296451.994      0 192.168.1.11 TCP_HIT/200 762 GET http://googleads.g.doubleclick.net/pagead/test_domain.js user1 NONE/- text/javascript
1284296451.994      0 192.168.1.11 TCP_HIT/200 826 GET http://pagead2.googlesyndication.com/pagead/render_ads.js user1 NONE/- text/javascript
1284296452.014     20 192.168.1.11 TCP_HIT/200 15884 GET http://pagead2.googlesyndication.com/pagead/expansion_embed.js user1 NONE/- text/javascript
1284296452.054      0 192.168.1.11 TCP_HIT/200 5216 GET http://www.host-food.ru/images/banners/host-food.gif user1 NONE/- image/gif
1284296452.304    246 192.168.1.11 TCP_MISS/302 990 GET http://counter.yadro.ru/hit? user1 DIRECT/88.212.196.103 text/html
1284296452.344    229 192.168.1.11 TCP_MISS/200 491 GET http://www.google-analytics.com/__utm.gif? user1 DIRECT/74.125.77.102 image/gif
1284296452.353     48 192.168.1.11 TCP_MISS/200 605 GET http://counter.yadro.ru/hit? user1 DIRECT/88.212.196.103 image/gif
1284296452.393    339 192.168.1.11 TCP_MISS/200 3405 GET http://googleads.g.doubleclick.net/pagead/ads? user1 DIRECT/74.125.77.154 text/html
1284296452.433      0 192.168.1.11 TCP_HIT/200 1582 GET http://pagead2.googlesyndication.com/pagead/abglogo/abg-ru-100c-000000.png user1 NONE/- image/png
1284296452.484      0 192.168.1.11 TCP_HIT/200 1582 GET http://pagead2.googlesyndication.com/pagead/abglogo/abg-ru-100c-000000.png user1 NONE/- image/png
1284296452.584      0 192.168.1.11 TCP_HIT/200 4265 GET http://www.lissyara.su/favicon.ico user1 NONE/- image/x-icon
При доступе wget'ом без указания юзера из 192.168.1.30:

Код: Выделить всё

1284296519.164      0 192.168.1.30 TCP_DENIED/407 3732 GET http://www.shallalist.de/Downloads/shallalist.tar.gz - NONE/- text/html
1284296525.883      0 192.168.1.30 TCP_DENIED/407 3732 GET http://www.shallalist.de/Downloads/shallalist.tar.gz - NONE/- text/html
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

Гость
проходил мимо

Re: Просветите про тонкости настройки ACL в Squid

Непрочитанное сообщение Гость » 2010-09-12 18:22:08

давай такои попробуем:

Код: Выделить всё

http_port 192.168.1.30:8080

auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp
auth_param ntlm children 5
auth_param ntlm keep_alive on

external_acl_type nt_group %LOGIN /usr/lib/squid/wbinfo_group.pl

acl p21 port 21
acl p80 port 80
acl p443 port 443
acl ValidUser proxy_auth REQUIRED
acl INTERNET external nt_group internet

http_access deny !ValidUser
http_access deny !INTERNET
http_access allow p21
http_access allow p80
http_access allow p443
http_access deny all

cache_mem 128 MB
access_log /var/log/squid/access.log squid
cache_dir ufs /var/spool/squid 1024 32 512
cache_log /var/log/squid/cache.log
кстати, когда я гонял ntlm, то использвал хелпер, который идет вместе с самбой и лежит здесь:

Код: Выделить всё

/usr/local/bin/ntlm_auth

Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: Просветите про тонкости настройки ACL в Squid

Непрочитанное сообщение terminus » 2010-09-12 18:36:23

wget без паролей:

Код: Выделить всё

[root@squid squid]# env | grep proxy
http_proxy=http://192.168.1.30:8080


[root@squid squid]# wget http://www.shallalist.de/Downloads/shallalist.tar.gz
--2010-09-12 18:31:28--  http://www.shallalist.de/Downloads/shallalist.tar.gz
Connecting to 192.168.1.30:8080... connected.
Proxy request sent, awaiting response... 407 Proxy Authentication Required
2010-09-12 18:31:28 ERROR 407: Proxy Authentication Required.
в логе

Код: Выделить всё

1284305488.065      0 192.168.1.30 TCP_DENIED/407 3666 GET http://www.shallalist.de/Downloads/shallalist.tar.gz - NONE/- text/html
юзер user1 открывает страницу в IE:

Код: Выделить всё

1284305606.826      0 192.168.1.11 TCP_DENIED/407 4015 GET http://www.lissyara.su/ - NONE/- text/html
1284305606.977     79 192.168.1.11 TCP_DENIED/407 4335 GET http://www.lissyara.su/ - NONE/- text/html
1284305607.099     51 192.168.1.11 TCP_IMS_HIT/200 7337 GET http://www.lissyara.su/ user1 NONE/- text/html
1284305607.377      3 192.168.1.11 TCP_DENIED/407 4162 GET http://www.lissyara.su/scripts/bbcode_script.js - NONE/- text/html
1284305607.389      1 192.168.1.11 TCP_DENIED/407 4134 GET http://www.lissyara.su/scripts/style.css - NONE/- text/html
1284305607.389      1 192.168.1.11 TCP_DENIED/407 3976 GET http://www.google.com/afsonline/show_afs_search.js - NONE/- text/html
1284305607.507     40 192.168.1.11 TCP_DENIED/407 4482 GET http://www.lissyara.su/scripts/bbcode_script.js - NONE/- text/html
1284305607.527     21 192.168.1.11 TCP_DENIED/407 4454 GET http://www.lissyara.su/scripts/style.css - NONE/- text/html
1284305607.529     22 192.168.1.11 TCP_DENIED/407 4296 GET http://www.google.com/afsonline/show_afs_search.js - NONE/- text/html
1284305607.556     15 192.168.1.11 TCP_IMS_HIT/304 313 GET http://www.lissyara.su/scripts/bbcode_script.js user1 NONE/- application/x-javascript
1284305607.558     12 192.168.1.11 TCP_IMS_HIT/304 297 GET http://www.lissyara.su/scripts/style.css user1 NONE/- text/css
1284305607.607      0 192.168.1.11 TCP_IMS_HIT/304 298 GET http://www.lissyara.su/images/blank.gif user1 NONE/- image/gif
1284305607.607      0 192.168.1.11 TCP_IMS_HIT/304 299 GET http://www.lissyara.su/images/gradient1.jpg user1 NONE/- image/jpeg
1284305607.607      0 192.168.1.11 TCP_DENIED/407 4146 GET http://www.lissyara.su/images/gradient2.jpg - NONE/- text/html
1284305607.677      0 192.168.1.11 TCP_IMS_HIT/304 299 GET http://www.lissyara.su/images/gradient2.jpg user1 NONE/- image/jpeg
1284305607.897    352 192.168.1.11 TCP_MISS/304 309 GET http://www.google.com/afsonline/show_afs_search.js user1 DIRECT/74.125.77.104 -
1284305608.084     17 192.168.1.11 TCP_IMS_HIT/304 298 GET http://www.host-food.ru/images/banners/host-food.gif user1 NONE/- image/gif
1284305608.166     62 192.168.1.11 TCP_MISS/200 491 GET http://www.google-analytics.com/__utm.gif? user1 DIRECT/74.125.79.102 image/gif
1284305608.377    311 192.168.1.11 TCP_MISS/200 469 GET http://counter.yadro.ru/hit? user1 DIRECT/88.212.196.101 image/gif
1284305608.466    420 192.168.1.11 TCP_MISS/200 3280 GET http://googleads.g.doubleclick.net/pagead/ads? user1 DIRECT/74.125.77.154 text/html
не работает...

----
кстати, когда я гонял ntlm, то использвал хелпер, который идет вместе с самбой и лежит здесь:
Сквид запущен на сервере с Fedora 12.
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

Гость
проходил мимо

Re: Просветите про тонкости настройки ACL в Squid

Непрочитанное сообщение Гость » 2010-09-12 18:41:01

не работает чо, ты лучше словами напиши, так надежнее будет

попробуй вообще просто ntlm

Код: Выделить всё

http_port 192.168.1.30:8080

auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp
auth_param ntlm children 5
auth_param ntlm keep_alive on

acl p21 port 21
acl p80 port 80
acl p443 port 443
acl ValidUser proxy_auth REQUIRED

http_access deny !ValidUser
http_access allow p21
http_access allow p80
http_access allow p443
http_access deny all

cache_mem 128 MB
access_log /var/log/squid/access.log squid
cache_dir ufs /var/spool/squid 1024 32 512
cache_log /var/log/squid/cache.log

Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: Просветите про тонкости настройки ACL в Squid

Непрочитанное сообщение terminus » 2010-09-12 18:57:35

у wget при доступе без пароля отлуп:

Код: Выделить всё

1284306511.837      0 192.168.1.30 TCP_DENIED/407 3666 GET http://www.shallalist.de/Downloads/shallalist.tar.gz - NONE/- text/html
у юзера открывается:

Код: Выделить всё

1284306551.757      0 192.168.1.11 TCP_DENIED/407 4055 GET http://www.lissyara.su/ - NONE/- text/html
1284306551.788     10 192.168.1.11 TCP_DENIED/407 4375 GET http://www.lissyara.su/ - NONE/- text/html
1284306551.803      7 192.168.1.11 TCP_IMS_HIT/200 7337 GET http://www.lissyara.su/ user1 NONE/- text/html
1284306552.026      0 192.168.1.11 TCP_DENIED/407 4202 GET http://www.lissyara.su/scripts/bbcode_script.js - NONE/- text/html
1284306552.229      1 192.168.1.11 TCP_DENIED/407 4174 GET http://www.lissyara.su/scripts/style.css - NONE/- text/html
1284306552.229      1 192.168.1.11 TCP_DENIED/407 3976 GET http://www.google.com/afsonline/show_afs_search.js - NONE/- text/html
1284306552.267     18 192.168.1.11 TCP_DENIED/407 4522 GET http://www.lissyara.su/scripts/bbcode_script.js - NONE/- text/html
1284306552.297     20 192.168.1.11 TCP_DENIED/407 4494 GET http://www.lissyara.su/scripts/style.css - NONE/- text/html
1284306552.297     20 192.168.1.11 TCP_IMS_HIT/304 313 GET http://www.lissyara.su/scripts/bbcode_script.js user1 NONE/- application/x-javascript
1284306552.317      0 192.168.1.11 TCP_IMS_HIT/304 297 GET http://www.lissyara.su/scripts/style.css user1 NONE/- text/css
1284306552.318     41 192.168.1.11 TCP_DENIED/407 4296 GET http://www.google.com/afsonline/show_afs_search.js - NONE/- text/html
1284306552.357      0 192.168.1.11 TCP_IMS_HIT/304 298 GET http://www.lissyara.su/images/blank.gif user1 NONE/- image/gif
1284306552.418      1 192.168.1.11 TCP_IMS_HIT/304 299 GET http://www.lissyara.su/images/gradient1.jpg user1 NONE/- image/jpeg
1284306552.418      1 192.168.1.11 TCP_IMS_HIT/304 299 GET http://www.lissyara.su/images/gradient2.jpg user1 NONE/- image/jpeg
1284306552.945    588 192.168.1.11 TCP_MISS/304 309 GET http://www.google.com/afsonline/show_afs_search.js user1 DIRECT/74.125.77.104 -
1284306553.077      0 192.168.1.11 TCP_IMS_HIT/304 298 GET http://www.host-food.ru/images/banners/host-food.gif user1 NONE/- image/gif
1284306553.227    129 192.168.1.11 TCP_MISS/200 469 GET http://counter.yadro.ru/hit? user1 DIRECT/88.212.196.101 image/gif
1284306553.397    329 192.168.1.11 TCP_MISS/200 3234 GET http://googleads.g.doubleclick.net/pagead/ads? user1 DIRECT/74.125.77.156 text/html
1284306553.417    280 192.168.1.11 TCP_MISS/200 491 GET http://www.google-analytics.com/__utm.gif? user1 DIRECT/74.125.77.101 image/gif
Не работает вот что. Мне надо добиться чтобы при обработке конструкции правил разрешающих доступ чтобы те юзеры которые могут себя аутентифицировать, делали бы это и в логи шла бы информация о них. А те системы которые не в состоянии себя аутентифицировать (например виндовый комп при активации во время установки) могли иметь доступ и так без пароля.
Я выше писал, что борюсь со случаями когда есть глобальный белый список и при доступе на его адреса в логи не идет информация о юзере. Вот такая конструкция не отрабатывала:

Код: Выделить всё

http_access allow INTERNET GlobalWhiteList_domains
http_access allow WebVIP GlobalWhiteList_domains
http_access allow WebUsers GlobalWhiteList_domains
http_access allow GlobalWhiteList_domains
то что мы сейчас протестили в принципе то же самое - первые правила про аутентификацию, а остальные без. Почему эти остальные не отрабатывают, если аутентификация не случилась?

Код: Выделить всё

http_access deny !ValidUser
http_access allow p21
http_access allow p80
http_access allow p443
http_access deny all
Ну не смог юзер себя назвать (вообще имени/пароля не дал) - значит и аутентифицировать его нечем, значит идем дальше(?), а он сразу 407 отлуп...
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

Гость
проходил мимо

Re: Просветите про тонкости настройки ACL в Squid

Непрочитанное сообщение Гость » 2010-09-12 19:08:03

харошь логи вставлять, я ничего не понимаю в твоих логах, лучше слловами, а логи если понадобятся

я пока не понял что ты ответил, но
насчет:
Ну не смог юзер себя назвать (вообще имени/пароля не дал) - значит и аутентифицировать его нечем, значит идем дальше(?), а он сразу 407 отлуп...
матчасть говорит так:
1111111.png
1. Клиент отправляет запрос без всякой аутентификационной информации:

Код: Выделить всё

GET /index.html HTTP/1.1
так будет происходить для ВСЕХ новых соединений, в отличие от Basic схемы, которая при успешной аутентификации будет вставлять аутентификационную информацию для всех последующих соединений.

2. Прокси сервер возвращает код состояния 407:

Код: Выделить всё

HTTP/1.1 407 proxy authentication required
Proxy-Authenticate: NTLM
Connection: close
Заметьте, если бы клиент подключался не к прокси серверу, то ответом был бы код состояния 401 и заголовок WWW-Authenticate: NTLM.
После этого шага Squid разрывает соединение, заставляя клиента инициировать новое соединение независимо от любых keep-alive директив от клиента.

3. Клиент посылает новый GET запрос:

Код: Выделить всё

GET /index.html HTTP/1.1
Proxy-Authorization: NTLM some_more_stuff
где some_more_stuff закодированный в base64 NEGOTIATE_MESSAGE.

4. Сервер опять отвечает с кодом состояния 407:

Код: Выделить всё

HTTP/1.1 407 proxy authentication required
Proxy-Authenticate: NTLM still_some_more_stuff
где still_some_more_stuff закодированный в base64 CHALLENGE_MESSAGE.
На этом этапе очень важно, чтобы соединение TCP не разрывалось, так как все последующие проверки подлинности информации связанны с установившимся TCP соединением. Если же разорвется, то процедура должна будет повториться с первого шага.

5. Клиент отправляет GET запрос:

Код: Выделить всё

GET /index.html HTTP/1.1
Proxy-Authorization: NTLM cmon_we_are_almost_done
где cmon_we_are_almost_done закодированный в base64 AUTHENTICATE_MESSAGE.
Сообщение содержит информацию об имени пользователя и домене, а также доказательство того, что клиент знает настоящий пароль пользователя (вычисленная функция, более подробно см. NTLM).

6. Если аутентификация принимается, то сервер отвечает клиенту:

Код: Выделить всё

HTTP/1.1 200 OK
и все последующие сообщения не будут нуждаться в аутентификации до тех пор, пока установившееся TCP соединение не разорвется.
Если аутентификация проваливается или TCP соединение разорвалось, то сервер отправляет код состояния 407 и все начинается с первого шага.

Гость
проходил мимо

Re: Просветите про тонкости настройки ACL в Squid

Непрочитанное сообщение Гость » 2010-09-12 19:20:37

terminus писал(а):...Не работает вот что. Мне надо добиться чтобы при обработке конструкции правил разрешающих доступ чтобы те юзеры которые могут себя аутентифицировать, делали бы это и в логи шла бы информация о них. А те системы которые не в состоянии себя аутентифицировать (например виндовый комп при активации во время установки) могли иметь доступ и так без пароля.
Я выше писал, что борюсь со случаями когда есть глобальный белый список и при доступе на его адреса в логи не идет информация о юзере. Вот такая конструкция не отрабатывала:

Код: Выделить всё

http_access allow INTERNET GlobalWhiteList_domains
http_access allow WebVIP GlobalWhiteList_domains
http_access allow WebUsers GlobalWhiteList_domains
http_access allow GlobalWhiteList_domains
например так должно работать:

Код: Выделить всё

http_access allow GlobalWhiteList_domains
http_access deny !ValidUser
http_access allow p21
http_access allow p80
http_access allow p443
http_access deny all
terminus писал(а):...то что мы сейчас протестили в принципе то же самое - первые правила про аутентификацию, а остальные без. Почему эти остальные не отрабатывают, если аутентификация не случилась?

Код: Выделить всё

http_access deny !ValidUser
http_access allow p21
http_access allow p80
http_access allow p443
http_access deny all
...
вообще-то опять-таки матчасть:
Правила списков доступа проверяются в порядке их объявления. Поиск по списку прекращается, как только одно из правил совпадает.

Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: Просветите про тонкости настройки ACL в Squid

Непрочитанное сообщение terminus » 2010-09-12 19:21:22

Таким образом получается, что директивы доступа с аутентификацией имеют абсолютный приоритет над всеми другими, и поэтому золотое правило "проверка сверху вниз до первого совпадения" не отрабатывает? Если на такой директиве не удалось аутентифицировать юзера, то обработка просто прекращается?

Поэтому данная конструкция с надеждой, что системы которые не могут себя назвать обработаются последним правилом - лишена смысла:

Код: Выделить всё

http_access allow INTERNET GlobalWhiteList_domains
http_access allow GlobalWhiteList_domains
Интересно...
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.


Гость
проходил мимо

Re: Просветите про тонкости настройки ACL в Squid

Непрочитанное сообщение Гость » 2010-09-12 19:24:59

вот тебе залатое правило:
http_access allow|deny acl AND acl AND ...
OR
http_access allow|deny acl AND acl AND ...
OR
...

Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: Просветите про тонкости настройки ACL в Squid

Непрочитанное сообщение terminus » 2010-09-12 19:41:30

Ну скажем вот такая конструкция:

Код: Выделить всё

http_access allow ValidUser
http_access allow p21
http_access allow p80
http_access allow p443
http_access deny all
при доступе через wget дает ту же самую 407.

Я про то, что применение ntlm аутентификации, в случае ее неудачи заканчивается 407 ошибкой с самого начала. Так как wget не настроен на работу с именем юзера и паролем то ему нечем проводить NEGOTIATE_MESSAGE+AUTHENTICATE_MESSAGE и фактически первая директива в данном примере для таких клиентов становится последней...
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.


Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: Просветите про тонкости настройки ACL в Squid

Непрочитанное сообщение terminus » 2010-09-12 20:01:10

А вот еще вопрос появился - про модули.

В чем разница между:

Код: Выделить всё

auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp
auth_param ntlm children 5
auth_param ntlm keep_alive on

acl ValidUser proxy_auth REQUIRED
и

Код: Выделить всё

auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp
auth_param ntlm children 5
auth_param ntlm keep_alive on

external_acl_type nt_group %LOGIN /usr/lib/squid/wbinfo_group.pl
Насколько я понял, proxy_auth + auth_param ntlm это встроенный модуль который умеет только по имени юзера аутентифицировать (REQUIRED - значит любой валидный). А proxy_auth + external_acl_type используется тогда, когда надо аутентифицировать по именам групп?

Я просто счас усиленно разбираюсь в незнакомом, поэтому такие вопросы... :st:
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: Просветите про тонкости настройки ACL в Squid

Непрочитанное сообщение terminus » 2010-09-12 20:05:00

Гость писал(а):а если так не делать, то работаит?
Если поставить так:

Код: Выделить всё

http_access allow p21
http_access allow p80
http_access allow p443
http_access allow ValidUser
http_access deny all
то до ValidUser ничего не доходит и все обрабатывается без аутентификации на p80 - и wget, и user1.
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

Гость
проходил мимо

Re: Просветите про тонкости настройки ACL в Squid

Непрочитанное сообщение Гость » 2010-09-12 20:14:21

terminus писал(а):
Гость писал(а):а если так не делать, то работаит?
Если поставить так:

Код: Выделить всё

http_access allow p21
http_access allow p80
http_access allow p443
http_access allow ValidUser
http_access deny all
то до ValidUser ничего не доходит и все обрабатывается без аутентификации на p80 - и wget, и user1.
так это хорошо или плохо? ничо не понимаю...

terminus писал(а):А вот еще вопрос появился - про модули.

В чем разница между:
...
Насколько я понял, proxy_auth + auth_param ntlm это встроенный модуль который умеет только по имени юзера аутентифицировать (REQUIRED - значит любой валидный). А proxy_auth + external_acl_type используется тогда, когда надо аутентифицировать по именам групп?...
матчасть про auth_param (директивы для определения параметров различных схем аутентификации,
поддерживаемых Squid):
Please note that while this directive defines how Squid processes
authentication it does not automatically activate authentication.
To use authentication you must in addition make use of ACLs based
on login name in http_access (proxy_auth, proxy_auth_regex or
external with %LOGIN used in the format tag). The browser will be
challenged for authentication on the first such acl encountered
in http_access processing and will also be re-challenged for new
login credentials if the request is being denied by a proxy_auth
type acl.


Пожалуйста, обратите внимание, что, хоть эта директива и определяет КАК процесс Squid будет проводить аутентификацию, но она автоматически не включает аутентификацию. Для того, чтобы использовать аутентификацию, вы должны добавить ACL основанный на логине (имя пользователя). acl должны быть типа proxy_auth, proxy_auth_regex или external с использованием переменной %LOGIN. При доступе через браузер, будет запрошена аутентификация пользователя. При правильных логине и пароле, пользователю откроется доступ, иначе нет.

Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: Просветите про тонкости настройки ACL в Squid

Непрочитанное сообщение terminus » 2010-09-12 20:31:56

так это хорошо или плохо? ничо не понимаю...
Да и не так и не эдак. Решения задачи я не достигнул, но хоть разобрался из-за чего оно не работает.
Задача то была сделать так тчобы при доступе через такие правила:

Код: Выделить всё

http_access allow INTERNET GlobalWhiteList_domains
http_access allow GlobalWhiteList_domains
в логи шла информация о юзерах из группы INTERNET, и чтобы системы которые не могут себя аутентифицировать, отрабатывались бы на последнем правиле. Получается, что это невозможно.
Для того, чтобы использовать аутентификацию, вы должны добавить ACL основанный на логине
Да это понятно, конечно же...
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

Аватара пользователя
skeletor
майор
Сообщения: 2548
Зарегистрирован: 2007-11-16 18:22:04

Re: Просветите про тонкости настройки ACL в Squid

Непрочитанное сообщение skeletor » 2010-09-18 20:21:40

Дык дело в том, что не все ПО понимает правильно NTLM авторизацию. Обычно добавляют ещё basic авторизацию.

Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: Просветите про тонкости настройки ACL в Squid

Непрочитанное сообщение terminus » 2010-09-18 20:31:05

basic была - не помогло. Проблема в том, каким образом ntlm авторизация работает.
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.