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

авторизация squid3


0

1

Здравствуйте. Прошу помощи)))

Вот при этих настройках сквид при открытии IE спрашивает логин и пароль от доменной учетки (что впринципе логично). Но, если я в строке

auth_param basic program
сменю метод авторизации на ntml то никого никуда не пускает и соответственно не спрашивает данные для авторизации. У пользователей обычная ошибка от IE (невозможно отобразить страницу), а в access.log 407 ошибка. Я думал что ошибка в хэлпере, но если basic авторизация проходит, то я так думаю, что и ntml должна проходить.

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

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

http_port 192.168.110.5:3128
icp_port 0
hierarchy_stoplist cgi-bin ?
cache_mem 128 MB
maximum_object_size 8092 KB
maximum_object_size_in_memory 512 KB
cache_dir ufs /usr/local/squid3/cache 512 16 256 
cache_access_log /usr/local/squid3/log/access.log
cache_log /usr/local/squid3/log/caches.log
cache_store_log /usr/local/squid3/log/store.log
cache_mgr admin@kinoforum.local
visible_hostname proxyserver
tcp_outgoing_address 192.168.110.5
refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern .               0       20%     4320
#redirect_program /usr/local/rejik3/redirector /usr/local/rejik3/redirector.conf
#redirect_children 10

coredump_dir /usr/local/squid3/cache
pid_filename /usr/local/squid3/log/squid.pid

auth_param basic program /usr/lib/squid3/squid_ldap_auth -R -D "squid@kinoforum.local" -w 111 -b "dc=kinoforum,dc=local" -f "sAMAccountName=%s" 192.168.110.3
auth_param ntlm children 10
auth_param ntlm keep_alive off

acl auth proxy_auth REQUIRED
acl manager proto cache_object
acl localhost src 127.0.0.1/32 ::1
acl localnet src 192.168.110.0/24
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1

acl SSL_ports port 443
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

http_access allow auth
http_access allow manager localhost
http_access allow localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost
http_access deny all

hierarchy_stoplist cgi-bin ?
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

ntlm работает не во всех браузерах, поэтому надо делать fallback-авторизацию на basic, ща достану из своей памятки по squid-у...

### negotiate kerberos and ntlm authentication
auth_param negotiate program /usr/local/bin/negotiate_wrapper -d --ntlm /usr/bin/ntlm_auth --diagnostics --helper-protocol=squid-2.5-ntlmssp --domain=TEST --kerberos /usr/$
auth_param negotiate children 10
auth_param basic realm Negotiate Auth
auth_param negotiate keep_alive off

### pure ntlm authentication
auth_param ntlm program /usr/bin/ntlm_auth --diagnostics --helper-protocol=squid-2.5-ntlmssp --domain=TEST
auth_param ntlm children 10
auth_param basic realm NTLM Auth
auth_param ntlm keep_alive off

### provide basic authentication via ldap for clients not authenticated via kerberos/ntlm
auth_param basic program /usr/libexec/squid/squid_ldap_auth -R -b "dc=test,dc=local" -D squid@test.local -W /etc/squid/ldappass.txt -f sAMAccountName=%s -h ad.test.local
auth_param basic children 10
auth_param basic realm Basic Auth
auth_param basic credentialsttl 1 minute

Тут у меня kerberos, потом fallback на ntlm и если уж ничего не проканало - тогда basic через ldap.

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

Спасибо за ссылку. Очень полезная инфа. Много уже перечитал, но этого мануала не видел)))

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

Сначала у меня все заработало со старым конфигом. Потом, поесле действий не относящихся к авторизации опять пеерстало работать. Я сделал авторизацию вот таким образом:

auth_param ntlm program /usr/lib/squid3/squid_ldap_auth -R -D "squid@kinoforum.local" -w 111 -b "dc=kinoforum,dc=local" -f "sAMAccountName=%s" 192.168.110.3
auth_param ntlm children 20
auth_param ntlm keep_alive off

auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp --domain=KINOFORUM.LOCAL
auth_param basic children 10
auth_param basic realm Basic Auth
auth_param basic credentialsttl 1 minute
Все начало работать. Но почему оно то работает, то нет, я не понимаю. Вроде ntlm с ie должны же корректно работать.

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

Возникла непонятная проблема.

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

acl auth proxy_auth REQUIRED
acl manager proto cache_object
acl localhost src 127.0.0.1/32 ::1
acl localnet src 172.16.0.0/24
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1

acl SSL_ports port 443
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 inet-admins external nt_group inet-admins

http_access allow inet-admins
http_access deny all
Вроде сделал как в том мануале, но в интернет не пускает все равно

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

Естественно есть такая группа в AD, и она лежит в корне

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

У меня в этом конфиге не работает ldap почему то. А вторизируется только по ntlm.

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

Сорри, я только учусь))) Сделал так, и все заработало

auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp --domain=KINOFORUM.LOCAL
auth_param ntlm children 10
auth_param basic realm NTLM Auth
auth_param ntlm keep_alive off

auth_param basic program /usr/lib/squid3/squid_ldap_auth -R -D "squid@kinoforum.local" -w 123 -b "dc=kinoforum,dc=local" -f "sAMAccountName=%s" 192.168.110.3
auth_param basic children 10
auth_param basic realm Basic Auth
auth_param basic credentialsttl 1 minute

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

Про доступ в интернет по группам AD вопрос ещё открыт

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

Скорее всего так оно и есть) Вот мой небольшой конфиг. Я из него убрал только ACL-ки запрета определенных сайтов.

