SQUID и аутентификация по eDir (Мысль вслух)

Обсуждение технических вопросов по продуктам Novell

SQUID и аутентификация по eDir (Мысль вслух)

Сообщение skoltogyan » 03 янв 2003, 17:25

eDir8.62 В нее входит LDAP.
На NW6 eDir8.62 и LDAP вертится.
SQUID on Linux (squid2.4).
Если в squid использовать аутентификацию по LDAP (стандартными сквидовыми возможностями squid_ldap_auth), то можно использовать eDir как базу. Причем начем эта eDir будет вертется нестоль важно, важно что у нее есть LDAP интерфейс. к которому и будет это коннектится.

далее все как обычно в сквид:

acl pr_auth proxy_auth "/etc/squid/ndsusers"
http_access allow pr_auth

файл /etc/squid/ndsuser
содержит записи вида:
user1
user2
...
без всяких контекстов.

Пользователь, на вопрос о имени вводит только user1 И свой пароль для входа в nds.

в файле:
access.log будет присутвствовать имя залогинившегося пользователя.

Никто не мешает в NDS сделать группу:
squiduser и вкоючать в нее пользователей, кому надо право для доступа в интернет. Далее по cron, например perl-скриптом, вычитывать кто в эту группу входит и создавать текстовый файл, выложив его на ftp on NW. Ночью, linux автоматом вытянет этот файл и заменит его содержимым
/etc/squid/ndsusers
таким образом все права на интернет вступят с утра для новых пользователей..

Кому интересно - песочница к услугам : )
skoltogyan
 
Сообщения: 2037
Зарегистрирован: 12 июл 2002, 19:39
Откуда: Украина, Донецк

Сообщение Михаил Григорьев » 03 янв 2003, 18:29

На самом деле Сергей.... Данная тема обсуждалась и вроде бы решение было найдено.... НО....

Опять же... Это решение не записано и если кто то захочет его восстановить сново пойдут одни и те же разговоры..... что и как...

Если есть время может попробуете написать некую инструкцию где по шагам будет расписано что и как нужно сделать чтоб получить конечный результат...

:D
Аватара пользователя
Михаил Григорьев
 
Сообщения: 1462
Зарегистрирован: 04 июн 2002, 12:22
Откуда: Челябинск

А что за решение было найдено ?

Сообщение skoltogyan » 03 янв 2003, 18:32

Я или пропустил или непонял
skoltogyan
 
Сообщения: 2037
Зарегистрирован: 12 июл 2002, 19:39
Откуда: Украина, Донецк

Сообщение Михаил Григорьев » 04 янв 2003, 08:49

Аватара пользователя
Михаил Григорьев
 
Сообщения: 1462
Зарегистрирован: 04 июн 2002, 12:22
Откуда: Челябинск

"Гуд Вольдемар.." : )

Сообщение skoltogyan » 04 янв 2003, 10:59

И это кто-либо реально использует ?

Radius for NDS 1.0 где взять ?
skoltogyan
 
Сообщения: 2037
Зарегистрирован: 12 июл 2002, 19:39
Откуда: Украина, Донецк

Re: "Гуд Вольдемар.." : )

Сообщение Андрей Тр. aka RH » 28 апр 2004, 06:36

skoltogyan писал(а):И это кто-либо реально использует ?

Radius for NDS 1.0 где взять ?


Тут появилась следующая информация ( говорят, RADIUS скоро снова, возможно, сделают халявным - впрочем, сие возможно и сейчас, если его вытащить из ВМ 3.8, причем якобы вполне легально ) :

http://www.novell.com/coolsolutions/nds/ask_the_experts.html

NMAS Radius requirements

Question: I want a RADIUS server for my firewall and routers. Does the RADIUS server (NMAS 2.0) shipped with iChain 2.2 SP1 work with eDirectory 8.7.3? And must I buy BorderManager 3.8 before I can use RADIUS?

Answer: The NMAS RADIUS server will work with eDirectory 8.7.3. NMAS RADIUS is now available with BorderManager 3.8, but you can get RADIUS without buying BorderManager 3.8. RADIUS may become a free download in the future. For now, you can obtain RADIUS as part of the BorderManager 3.8 evaluation package, available from download.novell.com. You should not have any problems using RADIUS past the ninety day evaluation period as long as you don't install any of the other BorderManager services.

