Инструменты пользователя

Инструменты сайта


soft:squid:single-sign-on

====== Single-Sign-On ====== ===== Постановка задачи ===== Обеспечить вход на прокси-сервер без запроса ввода пароля в основных браузерах (Microsoft Internet Explorer, Mozilla Firefox), учётные записи берутся из Active Directory. Также должна проводиться проверка участия в группе доступа к интернет (группа **internet-access** в Active Directory). ===== Необходимое ПО ===== - Windows Server 2003 с настроенной Active Directory и установленным пакетом //Support Tools//. - net-proxy/squid - кэширующий прокси-сервер, должен быть собран с поддержкой //samba// и //kerberos//, остальное - по желанию ===== Настройка ===== ==== Windows ==== На сервер Windows создаём keytab: <code console> C:\Program Files\Support Tools> ktpass -princ HTTP/<имя_сервера_по_reverse-DNS>@<имя_области> -mapuser <имя_AD_пользователя> -crypto des-cbc-md5 -pass <пароль_AD_пользователя> -ptype KRB5_NT_SRV_HST -out <имя_сервера_по_reverse-DNS>.keytab </code> Здесь: * //<имя_сервера_по_reverse-DNS>// - имя сервера так, как оно прописано в обратной зоне DNS (что не всегда соответствует прямому DNS); * //<имя_области>// - имя Kerberos-области, в котором будет выполнятся проверка, обычно - имя домена в верхнем регистре; * //<имя_AD_пользователя>// - имя пользователя, которым представлять сервер Squid; * //<пароль_AD_пользователя>// - пароль вышеназванного пользователя; * //<имя_сервера_по_reverse-DNS>.keytab// - имя выходного файла, в-принципе, может быть любым. Созданный файл копируем в каталог конфигурационных файлов Squid (/etc/squid). ==== Linux ==== **/etc/conf.d/squid** <file> SQUID_KEYTAB="/etc/squid/<имя_сервера_по_reverse-DNS>.keytab" </file> Патчим **/etc/init.d/squid** (до версии Squid 2.7.5-r1) <code patch> --- squid.orig 2009-03-06 11:59:35.000000000 +0300 +++ squid 2009-03-05 17:29:12.000000000 +0300 @@ -53,7 +53,7 @@ start() { checkconfig || return 1 ebegin "Starting squid" - /usr/sbin/squid ${SQUID_OPTS} + KRB5_KTNAME="${SQUID_KEYTAB}" /usr/sbin/squid ${SQUID_OPTS} eend $? && sleep 1 } </code> **/etc/squid/squid.conf** <file> 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 negotiate program /usr/libexec/squid/squid_kerb_auth -s HTTP/<имя сервера по reverse-DNS> auth_param negotiate children 5 auth_param negotiate keep_alive on auth_param basic program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-basic auth_param basic children 5 ... external_acl_type ldap_group %LOGIN /usr/libexec/squid/squid_ldap_group \ -S -K \ -R -b "dc=domain,dc=tdl" \ -f "(&(sAMAccountName=%u)(memberOf=cn=%g,ou=Users,dc=domain,dc=tdl" \ -s sub -D <имя_AD_пользователя>@<имя_домена> -w <пароль_AD_пользователя> -h <имя_сервера_AD> \ -p 3268 ... acl users proxy_auth REQUIRED acl internet-access external ldap_group internet-access acl osLinux browser -i windows acl progFirefox browser -i firefox ... http_access allow users internet-access ... header_access Proxy-Authenticate deny osLinux progFirefox header_replace Proxy-Authenticate Negotiate </file> ===== Заключение ===== К сожалению, при данном методе все содержимое запрещённых заголовков //Proxy-Authenticate// будут заменяться на //Negotiate// - нельзя, например, добавить для какой-то группы изменение на //Basic//, чтобы убрать NTLM и Negotiate в-принципе. Неприятная новость - в Squid 3.0 такой фокус не проходит. :-( Он может менять только заголовки request, а для данного метода нужно менять заголовки reply. ===== Источники ===== [[http://blog.ronix.net.ua/2008/08/squidkerberos-c-ldap-active-directory.html|Dormestmass' blog :: Aутентификация Squid+Kerberos c LDAP авторизацией в Active Directory]]

Дискуссия

Enter your comment
 
soft/squid/single-sign-on.txt · Последние изменения: 16.11.2009 17:26 (внешнее изменение)

Инструменты страницы