LINUX-BG   Адрес : http://www.linux-bg.org
Как да настроим SQUID да оторизира потребителите от Microsof
От: Аерион
Публикувана на: 4-10-2004
Адрес на статията: http://www.linux-bg.org/cgi-bin/y/index.pl?page=article&id=advices&key=365639274
Вместо въведение
    Преди около 7 месеца, на предната ми месторабота започнах, като всеки разумен човек да се стремя към централизация на управлението във фирмата. Това което беше едно от най – досадните задължения бе да се задават права на потребителите за достъп до интернет. Мрежата беше Microsoft базирана - Активна Директория. Естественото решение на задачата беше да се избере Microsoft ISA Server, но за мое най - голямо щастие, никой от хората от които зависеше закупуването на такова решение не му се доверяваха - IT Managera - понеже го познаваше до някъде, генералния директор - понеже хич не му хареса телефонния номер който всъщност беше цената, която трябваше да се заплати. Тогава имах възможността да се поровя малко с LDAP (openldap) и със squid. Така попаднах на описаното по - долу решение.
Необходим софтуер:

    • openldap
    • SQUID - компилиран с поддръжка на ldap (това означава, че имате следните програми: squid_ldap_auth и squid_ldap_group)
Запознаване със структурата на Активната Директория:
    За да придобиете представа, как изглежда структурата на Активната Директория (АД) можете да я разгледате от вашата система с командата:
    example# ldapsearch -L -D "yourdomainyourdomainusername" "(&(objectCategory=person)(objectClass=user)(sAMAccountName= someusername))" -W
    Вие ще бъдете попитан за паролата на потребителя на домейна ( yourdomainusername). Отговора на тази команда е доста голям, затова по -добре е да го пренасочите към файл. За предпочитане е да разгледате файла и да се опитате да вникнете в съдържанието му. В следващата версия на този документ, ще има кратко представяне на файла.
Запознаване с програмите squid_ldap_auth и squid_ldap_group:
    За да имате представа как точно работят тези две команди, най – добре е да ги тествате от конзола, преди да ги “дадете” на SQUID да работи с тях. Да предположим, че имате конфигуриран Microsoft Active Direcotry Server с име на домейна: example.com, потребител testuser, който принадлежи в групата proxygroup, парола на потребителя testuserpass и интернет адрес 1.2.3.4. За да може да работи SQUID с АД, той трябва да може да се идентифицира в нея. За целта можете да използвате вече съществуващ потребител или да създадете нов. В нашия случай, ще използваме потребител proxyauth с парола proxyauthpassword.
    • squid_ldap_auth:
    Следната команда проверя за верността на комбинацията потребител/парола за Активната Директория:
    #example /usr/lib/squid/squid_ldap_auth -b cn=users,dc=example,dc=com -u cn -h 1.2.3.4 -D cn=proxyauth,cn=users,dc=example,dc=com -w “proxyauthpassword” -f sAMAccountName=%s
    Ако познавате openldap и ако сте разгледали внимателно файла със съдържанието на активната директория, в общи линии ще сте наясно какво точно иска този файл. И все пак – накратко:
      -b cn=users,dc=example,dc=com - с този ред указвате, точно в коя част на дървото на АД ще търсим информация;
      -u cn - показвате обектния клас с който ще търсим нужната информация;
      -h 1.2.3.4 – това е адреса на АД;
      -D cn=proxyauth,cn=users,dc=example,dc=com – указва потребителя, който иска информацията. Това трябва да е валиден за АД потребител;
      -w "proxyauthpassword" – парола за идентификация в АД на потребителя, който търси информацията;
      -f sAMAccountName=%s – това е информацията която търсим (проверяваме) – съответствие на потребител и парола.

    Когато стартирате програмата, няма да получите никакъв отговор, запитване или промпт. Програмата очаква да въведете основната информация (потребител/парола) в следния формат: username password Ако комбинацията е вярна, ще получите отговор “OK”, ако ли не - “ERR”.
      Ето един пример:
    example# /usr/lib/squid/squid_ldap_auth -b cn=users,dc=example,dc=com -u cn -h 1.2.3.4 -D cn=proxyauth,cn=users,dc=brs,dc=bg -w "proxyauthpassword" -f sAMAccountName=%s testuser testuserpass OK testuser someotherpass ERR
    • squid_ldap_group:
    Следната команда проверява дали посочения потребител принадлежи в посочената група в АД:
    example# /usr/lib/squid/squid_ldap_group -b "dc=example,dc=com" -h 1.2.3.4 -D "cn=proxyauth,cn=users,dc=example,dc=com" -w proxyauthpassword -f "(&(cn=%a)(member=%v))" -F "(sAMAccountName=%s)"
    Тук неясните аргументи вече трябва да са са по – малко:
      member=%v – дали потребителя принадлежи на посочената група.
    И при тази команда, след изпълнението й, няма да получите никаква реакция – командата очаква да въведете потребителско име и група в следната последователност: username group Отново възможните отговри са “OK”, и “ERR”.
      Ето един пример:
    example# /usr/lib/squid/squid_ldap_group -b "dc=example,dc=com" -h 1.2.3.4 -D "cn=proxyauth,cn=users,dc=example,dc=com" -w “proxyauthpassword” -f "(&(cn=%a)(member=%v))" -F "(sAMAccountName=%s)" testuser proxygroup OK testuser othergroup-testuser-dont-belong ERR
