Squid + Sams + Samba + NTLM + опухшая голова

Всем доброго времени суток... прошу помощи ибо уже 2 дня ковыряюсь, но ничего не выходит...

в общем ситуация такая, есть Windows Server 2003 с AD (STINKY.SPB.RU) и есть Сервак на Gentoo, на котором собирал данную свзяку, необходимо чтобы пользователи AD вписав в свой интернет эксплорер адрес прокси сервера смогли пользоваться этой проксей на полную, но этого почему-то нет..

по команде wbinfo -u показывает список пользователей домена, wbinfo -g показывает список групп, тут все хорошо, в SAMS также при выборе NTLM аунтификации выводит список пользователей, если выбрать Active Directory то так почему-то ничего нету, ну видимо так и должно быть.. собсвтенно прокся поднята, пользователь садиться за комп, вбивает адрес ya.ru и его посылают подальше ну а в логах мы видим следующее:

1307557458.825      1 192.168.0.113 TCP_DENIED/403 3818 GET http://google.com/ - NONE/- text/html
1307557458.832      0 192.168.0.113 TCP_DENIED/403 3934 GET http://www.squid-cache.org/Artwork/SN.png - NONE/- text/html
1307557521.733      1 192.168.0.113 TCP_DENIED/403 3818 GET http://google.com/ - NONE/- text/html
1307557521.738      1 192.168.0.113 TCP_DENIED/403 3934 GET http://www.squid-cache.org/Artwork/SN.png - NONE/- text/html
1307557531.047      1 192.168.0.113 TCP_DENIED/403 3818 GET http://google.com/ - NONE/- text/html
1307557531.054      1 192.168.0.113 TCP_DENIED/403 3934 GET http://www.squid-cache.org/Artwork/SN.png - NONE/- text/html
1307558263.758      1 192.168.0.113 TCP_DENIED/403 3818 GET http://google.com/ - NONE/- text/html
1307558263.765      1 192.168.0.113 TCP_DENIED/403 3934 GET http://www.squid-cache.org/Artwork/SN.png - NONE/- text/html

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

исходные данные

домен: stinky.spb.ru
win2003 ad: 192.168.0.101 / server10.stinky.spb.ru

squid.conf

redirect_program /usr/bin/samsredir
redirect_children 5
auth_param ntlm program  /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp --require-membership-of=STINKY.SPB.RU+"Domain Users"
auth_param ntlm children 250 
auth_param ntlm keep_alive on
auth_param basic program  /usr/bin/ntlm_auth --helper-protocol=squid-2.5-basic --require-membership-of=STINKY.SPB.RU+"Domain Users"
auth_param basic children 20
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
acl manager proto cache_object
acl localhost src 127.0.0.1/32 ::1
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1
acl manager proto cache_object
acl localhost src 
acl to_localhost dst 
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 Safe_ports port 901		# SWAT
acl purge method PURGE
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost
http_access deny all
icp_access allow all
http_port 3128
hierarchy_stoplist cgi-bin ?
cache_mem 128 MB
maximum_object_size_in_memory 512 KB
cache_dir ufs /var/cache/squid 16384 16 256
maximum_object_size 8092 KB
access_log /var/log/squid/access.log squid
cache_log /var/log/squid/cache.log
cache_store_log /var/log/squid/store.log
mime_table /etc/squid/mime.conf
ftp_user anonymous@qwerty
acl QUERY urlpath_regex cgi-bin \?
cache deny QUERY
refresh_pattern ^ftp:		1440	20%	10080
refresh_pattern ^gopher:	1440	0%	1440
refresh_pattern .		0	20%	4320
acl apache rep_header Server ^Apache
dns_nameservers 10.0.0.3 10.0.0.5
forwarded_for off
coredump_dir /var/cache/squid

sams.conf