You may also need to get some patches to make RADIUS work on NetWare 6.5. Check some of the recent posts in the novell.support.bordermanager.bmas-nmas-radius group, where this topic has been frequently discussed.
А сама тема связки Squid - RADIUS лично мне интересна, хотя пока неясно, когда удастся реально это все попробовать.
Даешь отдельный раздел по ZENworks ... :bad-words: .. и печати !
Аватара пользователя
Андрей Тр. aka RH
 
Сообщения: 3937
Зарегистрирован: 18 июн 2002, 11:27

Сообщение Щипунова Татьяна » 28 апр 2004, 13:01

У нас работает доступ к инету через связку NDS-Squid. Если интересно, я могу выложить документацию по этой конструкции.
Щипунова Татьяна
 
Сообщения: 10
Зарегистрирован: 27 окт 2003, 10:10
Откуда: Томск

Сообщение Vadziku » 28 апр 2004, 13:11

Щипунова Татьяна писал(а):У нас работает доступ к инету через связку NDS-Squid. Если интересно, я могу выложить документацию по этой конструкции.

Разумеется интересно. Потому как какой-либо приемлемой конструкции я пока не видел.
У нас самих работает довольно сложная схема с листами доступа по ip адресам. Сами ip привязываются к именам пользователей в момент регистрации. Дубляжи удаляются. Но мне в целом эта схема тоже не совсем нравится, хотя имеет существенное преимущество перед LDAP аутентификацией - отсутствие запроса пароля.
Vadziku
 
Сообщения: 97
Зарегистрирован: 20 июл 2002, 15:46
Откуда: Almaty, Kazakhstan

Сообщение Щипунова Татьяна » 28 апр 2004, 13:22

Примечание.
Это часть служебной документации, поэтому конкретные названия и IP-адреса заменены на нечто нейтральное.
Общие сведения
Прокси сервис (aurora.net.xaxa.firm:3128) собран на основе ОС FreeBSD 4.8-RELEASE и кэширующего прокси-сервера SQUID 2.5.STABLE4
Сборка прокси сервера производилась из исходников с опциями
"--prefix=/usr/local --sysconfdir=/usr/local/etc/squid --localestatedir=/var/log/squid --enable-ssl --enable-default-err-language=Russian-koi8-r --enable-external-acl-helpers=ldap_group"
Для данной конфигурации сборки прокси-сервера, необходимы библиотеки и заголовки пакета OpenLDAP. Легче всего их получить - поставить пакет OpenLDAP.
Так же необходимо установить модуль Net::LDAP, реализующий API LDAP-сервисов для PERL.
Аутентификация пользователей прокси-сервера опирается на учетные записи пользователей NDS "O=PPPP", пользовательские бюджеты прокси-сервер определяет относительно принадлежности пользователя NDS к той или иной группе NDS .
Итак, схема работы сервиса: пользователь, желающий получить доступ к ресурсам Internet, должен подтвердить право обращения к ресурсам вообще, а затем proxy-server, опираясь на его (пользователя) учетные данные в NDS "определяет" пространство ресурсов доступное пользователю.
Обмен информацией между NDS и Squid proxy сервером происходит посредством Novel LDAP service со стороны Novell DS и "внешними помощниками" (external helpers) /usr/local/etc/squid/utils/ldap_auth.pl и /usr/local/etc/squid/utils/ldap_group.pl со стороны proxy-сервера
ldap_auth.pl осуществляет аутентификацию пользователя, ldap_group.pl предоставляет информацию о принадлежности пользователя NDS к интересующей группе.

NDS
Для разграничения прав пользователей прокси-сервера в дереве "O=PPPP" созданы группы
full_access.proxy.PPPP для полного доступа к ресурсам Internet
http_access.proxy.PPPP для доступа только по HTTP
ftp_access.proxy.PPPP для доступа только по FTP
https_access.proxy.PPPP для доступа только через SSL
allow_big_file.proxy.PPPP для этой группы разрешено "скачивание" файлов с большым объемом информации (*.mp3, *.zip, и т. д.) (работает только если пользователь ассоциирован с одной из групп доступа)
black_list.proxy.PPPP запрещает любой доступ! (для карательных целей)

Для определения нового правила доступа достаточно создать в дереве новую группу пользователей. (бюджет доступа этой группы к ресурсам Internet определяется в файле squid.conf). Рекомендую внутри OU=proxy.O=PPPP, хотя и в другом месте найдет

