Ох и посидел я над этой НТЛМ аутентификацией. Хочется поделиться.
В своем посте затрону только отличительные особенности моей конфигурации и способов решения проблем. Мой опыт работы с никсами небольшой, поэтому на полноту и абсолютную точность я не претендую.
Моя текущая конфигурация
Free BSD 7.1
openldap-client-2.4.11 Open source LDAP client implementation
krb5-1.6.3_5 An authentication system developed at MIT, successor to Ker
samba-3.0.32_2,1 A free SMB and CIFS client and server for UNIX
squid-2.7.4 HTTP Caching Proxy
Начнем с кербероса.
В итоге пришел к мнинию что нужно использовать именно пакет от МІТ, только с ним не было проблем при введении в домен и соответственно дальнейшей работы (особенность TCP UDP протоколов).
После установки пакета от МІТ устанавливаем самбу. При этом собирать Самбу нужно после добавления ключа KRB5_HOME=/usr/local в файл /etc/make.conf (или прямо при компилировании Самбы). Об этом указаний в интернете не много, но есть. Таким образом мы указываем Самбе использовать в работе Керберос именно от МIT, а не родной Heimdal который в системе кстати остается.
Вот текстовка:
> Kinit uses the installed kerberos package - if your kerberos package
> does not do TCP fallback in the AS_REQ, you'll never be able to get a
> ticket when you see this error message - it's generated by the KDC,
> which will refuse to issue a ticket > roughly 1500 bytes (for MS KDCs).
> Time to update your Kerberos port (MIT's dist > 1.4.1 supports TCP).
OK, I understand now. I installed MIT's Kerberos5 (installed port 'krb5'
on FreeBSD, added 'KRB5_HOME=/usr/local' to /etc/make.conf and rebuilt
samba3 port) and I succeeded joining the Samba server into ADS domain.
Вот ссылки по этой тематике:
http://ru.gentoo-wiki.com/wiki/Настройк ... ржкой_ntlm где сказано что «Для нормальной работы samba необходимо указать …… и собирать её после mit-krb5, только тогда будет нормально работать winbind.»
На этом сайте есть описание другого решения
http://forum.lissyara.su/viewtopic.php? ... 2Fsmb_krb5 но я считаю его очень некорректным, хотя в основной массе случаев оно подходит и работает. Но в случае нескольких контроллеров домена и переключении между ними это будет проблема
Вторая проблема – это НТЛМ аутентификация и метод POST. На этой же странице вверху автор по этому поводу давал мне ответ. В чем природа этой проблемы – для меня загадка, как и то почему при методе POST некорректно определяется обьём отданного трафика (
http://www1.at.squid-cache.org/mail-arc ... /0281.html) (и кстати delay_pools с методом POST реально не работает, не ограничивает скорость)
Вот например ссылка о том что у людей есть проблема с методом POST но никто не знает как её решить (и с этой проблемой многие люди сталкиваются):
http://www.mail-archive.com/squid-users ... 56932.html
Вначале я пошел тем путем что выпускал метод POST без аутентификации первым в списке всех ACL. Но получается не красиво что потом в отчетах начинают кроме имен пользователей фигурировать IP адреса хостов и трафик не весь учитывается.
Вот так примерно: (в добавок первой строкой ограничиваю размер аплоада до 30 Мбайт)
#request_body_max_size 30000 KB
acl post_out method POST PUT
http_access allow post_out
Позже я нашел вот такую штуку, на которой кстати и остановился:
Cache authentication based on source IP address. This reduces the pressure on external authenticators which may not be able to keep up under high load - NTLM/winbind is a good example of this. See the "authenticate_ip_shortcircuit_access" and "authenticate_ip_shortcircuit_ttl" options for more information.
http://www.squid-cache.org/Versions/v2/ ... NOTES.html
http://www.squid-cache.org/Versions/v2/ ... t_ttl.html
http://www.squid-cache.org/Versions/v2/ ... ccess.html
Вот ссылка на то что ІР-кеширование отсутствует в 3.х версии сквида и люди интересуются можно ли портировать эту функцию на 3.х версию. Я и сам проверял – итог только в 2.7 оно работает (в 3.1 тоже не замечено но следует попробовать).
http://www.nabble.com/NTLM-IP-caching-c ... 36562.html
Вот такие параметры у меня сейчас:
authenticate_ip_shortcircuit_ttl 180 second
#authenticate_ip_shortcircuit_access allow inet_users
#authenticate_ip_shortcircuit_access deny all
Две последние строки я закомментировал, так как нет надобности, но они дают возможность в случае например терминального сервера добиться определенного компромисса для корректного учета трафика по пользователям (при этом снизив значение authenticate_ip_shortcircuit_ttl до 1-2 секунд например). Я этого не испытывал но на перспективу может быть решение.
Ну так кажется вроди все. Всем удачи и готов дальше подискутировать не эту тему.
И наконец ссылки по теории
Полезная статья по тематике разниц версий самбы и сквида в влучае использования НТЛМ. Она хорошо раскрывает глаза на то сколько нюансов может быть в разных версиях.
http://www.samag.ru/cgi-bin/go.pl?q=art ... .2004;a=05
Очень хорошая статья:
http://www.innovation.ch/personal/ronald/ntlm.html