[client]
SQUID_DB=squidlog
SAMS_DB=squidctrl
MYSQLHOSTNAME=127.0.0.1
MYSQLUSER=sams
MYSQLPASSWORD=sams
MYSQLVERSION=5.1
SQUIDCACHEFILE=access.log
SQUIDROOTDIR=/etc/squid
SQUIDLOGDIR=/var/log/squid
SQUIDCACHEDIR=/var/cache/squid
SAMSPATH=/usr/
SQUIDPATH=/usr/sbin
SQUIDGUARDLOGPATH=/var/log
#SQUIDGUARDDBPATH=/var/db/squidguard
RECODECOMMAND=iconv -f UTF-8 -t 866 %finp > %fout 
#LDAPSERVER=stream
#LDAPBASEDN=stinky.spb.ru
#LDAPUSER=
#LDAPUSERPASSWD=holykirka
#LDAPUSERSGROUP=Users
#REJIKPATH=/usr/local/rejik
SHUTDOWNCOMMAND=shutdown -h now
CACHENUM=0

smb.conf

[global]
   workgroup = STINKY
   netbios name = proxy2 
   server string = Super Puper Gentoo Linux Server %v
   log file = /var/log/samba/log.%m
   max log size = 50
   log level = 3
   hosts allow = 192.168.0.0/24 127.0.0.1
   map to guest = bad user
   realm = server10.stinky.spb.ru
   nt acl support = yes
   nt status support = yes

security = ads
   password server = 192.168.0.101
   encrypt passwords = yes
   winbind separator = +
   winbind uid = 10000-20000
   winbind gid = 10000-20000
   winbind enum groups = yes
   winbind enum users = yes
   template homedir = /home/%D/%U
   template shell = /bin/bash
   socket options = TCP_NODELAY SO_RCVBUF=16384 SO_SNDBUF=16384
   interfaces = 192.168.0.248/24
   local master = no
   os level = 0
   domain master = no
   preferred master = no
   domain logons = no
   name resolve order = host lmhosts bcast
   dns proxy = no
[public]
   comment = Public Stuff
   path = /home/public
   public = yes
   writable = yes
   browserable  = yes
   inherit acls = yes
   inherit permissions = yes
   create mask = 600
   directory mask = 600

krb5.conf

[logging]
	default = FILE:/var/log/krb5libs.log
	kdc = FILE:/var/log/krb5kdc.log
	admin_server = FILE:/var/log/kadmind.log

[libdefaults]
	default_realm = STINKY.SPB.RU
	dns_lookup_realm = false
	dns_lookup_kdc = false

[realms]
	ZAVOD.LOCAL = {
		kdc = server10.STINKY.spb.ru
		admin_server = server10.STINKY.spb.ru
		default_domain = stinky.spb.ru
	}

[domain_realm]
	.stinky.spb.ru = stinky.SPB.RU
	stinky.spb.ru = stinky.SPB.RU

[kdc]
	profile = /var/kerberos/krb5kdc/kdc.conf

[appdefaults]
	pam = {
		debug = false
		ticket_lifetime = 36000
		renew_lifetime = 36000
		forwardable = true
		krb4_convert = false
	}

Все свалил в кучу. Разделяй и

Все свалил в кучу. Разделяй и влавствуй, так сказать.

Самс отключить , сквид отключить. Пинаем самбу wbinfo -g, wbinfo -u ... wbinfo -a ДОМЕН\\юзер%пассворд. Все должно проходить на ура.
Далее идем пинать сквид.

####################################################################################################
#Параметры прокси сервера #
####################################################################################################

http_port 3128
access_log /var/log/squid/access.log squid
cache_store_log /var/log/squid/store.log
cache_log /var/log/squid/cache.log

####################################################################################################
#Схемы авторизации #
####################################################################################################

#Настройки схемы ntlm для интернет эксплорера
auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp
auth_param ntlm children 100
auth_param ntlm keep_alive on

#Настройки схемы basic для прочих браузеров
auth_param basic program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-basic
auth_param basic children 30
auth_param basic realm Squid proxy-caching web server basic
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off

.....

Далее все временно закоментировать. Проверить работу ntlm_auth
/usr/bin/ntlm_auth --domain=ДОМЕН --password=Пассворд --username=имяпользователя. Должно ответить NT_STATUS_OK: Success (0x0)

В вашем примере требуется вхождение юзверя в доменную группу. ИМХО зря ибо вы собираетесь управлять сквидом через самс. В любом случае эту программку нужно запускать до посинения, чтоб она выдавала ок со всеми выбранными вами параметрами кроме хелперпротокола.
В вашем случае имхо косячит /usr/bin/ntlm_auth --require-membership-of=STINKY.SPB.RU+"Domain Users"

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