SQUID
Информация о настройке сервера лежит в файле /usr/local/etc/squid/squid.conf. Внутри файла достаточно подробно задокументированы основные опции настройки сервера, поэтому рассмотрим только те, которые имеют прямое отношение к нашей схеме.
...skip
auth_param basic program /usr/local/etc/squid/utils/ldap_auth.pl 172.aaa.bbb.ccc "O=PPPP"
...skip
Описание:
auth_param scheme parameter [settings]

этот тэг описывает внешнюю программу авторизации и ее опции, (IP адрес LDAP сервера и исходная точка поиска в дереве NDS) а также условия запуска программы.
Обмен данными между программой (это касается и программы ldap_group.pl) и сервером происходит через стандартный поток ввода/вывода. Сервер посылает в стандартный вывод имя и пароль, введенные пользователем при обращении к proxy, программа, соединяясь с LDAP-сервером проверяет пару login/password и в зависимости от результата выдает в стандартный вывод OK или ERR, На основе ответа программы proxy-server принимает решение имеет ли пользователь право пользования данным сервисом вообще.
Далее. Proxy-сервер SQUID поддерживает так называемые "внешние списки доступа" (external_acl_type). С помощью этой возможности, выясняем принадлежность пользователя к указаным группам
Описание тэга
external_acl_type name options FORMAT.. /path/to/helper [helper arguments]
В нашем случае дополнительные опции запуска программы взяты по умолчанию.
...skip
external_acl_type all_perm %LOGIN /usr/local/etc/squid/utils/ldap_group.pl proxy-all 172.aaa.bbb.ccc O=PPPP
external_acl_type full_access %LOGIN /usr/local/etc/squid/utils/ldap_group.pl full_access 172.aaa.bbb.ccc O=PPPP
external_acl_type allow_big_files %LOGIN /usr/local/etc/squid/utils/ldap_group.pl allow_big_files 172.aaa.bbb.ccc O=PPPP
external_acl_type http_perm_only %LOGIN /usr/local/etc/squid/utils/ldap_group.pl http_access 172.aaa.bbb.ccc O=PPPP
external_acl_type ftp_perm %LOGIN /usr/local/etc/squid/utils/ldap_group.pl ftp_access 172.aaa.bbb.ccc O=PPPP
external_acl_type https_perm %LOGIN /usr/local/etc/squid/utils/ldap_group.pl https_access 172.aaa.bbb.ccc O=PPPP
external_acl_type black_list %LOGIN /usr/local/etc/squid/utils/ldap_group.pl black_list 172.aaa.bbb.ccc O=PPPP
ФОРМАТ: ./ldap_group.pl <NDS-group> <LDAP-server> <basesearch>
<NDS-group> - интересующая нас группа издерева NDS
<LDAP-server> - IP адрес сервера
<basesearch> - исходная точка поиска в дереве каталогов
Шаблон %LOGIN получает имя пользователя, полученное в результате процедуры аутентификации (если она прошла успешно) . Программа ldap_group.pl работает аналогично программе аутентификации - получает пару user/group из стандартного ввода от прокси-сервера,"проверяет", посредством LDAP сервера пренадлежность пользователя к указанной группе NDS и выдает в стандартный вывод OK или ERR в зависимости от того пренадлежит ли пользователь к интересующей группе или нет соответственно.

Далее, непосредственно определяем списки
Описание тэга:
acl aclname acltype string1...

Определение списков доступа для групп
acl all 0.0.0.0/0.0.0.0
acl adv_users external all_perm
acl http_users external http_perm_only
acl ftp_users external ftp_perm
acl https_users external https_perm
acl big_files external allow_big_files
acl blacklist external black_list

Для аутентификации (для ВСЕХ без исключения)
acl password proxy_auth REQUIRED


Для URL
acl stopURLs url_regex "/usr/local/etc/squid/ACL.stoplist"
acl hackURLs url_regex "/usr/local/etc/squid/ACL.hackList"
acl stop_MS url_regex "/usr/local/etc/squid/ACL.stop_M$"
acl bigfiles urlpath_regex \.mp3$ \.avi$ \.swf$ \.zip$ \.rar$ \.mpeg$ \.mpg$ \.flash$ \.exe$

Списки методов и протоколов доступа.
acl CONNECT method CONNECT
acl FTP port 21
acl POST method POST
acl HTTP port 80 8000 8080 8001
acl SSL poer 443

