 |
от Аерион(4-10-2004)
рейтинг (30)
[ добре ]
[ зле ]
Вариант за отпечатване
Вместо въведение
Преди около 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.
Следната команда проверя за верността на комбинацията
потребител/парола за Активната Директория:
#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
Следната команда проверява дали посочения потребител
принадлежи в посочената група в АД:
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 ---
--- squid.conf ---
...
acl password proxy_auth REQUIRED
acl proxygroup external ldap_group proxygroup
...
--- squid.conf ---
Тези два реда указват, че за да използвате проксито, трябва
задължително да се представите на софтуера с потребителско
име и парола (от АД в случая) и да сте член на групата
proxygroup.
П.П. Вариантите за проверка на потребителя и
потребителската група са два. Тук е посочен само единия. При
не толкова задълбочен преглед на файла с експорта на АД, ще
видите и другата възможност.
<< video4linux и как да си направим webcam server | Напълно автономно делегиране на in-addr.arpa >>
|
 |