acl DOMAIN_USERS proxy_auth REQUIRED
http_access allow DOMAIN_USERS
http_access deny All

После этого реконфигурируем сквид и пытаемся пролезть через него в нет, внимательно наблюдая за логами. Как только отладите схему авторизации и поймете что именно надо писать в поле юзер можно закомментировать временную дырку и вдумчиво продолжить конфигурацию сквида. У меня мозилка требует ДОМЕН\юзер. Интернет эксплорер должен пускать без вопросов.

После закомментированных тестовых настроек необходимо добавить собственные неуправляемые настройки.

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

#Списки доступа
acl FROMLOCALNET src 10.254.0.0/16
acl TOLOCALNET dst 10.254.0.0/16
acl wsus src 10.254.0.34

#Сайты без авторизации
acl GoodSites dstdomain .1gl.ru .1gl-vip.ru .glavbukh.ru .gentoo.ru .gentoo.org .icm.ru 213.33.238.188 .34gaz.ru .skbkontur.ru .kontur-extern.ru .kaspersky.ru .kaspersky-labs.com .kav.ru .gazprommrg.ru .transneft.ru .mrg.ru .gazprom.ru .gaz-is.ru .34regiongaz.ru .gz-volga.ru .zakupki.gov.ru

acl ICQ_PORTS port 443 563 5190
acl CONNECT method CONNECT

http_access allow BuhGL
....

Тут вы вольны прописать все что хотите оставить неизменным.