# created by SAMS _sams_ 2013-1-16 16:0:47
http_port 192.168.110.252:3128
icp_port 0
hierarchy_stoplist cgi-bin ?
cache_mem 128 MB
maximum_object_size 8092 KB
maximum_object_size_in_memory 512 KB
cache_dir ufs /usr/local/squid3/cache 512 16 256 
cache_access_log /usr/local/squid3/log/accesss.log
cache_log /usr/local/squid3/log/caches.log
cache_store_log /usr/local/squid3/log/store.log
cache_mgr admin@kinoforum.local
visible_hostname proxyserver
tcp_outgoing_address 192.168.110.252
refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern .               0       20%     4320
coredump_dir /usr/local/squid3/cache
pid_filename /usr/local/squid3/log/squid.pid

auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp --domain=KINOFORUM.LOCAL
auth_param ntlm children 10
auth_param basic realm NTLM Auth
auth_param ntlm keep_alive off

auth_param basic program /usr/lib/squid3/squid_ldap_auth -R -D "squid@kinoforum.local" -w pass -b "dc=kinoforum,dc=local" -f "sAMAccountName=%s" 192.168.110.3
auth_param basic children 10
auth_param basic realm Basic Auth
auth_param basic credentialsttl 1 minute

acl manager proto cache_object
acl localhost src 127.0.0.1/32 ::1
acl localnet src 192.168.110.0/24
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1
acl CONNECT method CONNECT

acl SSL_ports port 443
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 inet-admins external nt_group inet-admins

http_access allow inet-admins
#http_access allow auth
http_access allow manager localhost
http_access allow localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access deny all
http_reply_access allow all
icp_access allow all

hierarchy_stoplist cgi-bin ?
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

Если я раскоментирую http_access allow auth то ошибка убирается

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

Насколько я понял, когда сквид доходит до

http_access allow localnet
то он просто начинает пускать всех с этой сети без разбора, и следовательно уже не применяет правило
http_access allow inet-admins !url-good !url-bad
для всех кто идет из localnet. А если закоментировать http_access allow localnet, то для сайтов из списка url-good в access.log пишется 403 ошибка, а для остальных сайтов 407 ошибка.

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

Вообще очень странно все это.

Например: Я добавляю в url-good.txt ya.ru. Открываю браузер, захожу на ya.ru - все ок, сайт видно. Добавляю yandex.ru. Захожу на yandex.ru - 403 ошибка. И так в произвольном порядке. То есть я нашёл несколько сайтов на которые меня пускает если они есть в url-good, а на остальные, хоть пиши их в url-good, хоть не пиши, доступа не будет. Почему так? И кстати на эти результаты не влияет состою я в группе inet-admins или нет.

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

честно - уже и не помню, все логины английские. Может даже и не тестировал...

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

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

.yandex.ru

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

Разобрался, это работает.

Но меня пускает только на сайты из списка. То есть проблема с группами не решена((

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

Вот лог

1358484470.845      0 192.168.110.3 TCP_DENIED/407 4175 GET http://habrahabr.ru/ - NONE/- text/html
1358484470.847      0 192.168.110.3 TCP_DENIED/407 4520 GET http://habrahabr.ru/ - NONE/- text/html
1358484470.851      2 192.168.110.3 TCP_DENIED/403 4367 GET http://habrahabr.ru/ adurbale NONE/- text/html
И так на все сайты, за исключением тех, что в списке

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

В cache.log нашел

failed to call wbcLookupName: WBC_ERR_DOMAIN_NOT_FOUND
Could not lookup name inet-admins
failed to call wbcStringToSid: WBC_ERR_INVALID_PARAM
Could not convert sid  to gid

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

Да вроде правильно...

testparm
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Loaded services file OK.
Server role: ROLE_DOMAIN_MEMBER
Press enter to see a dump of your service definitions

[global]
	workgroup = KINOFORUM
	realm = KINOFORUM.LOCAL
	server string = %h server
	security = ADS
	log file = /usr/local/squid3/samba/log.%m
	max log size = 50
	load printers = No
	printcap name = /dev/null
	disable spoolss = Yes
	show add printer wizard = No
	os level = 0
	local master = No
	domain master = No
	dns proxy = No
	template shell = /bin/bash
	winbind separator = /
	winbind max clients = 800
	winbind use default domain = Yes
	winbind refresh tickets = Yes
	winbind rpc only = Yes
	idmap config * : range = 10000-20000
	idmap config * : backend = tdb

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

Вычитал, что в конфиг самбы надо добавить

winbind rpc only = Yes
(у меня до этого небыло) После перезагрузки ошибок в cache.log нет. В интернет так-же не пускает

andreyd
() автор топика
Ответ на: комментарий от fbiagent
wbinfo -p
Ping to winbindd succeeded
wbinfo -t
checking the trust secret for domain KINOFORUM via RPC calls succeeded

wbinfo -u соответственно показывает пользователей, а kinit просит ввести пароль и после этого чистая строка

andreyd
() автор топика
26 апреля 2013 г.
Ответ на: комментарий от andreyd

права на wbinfo_group.pl

я вот только не понял, пользователь должен быть у сквида какой то стоковый, или сначала надо пользователя создать, а потом ему дать права на файл? или как вообще дать права сквиду на файл? у меня squid 2.7

vladstv
()

упёрся

словил затык на моменте авторизации по ip всё ходит туда сюда работает, всё хорошо, а вот авторизацию пользователей AD(Windows Server 2003) не получается подвязать! уже измучился!

застрял вот на этой строчке: «echo user domain_group | /usr/sbin/wbinfo_group.pl» вывод: «Failed to call wbcgetgroups: WBC_ERR_DOMAIN_NOT_FOUND Could not get groups for user domain_user ERR»

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