Далее описываем правила доступа групп
http_access deny blacklist
http_access deny hackURLs
http_access allow adv_users password
http_access deny stopURLs
http_access deny stop_MS
http_access allow big_files password
http_access deny bigfiles
http_access deny POST
http_access allow https_users !FTP !HTTP password
http_access allow http_users !CONNECT !FTP password
http_access allow ftp_users !CONNECT !SSL !HTTP password
http_access deny all
ИТАК:
Если пользователь авторизовался (ldap_auth.pl ->OK), то proxy-сервер, с помошью программы ldap_group.pl, определяет пренадлежность пользователя к указанным группам (результат можно посмотреть tail -f /var/log/squid/logs/cache.log). Далее определяются списки групп пользователей и ресурсов. Аутентификация в данном случае требуется для ВСЕХ пользователей. Правила определены в данном случае следующим образом (приоритет правил действует согласно очередности, т.е. первое (самое верхнее правило) имеет приоритет над нижестоящим).
Если пользователь успешно прошел авторизацию и пренадлежит к одной или нескольким из указаных групп, то
Первое правило запрещает ЛЮБОЙ доступ для пользователей группы NDS black_list (список доступа blacklist) несмотря на то что пренадлежит ли к другим группам или нет,
второе - запрещает доступ к дискредитировавшим себя ресурсам, список берется из файла /usr/local/etc/squid/ACL_hackList (это определяется из описания списка для URS's)
далее - http_access allow adv_users password разрешает авторизованным (список password) пользователям списка adv_users доступ к ЛЮБЫМ ресурсам ЕСЛИ они успешно прошли первые два правила.
следующие два правила ограничивают доступ к нежелательным ресурсам /usr/local/etc/squid/ACL.stoplist и /usr/local/etc/squid/ACL.stop_M$ (список URL stopURLs и stop_MS)
затем разрешается доступ пользователей группы NDS allow_big_files, (список big_files)
следующее правило ( http_access deny bigfiles) запрещает ВСЕМ остальным пользователям к файлам с большим объемом информации (*.mp3, *.flash... и т.д из списка bigfiles)
Запрещаем метод POST,
разрешаем доступ группы NDS https_perm через SSL исключаем FTP и HTTP (список доступа https_users)
разрешаем пользователям группы NDS http_perm поступ к Веб-ресурсам по HTTP исключаем метод CONNECT и протокол FTP (список http_users)
ftp_perm группа получает доступ по FTP, исключая метод CONNECT доступ ч-з SSL и HTTP (список доступа ftp_users)
ВСЕ пользователи групп должны пройти процедуру аутентификации!
последнее правило запрещает анонимный вход.




Как добавить/убрать/изменить бюджет пользователя
Для имеющихся групп NDS все просто: для разрешения доступа пользователю, добавляем его в соответствующую группу(ы), для запрещения - удаляем из групп OU=proxy либо добавляем его в black_list.proxy.PPPP.
Если нам понадобилось создать новую группу доступа, то мы ее сначала создаем в дереве NDS. Затем мы описываем эту группу и условия доступа ее пользователей в squid.conf.
НАПРИМЕР:
Нам необходимо создать группу, членам которй разрешен доступ только к огранниченному списку ресурсов интернет. Так же нам желательно что бы эти пользователи не имели доступ к различным внешним архивам свободного доступа, ограничить мультимедийный трафик, запретить "скачивать" исполняемые файлы Windows, DOS,OS/2 и пользовали только метод GET

NDS
Создаем группу в дереве NDS для определенности limit_access.proxy.PPPP
Добавляем в группу пользователей

Файл настроек сервера squid.conf
создаем список сайтов, к которому мы планируем разрешить доступ новой группе. Для ороеделенности размещаем его /usr/local/etc/squid/ACL.validList
Для того чтобы выделить пользователей этой группы определяем класс пользователей

external_acl_type limitAccess %LOGIN /usr/local/etc/squid/utils/ldap_group.pl limit_access 172.aaa.bbb.ccc O=PPPP
далее, описываем список доступа limitAccess

acl limitAccess external limit_access

затем определяем список сайтов , разрешенных к доступу validList

acl validList url_regex "/usr/local/etc/squid/ACL.validList

после правил нашей конфигурации
http_access deny bigfiles
http_access deny POST

определяем правило доступа

http_access allow limitAccess !CONNECT validList password



Важно:
Следует учитывать такую вещь как репликация между серверами NDS. LDAP тоже не мнгновенно получает новую информацию от NDS






Доступ:
Доступ через SSH

Назначения внешних списков:

файлы конфигурации находятся /usr/local/etc/squid
ACL.hackList - список ресурсов, нежелательных для посещения пользователей
ACL.limitlist - список сайтов, разрешенных для посещения в рабочее время
ACL.stop_M$ - запрещение несанкционированного обновления программного обеспечения майкрософт
ACL.stoplist - список сайтов, запрещенных для посещения в любое время

Изменения внешних списков:

Добавление: записываем в конец соответствующего файла с новой строки фрагмент сайта БЕЗ звездочек и прочих шаблонов. Например требуется запретить пользователям посещать сайт www.coolhackers.org
в файле
/usr/local/etc/squid/ACL.hackList
добавляем запись в конец, с новой строки
coolhackers
сохраняем, перезапускаем squid
# squid -k reconfigure
теперь пользователи не смогут попасть на сайты в имени которых встречается последовательность символов coolhackers
Удаление – путем удаления соответствующей строки из файла ACL.*



При отказах в работе NDS:
В случае отказа работы NDS надолго, для доступа в интернет пользователей следует проделать след. процедуру
Остановить сквид
#squid -k shutdown
затем запустить, указав другой конфигурационный файл
#squid -f /usr/local/etc/squid/squid.conf.resque
В этом случае доступ открыт для ВСЕХ пользователей корпоративной сети
После восстановления работоспособности NDS вернуть все обратно
#squid -k shutdown
#/usr/local/etc/rc.d/squid.sh start

От себя добавлю, что:
1. не должно быть пользователей с одинаковыми именами, хотя бы и в разных контекстах
2. кстати, не проверялось на русских именах пользователей, у нас их нет
3. пароль пользователя не д.б. русским
4. кол-во соединений у юзеров д.б. больше на 1, чем ранее,т.к. при идентификации в инете используется 1 соединение
5. если у юзера истек срок пароля, то прокси его тоже не пустит, но не объяснит почему.
Щипунова Татьяна
 
Сообщения: 10
Зарегистрирован: 27 окт 2003, 10:10
Откуда: Томск

Татьяне вопрос

Сообщение skoltogyan » 28 апр 2004, 13:41

В Вашем случае пи внесении с группу NDS пользоватлея (для доступа в инет, надо будет сделать
squid reload
?
skoltogyan
 
Сообщения: 2037
Зарегистрирован: 12 июл 2002, 19:39
Откуда: Украина, Донецк

Сообщение Щипунова Татьяна » 28 апр 2004, 13:56

Ну если срочно надо, то да. А если нет, в сквиде параметр есть auth_param basic credentialsttl ...его поменьше сделать, само обновится. Хотя у нас изменение принадлежности к группе не чаще раза в неделю требуется.
Щипунова Татьяна
 
Сообщения: 10
Зарегистрирован: 27 окт 2003, 10:10
Откуда: Томск

да.

Сообщение skoltogyan » 28 апр 2004, 14:01

а чем и как вы статистику для отделов по использованию интернет готовите ?
skoltogyan
 
Сообщения: 2037
Зарегистрирован: 12 июл 2002, 19:39
Откуда: Украина, Донецк

Сообщение Vict0r » 29 апр 2004, 09:32

Статистику можно генерить SARG'ом.
Vict0r
 
Сообщения: 69
Зарегистрирован: 08 июл 2003, 12:38

Сообщение PavelKHTW » 29 апр 2004, 11:53

А как ведете борьбу с тем что под одним логином паролем могут ходить несколько пользователей?
PavelKHTW
 
Сообщения: 1037
Зарегистрирован: 08 окт 2003, 13:02
Откуда: Украина

Сообщение Михаил Григорьев » 29 апр 2004, 13:12

Татьяна предлагаю написать небольшой Doc или HTML файл, если конечно у вас время есть. Тем самым получится небольшой TID и можно его в раздел Грабли поместить.
Аватара пользователя
Михаил Григорьев
 
Сообщения: 1462
Зарегистрирован: 04 июн 2002, 12:22
Откуда: Челябинск

След.

Вернуться в Novell

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 48

cron