Далее вы должны указать самсу место для вставки своих записей. Делается это путем добавления комментариев TAG (именно с теми пробелами как дано

#
# Следующие строки управляются SAMS
#

# TAG: acl

# TAG: http_access

#Конец управляемых настроек
http_access deny all

Изменения конфы самс будет пихать после # TAG: до первого коммента.
Таким образом мы указали самсу место куда пихать свои акцесс листы и разрешения.
После управляемых настроек самса я бы временно сделал Дырку для юзеров домена. Чтобы пускать их мимо самса. Это позволит отлаживать самс не прерывая доступа юзверей в нет.

#Конец управляемых настроек
acl DOMAIN_USERS proxy_auth REQUIRED
http_access allow DOMAIN_USERS
http_access deny All

wbinfo -a

wbinfo -a Administrator%passwrd

plaintext password authentication failed
Could not authenticate user Administrator%passwrd with plaintext password
challenge/response password authentication succeeded

wbinfo -a STINKY\\Administrator%passwrd

plaintext password authentication failed
Could not authenticate user STINKY\Administrator%passwrd with plaintext password
challenge/response password authentication failed
error code was NT_STATUS_NO_SUCH_USER (0xc0000064)
error messsage was: No such user
Could not authenticate user STINKY\Administrator with challenge/response

это нормально??

Да. Совсем забыл. Во время

Да. Совсем забыл. Во время работы самс генерит регистрозависимые правила. Это делает невозможным работу некоторых приложений, которые играются с регистром как хотят.
В изначальном варианте кацесслист самса выглядит примерно так:
acl Sams2Template1 proxy_auth DOMEN\user

Тоесть домен заглавными, юзер прописными. Иначе не пустит. Короче имхо это баг. И его надо поправить. Правило должно генериться в следующем виде

acl Sams2Template1 proxy_auth -i DOMEN\user

Тогда регистр не важен. Все просто, распаковываем сурс, ищем место где формируется строка и правим. Сурсы там не мудреные. Короче нано и греп в помощь. Ежели сильны в ебилдостроении можете запихать патч в ебилд.

Опрос AD из sams должен

Опрос AD из sams должен возвращать пользователей - это залог победы. Скорее всего, у тебя неправильно прописан путь к wbinfo в настройках sams.

Не грусти, товарищ! Всё хорошо, beautiful good!

sams видит пользоваетелей AD

sams видит пользоваетелей AD значит путь верный

В итоге...

В общем собрал чистую генту поставил только squid и samba

в результате:

vproxy ~ # wbinfo -u
STINKY+administrator
STINKY+guest
STINKY+support_388945a0
STINKY+krbtgt
vproxy ~ # wbinfo -g
STINKY+domain computers
STINKY+domain controllers
STINKY+schema admins
STINKY+enterprise admins
STINKY+domain admins
STINKY+domain users
STINKY+domain guests
STINKY+group policy creator owners
STINKY+dnsupdateproxy
wbinfo -a STINKY\\Administrator%passwrd
plaintext password authentication failed
Could not authenticate user STINKY\Administrator%passwrd with plaintext password
challenge/response password authentication failed
error code was NT_STATUS_NO_SUCH_USER (0xc0000064)
error messsage was: No such user
Could not authenticate user STINKY\Administrator with challenge/response
wbinfo -a Administrator%passwrd
plaintext password authentication failed
Could not authenticate user Administrator%passwrd with plaintext password
challenge/response password authentication succeeded
vproxy ~ # /usr/bin/ntlm_auth --domain=STINKY --password=passwrd --username=Administrator
NT_STATUS_OK: Success (0x0)
vproxy ~ # cat /etc/samba/smb.conf
[global]
   workgroup = STINKY
   netbios name = vproxy
   server string = Super Puper Gentoo Linux Server %v
   log file = /var/log/samba/log.%m
   max log size = 50
   log level = 3
   hosts allow = 192.168.0.0/24 127.0.0.1
   map to guest = bad user
   realm = oaodmz.local
   nt acl support = yes
   nt status support = yes

security = ads
   password server = 192.168.0.249
   encrypt passwords = yes
   winbind separator = +
   winbind uid = 10000-20000
   winbind gid = 10000-20000
   winbind enum groups = yes
   winbind enum users = yes
   template homedir = /home/%D/%U
   template shell = /bin/bash
   socket options = TCP_NODELAY SO_RCVBUF=16384 SO_SNDBUF=16384
   interfaces = 192.168.0.248/24
   local master = no
   os level = 0
   domain master = no
   preferred master = no
   domain logons = no
   name resolve order = host lmhosts bcast
   dns proxy = no
[public]
   comment = Public Stuff
   path = /home/public
   public = yes
   writable = yes
   browserable  = yes
   inherit acls = yes
   inherit permissions = yes
   create mask = 600
   directory mask = 600
vproxy ~ # cat /etc/squid/squid.conf
http_port 3128
access_log /var/log/squid/access.log squid
cache_store_log /var/log/squid/store.log
cache_log /var/log/squid/cache.log

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

auth_param basic program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-basic
auth_param basic children 30
auth_param basic realm Squid proxy-caching web server basic
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off

acl DOMAIN_USERS proxy_auth REQUIRED
http_access allow DOMAIN_USERS
http_access deny All

visible_hostname vproxy

ввожу в IE адрес прокси, набираю ya.ru

почему-то затребовал логи пасс.. ввожу STINKY\Administrator и пароль в сквиде такой лог...

 tail -f /var/log/squid/*
==> /var/log/squid/cache.log <==
[2011/06/09 12:29:03.064801,  3] libsmb/ntlmssp.c:65(debug_ntlmssp_flags)
  Got NTLMSSP neg_flags=0xa2088207
[2011/06/09 12:29:03.071181,  3] ../lib/util/util_net.c:68(interpret_string_addr_internal)
  interpret_string_addr_internal: getaddrinfo failed for name vproxy.stinky.spb.ru [Name or service not known]
[2011/06/09 12:29:03.071304,  3] lib/util_sock.c:1805(get_mydnsfullname)
  get_mydnsfullname: getaddrinfo failed for name vproxy.stinky.spb.ru [Unknown error]
[2011/06/09 12:29:03.075088,  3] ../lib/util/util_net.c:68(interpret_string_addr_internal)
  interpret_string_addr_internal: getaddrinfo failed for name vproxy.stinky.spb.ru [Name or service not known]
[2011/06/09 12:29:03.075326,  3] lib/util_sock.c:1805(get_mydnsfullname)
  get_mydnsfullname: getaddrinfo failed for name vproxy.stinky.spb.ru [Unknown error]

==> /var/log/squid/access.log <==
1307622543.076     12 192.168.0.249 TCP_DENIED/407 4104 GET http://ya.ru/ - NONE/- text/html

==> /var/log/squid/store.log <==
1307622543.076 RELEASE -1 FFFFFFFF BF17A0B1A317F362053D323EB2E3464F  407 1307622543         0        -1 text/html 3554/3554 GET http://ya.ru/

==> /var/log/squid/cache.log <==
[2011/06/09 12:29:03.077877,  3] libsmb/ntlmssp.c:747(ntlmssp_server_auth)
  Got user=[Administrator] domain=[STINKY] workstation=[SERVERAD] len1=24 len2=24
[2011/06/09 12:29:03.078502,  0] utils/ntlm_auth.c:600(winbind_pw_check)
  Login for user [STINKY]\[Administrator]@[SERVERAD] failed due to [winbind client not authorized to use winbindd_pam_auth_crap. Ensure permissions on /var/cache/samba/winbindd_privileged are set correctly.]
[2011/06/09 12:29:03.078674,  0] utils/ntlm_auth.c:896(manage_squid_ntlmssp_request_int)
  NTLMSSP BH: NT_STATUS_ACCESS_DENIED
2011/06/09 12:29:03| authenticateNTLMHandleReply: Error validating user via NTLM. Error returned 'BH NT_STATUS_ACCESS_DENIED'

==> /var/log/squid/access.log <==
1307622543.079      2 192.168.0.249 TCP_DENIED/407 4209 GET http://ya.ru/ - NONE/- text/html

==> /var/log/squid/store.log <==
1307622543.079 RELEASE -1 FFFFFFFF 6CD79EED47EFD91A5BFF85994677B739  407 1307622543         0        -1 text/html 3728/3728 GET http://ya.ru/

==> /var/log/squid/access.log <==
1307622543.087      1 192.168.0.249 TCP_DENIED/407 4000 GET http://www.squid-cache.org/Artwork/SN.png - NONE/- text/html

==> /var/log/squid/store.log <==
1307622543.087 RELEASE -1 FFFFFFFF 6B023952CF24835F8EC84574CE8DCA7D  407 1307622543         0        -1 text/html 3519/3519 GET http://www.squid-cache.org/Artwork/SN.png

==> /var/log/squid/access.log <==
1307622543.091      0 192.168.0.249 TCP_DENIED/407 4098 GET http://www.squid-cache.org/Artwork/SN.png - NONE/- text/html

==> /var/log/squid/store.log <==
1307622543.091 RELEASE -1 FFFFFFFF D91F30F77C4C3B7157A9864CDF98F992  407 1307622543         0        -1 text/html 3617/3617 GET http://www.squid-cache.org/Artwork/SN.png

kerberos

Предлагаю Вам забыть об использовании sambы.
Сквид прекрасно работает через gssapi.
Лучше используйте kerberos.
Если будут вопросы задавайте смело. Имею в наличии боевую связку.

я бы с радостью, если

я бы с радостью, если подскажите как собрать такуюже боевую связку )

Stinkybob написал(а): я бы с

Stinkybob написал(а):
я бы с радостью, если подскажите как собрать такуюже боевую связку )

На выходных напишу статью...

/var/cache/samba/winbindd_pri

/var/cache/samba/winbindd_privileged - права...

Не грусти, товарищ! Всё хорошо, beautiful good!

У вас в конфиге самбы винбинд

Действительно права доступа к файлу надо поправить. У вас в конфиге самбы винбинд сепаратор выставлен в +. Закоммент ируйте. Тогда по умолчанию будет \. В консоли придется писать ДОМЕН\\юзер. В Мозилле все то же, только с одним слешом. ИЕ дожен авторизоваться без запроса. Впрочем и сплюсом работать должно. На самом деле интересна авторизация через /usr/bin/ntlm_auth . Браузер это следующий этап отладки. На время отладки сквид полезно запускать не скриптом инициализации, а напрямую из командной строки с параметрами. Он тогда прямо в консоль ругается, и достаточно внятно

wi написал(а):Действительно

vproxy ~ # ls -la /var/cache/samba/winbindd_privileged
total 8
drwxr-x--- 2 root root 4096 Jun  9 23:07 .
drwxr-xr-x 4 root root 4096 Jun  9 23:07 ..
srwxrwxrwx 1 root root    0 Jun  9 23:07 pipe

эти права сейчас, какие надо?

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".