Файла squid.conf и имплементиране на програмите squid_ldap_auth и squid_ldap_group в него.
    След като се запознахме с начина на работа на тези програми, остава само да ги включим в конфигурационния файл на squid, да опишем правата за достъп (acl) и сме готови да пуснем нашия сървър. Тъй, като най – добрата документация за SQUID си остава конфигурационния му файл, ще опиша само местата на които трябва да бъдат въведени програмите и как в общи линии изглеждат правата за достъп.
    • За програмата squid_ldap_auth
    --- squid.conf ---
    ...
    auth_param basic program /usr/lib/squid/squid_ldap_auth -b cn=users,dc=example,dc=com -u cn -h 1.2.3.4 -D cn=proxyauth,cn=users,dc=brs,dc=bg -w "proxyauthpassword" -f sAMAccountName=%s ...
    --- squid.conf ----
    • За програмата squid_ldap_group
    --- squid.conf --- ...
    external_acl_type ldap_group %LOGIN /usr/lib/squid/squid_ldap_group -b "dc=brs,dc=bg" -h brs-dc1.brs.bg -D "cn=proxyauth,cn=users,dc=brs,dc=bg" -w Aa123456 -f "(&(cn=%a)(member=%v))" -F "(sAMAccountName=%s)"
    ...
    --- squid.conf ---
    • правата на достъп (acl):

    --- squid.conf ---
    ...
    acl password proxy_auth REQUIRED
    acl proxygroup external ldap_group proxygroup
    ...
    --- squid.conf ---
    Тези два реда указват, че за да използвате проксито, трябва задължително да се представите на софтуера с потребителско име и парола (от АД в случая) и да сте член на групата proxygroup. П.П. Вариантите за проверка на потребителя и потребителската група са два. Тук е посочен само единия. При не толкова задълбочен преглед на файла с експорта на АД, ще видите и другата възможност.

<< video4linux и как да си направим webcam server | Напълно автономно делегиране на in-addr.arpa >>

Авторите на сайта, както и техните сътрудници запазват авторските права върху собствените си материали публикувани тук, но те са copyleft т.е. могат свободно да бъдат копирани и разпространявани с изискването изрично да се упоменава името на автора, както и да се публикува на видно място, че те са взети от оригиналния им URL-адрес на този сървър (http://www.linux-bg.org). Авторските права на преводните материали принадлежат на техните автори. Ако с публикуването тук на някакъв материал неволно са нарушени нечии права - след констатирането на този факт материалът ще бъде свален.

All trademarks, logos and copyrights mentioned on this site are the property of their respective owners.
Linux is copyright by Linus Torvalds.
© Линукс за българи ЕООД 2007
© Slavei Karadjov 1999 - 2006

All rights reserved.

Изпълнението отне: 0 wallclock secs ( 0.13 usr + 0.02 sys = 0.15 CPU)