Интеграция SQUID + LDAP::Журнал СА 11.2003
www.samag.ru
     
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
Журнал "Системный администратор"
Журнал «БИТ»
Подписка
Архив номеров
Где купить
Наука и технологии
Авторам
Рекламодателям
Контакты
   

  Опросы
  Статьи

Событие  

В банке рассола ждет сисадмина с полей фрактал-кукумбер

Читайте впечатления о слете ДСА 2024, рассказанные волонтером и участником слета

 Читать далее...

Организация бесперебойной работы  

Бесперебойная работа ИТ-инфраструктуры в режиме 24/7 Как обеспечить ее в нынешних условиях?

Год назад ИТ-компания «Крок» провела исследование «Ключевые тренды сервисного рынка 2023». Результаты

 Читать далее...

Книжная полка  

Читайте и познавайте мир технологий!

Издательство «БХВ» продолжает радовать выпуском интересных и полезных, к тому же прекрасно

 Читать далее...

СУБД PostgreSQL  

СУБД Postgres Pro

Сертификация по новым требованиям ФСТЭК и роль администратора без доступа к данным

 Читать далее...

Критическая инфраструктура  

КИИ для оператора связи. Готовы ли компании к повышению уровня кибербезопасности?

Похоже, что провайдеры и операторы связи начали забывать о требованиях законодательства

 Читать далее...

Архитектура ПО  

Архитектурные метрики. Качество архитектуры и способность системы к эволюционированию

Обычно соответствие программного продукта требованиям мы проверяем через скоуп вполне себе понятных

 Читать далее...

Как хорошо вы это знаете  

Что вам известно о разработках компании ARinteg?

Компания ARinteg (ООО «АРинтег») – системный интегратор на российском рынке ИБ –

 Читать далее...

Графические редакторы  

Рисование абстрактных гор в стиле Paper Cut

Векторный графический редактор Inkscape – яркий представитель той прослойки open source, с

 Читать далее...

День сисадмина  

Учите матчасть! Или как стать системным администратором

Лето – время не только отпусков, но и хорошая возможность определиться с профессией

 Читать далее...

День сисадмина  

Живой айтишник – это всегда движение. Остановка смерти подобна

Наши авторы рассказывают о своем опыте и дают советы начинающим системным администраторам.

 Читать далее...

Виртуализация  

Рынок решений для виртуализации

По данным «Обзора российского рынка инфраструктурного ПО и перспектив его развития», сделанного

 Читать далее...

Книжная полка  

Как стать креативным и востребованным

Издательский дом «Питер» предлагает новинки компьютерной литературы, а также книги по бизнесу

 Читать далее...

Книжная полка  

От создания сайтов до разработки и реализации API

В издательстве «БХВ» недавно вышли книги, которые будут интересны системным администраторам, создателям

 Читать далее...

Разбор полетов  

Ошибок опыт трудный

Как часто мы легко повторяем, что не надо бояться совершать ошибки, мол,

 Читать далее...

1001 и 1 книга  
19.03.2018г.
Просмотров: 6143
Комментарии: 0
Машинное обучение с использованием библиотеки Н2О

 Читать далее...

12.03.2018г.
Просмотров: 6856
Комментарии: 0
Особенности киберпреступлений в России: инструменты нападения и защита информации

 Читать далее...

12.03.2018г.
Просмотров: 4139
Комментарии: 0
Глубокое обучение с точки зрения практика

 Читать далее...

12.03.2018г.
Просмотров: 2978
Комментарии: 0
Изучаем pandas

 Читать далее...

12.03.2018г.
Просмотров: 3781
Комментарии: 0
Программирование на языке Rust (Цветное издание)

 Читать далее...

19.12.2017г.
Просмотров: 3789
Комментарии: 0
Глубокое обучение

 Читать далее...

19.12.2017г.
Просмотров: 6283
Комментарии: 0
Анализ социальных медиа на Python

 Читать далее...

19.12.2017г.
Просмотров: 3134
Комментарии: 0
Основы блокчейна

 Читать далее...

19.12.2017г.
Просмотров: 3434
Комментарии: 0
Java 9. Полный обзор нововведений

 Читать далее...

16.02.2017г.
Просмотров: 7246
Комментарии: 0
Опоздавших не бывает, или книга о стеке

 Читать далее...

17.05.2016г.
Просмотров: 10616
Комментарии: 0
Теория вычислений для программистов

 Читать далее...

30.03.2015г.
Просмотров: 12336
Комментарии: 0
От математики к обобщенному программированию

 Читать далее...

18.02.2014г.
Просмотров: 13969
Комментарии: 0
Рецензия на книгу «Читаем Тьюринга»

 Читать далее...

13.02.2014г.
Просмотров: 9100
Комментарии: 0
Читайте, размышляйте, действуйте

 Читать далее...

12.02.2014г.
Просмотров: 7053
Комментарии: 0
Рисуем наши мысли

 Читать далее...

10.02.2014г.
Просмотров: 5362
Комментарии: 3
Страна в цифрах

 Читать далее...

18.12.2013г.
Просмотров: 4594
Комментарии: 0
Большие данные меняют нашу жизнь

 Читать далее...

18.12.2013г.
Просмотров: 3402
Комментарии: 0
Компьютерные технологии – корень зла для точки роста

 Читать далее...

04.12.2013г.
Просмотров: 3129
Комментарии: 0
Паутина в облаках

 Читать далее...

03.12.2013г.
Просмотров: 3379
Комментарии: 0
Рецензия на книгу «MongoDB в действии»

 Читать далее...

02.12.2013г.
Просмотров: 3000
Комментарии: 0
Не думай о минутах свысока

 Читать далее...

Друзья сайта  

 Интеграция SQUID + LDAP

Архив номеров / 2003 / Выпуск №11 (12) / Интеграция SQUID + LDAP

Рубрика: Администрирование /  Продукты и решения

МАРК КРИЧМАР

Интеграция SQUID + LDAP

О настройках самого сервера LDAP написано достаточно много, поэтому останавливаться на этом не буду. Интеграция службы каталогов с разными службами освещена тоже достаточно подробно, см., например: http://www.linuxrsp.ru/artic/LDAP-HOWTO.html.

В этой статье я не нашел, как подружить proxy-сервер SQUID с вышеозначенной службой, это и сподвигло меня на сей труд, не судите строго.

В данный момент подобная конфигурация работает на платформе Dell PowerEdge 2500, операционная система Linux RHAS release 2.1 (Pensacola). Тестировалось на различных версиях RH Linux, на других дистрибутивах *NIX-like систем не пробовал, но затруднений возникнуть не должно.

Итак, начнем. Задача достаточно проста – заставить SQUID не только авторизовать пользователей, но и забыть, наконец, об acl-листах, в которых описаны группы. Согласитесь, приятней добавить пользователя в определенную группу LDAP и все, а пользователь получает почтовый ящик и доступ в Интернет через proxy-сервер. Причем ничего не надо перезапускать.

Первым делом скачиваем свежую версию SQUID, я рассматриваю на примере SQUID-2.5.STABLE2.tar.gz.

Распаковываем:

tar zxvf SQUID-2.5.STABLE2.tar.gz

Переходим в созданный каталог с исходниками proxy-сервера и начинаем собирать:

./configure --enable-delay-pools --enable-cache-err-language=Russian-1251 --enable-linux-netfilter /

--enable-external-acl-helper=ldap_group --enable-basic-auth-helpers=LDAP

Небольшое пояснение, обо всех параметрах запуска смысла писать нет, достаточно понятно, а вот два последних нам как раз и нужны для интеграции с LDAP-сервером.

Последний ключ --enable-basic-auth-helpers=LDAP, собственно, и указывает кэширующему серверу SQUID, что проверку пары логин-пароль на предмет правильности он поручает внешней программе.

Ключ --enable-external-acl-helper=ldap_group необходим, чтобы группы в LDAP соотносились с группами в понимании SQUID.

Далее, следуя INSTALL:

make all

make install

Копируем 2 файла:

cp helpers/basic_auth/LDAP/squid_ldap_auth /usr/local/squid/libexec

cp helpers/external_acl/ldap_group/squid_ldap_group /usr/local/squid/libexec

Переходим во вновь созданное дерево кэширующего сервера SQUID, в моем случае /usr/local/squid/sbin:

cd /usr/local/squid/sbin

Создаем кэш:

./squid –z

Теперь необходимо внести изменения в конфигурационный файл SQUID.

Следующая строчка заставляет кэширующий сервер доверять авторизацию внешней программе.

auth_param basic program /usr/local/squid/libexec/squid_ldap_auth –P –b dc=mydomain,dc=ru /

Понятно, что всё пишется на одной строке.

Другие auth_param нужно закомментировать.

Теперь пояснения по поводу параметров:

  • -P – оставлять соединение с LDAP-сервером открытым, для большого числа пользователей, для малого числа, LDAP смысла поднимать нет;
  • -b – с чего начинать поиск, в моем случае – с самого верха;
  • -f – применить (&(uid=%s)(description=active)) данный фильтр, для проверки пары логин-пароль. В жизни приходится сталкиваться с тем, что необходимо лишить пользователя доступа к Интернету, но не удалять же из-за этого его запись, тем более, мы не запрещаем ему пользоваться почтой, которая тоже работает через LDAP. Поэтому я и использовал поле description в LDAP для своих нужд.

Небольшое пояснение по поводу пары логин-пароль, это, как вы уже догадались, два поля в LDAP: uid и userpassword, логин и пароль соответственно.

И последний параметр -h 127.0.0.1, где, собственно, запущен LDAP-сервер, в данном случае на одной машине с кэширующим сервером.

Следующая строчка в файле squid.conf настраивает кэширующий сервер на поддержку внешних групп, так называемых acl-листов.

external_acl_type ldap_group %LOGIN /usr/local/squid/libexec/squid_ldap_group –P –b dc=mydomain,dc=ru /

–f (&(uid=%v)(member=ou=%a,dc=mydomain,dc=ru)) –h 127.0.0.1 –p 389

Опять же все на одной строке.

Ключи -P, -b и -f, -h имеют те же значения, что и выше. Ключ -p – порт, который слушает LDAP-сервер, этот параметр можно опустить, если используется стандартный порт.

По поводу параметров фильтра требуется специальное пояснение, каждая запись пользователя, кроме всего прочего, должна быть членом класса groupOfNames, в этом случае у каждого пользователя появляется обязательное поле member.

Пример ldif-файла для создания пользователя, группы я приведу в конце.

Ну и наконец, описываю сами группы, механизм тот же самый, что и при стандартном описании, сравним:

Старое:

acl users proxy_auth dima petya vasya

authenticate_program /usr/local/squid/bin/ncsa_auth /usr/local/squid/etc/passwd

Новое:

acl users external ldap_group accounts

acl admin external ldap_group admin

acl icq_only external ldap_group icq

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

http_access allow admin

и так далее.

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

А теперь поподробнее о настройке LDAP-сервера.

Конфигурационный файл должен иметь такое содержание:

#

include    /usr/local/etc/openldap/schema/core.schema

include    /usr/local/etc/openldap/schema/cosine.schema

include    /usr/local/etc/openldap/schema/inetorgperson.schema

include    /usr/local/etc/openldap/schema/nis.schema

# Эта схема для поддержки qmail

include    /usr/local/etc/openldap/schema/qmail.schema

pidfile    /usr/local/var/slapd.pid

argsfile   /usr/local/var/slapd.args

# В поле userPassword лежит пароль пользователя. Его может прочитать и изменить только сам пользователь, ну и себя

# любимого не забыл.

access to attr=userPassword

    by self write

    by anonymous auth

    by dn="cn=Manager,dc=mydomain,dc=ru" write

    by * none

# Если в этом поле active – Интернет есть, иначе – нет

access to attr=description

    by self read

    by anonymous read

    by dn="cn=Manager,dc= mydomain,dc=ru" write

    by * none

# На одной строчке

access to attr=title,ou,telephoneNumber,cn,sn,givenName,o, initials,physicalDeliveryOfficeName,destinationIndicator

    by self write

    by anonymous read

    by users read

    by dn="cn=Manager,dc= mydomain,dc=ru" write

access to *

    by self read

    by anonymous read

    by users read

    by dn="cn=Manager,dc= mydomain,dc=ru" write

database   ldbm

suffix     "dc= mydomain,dc=ru"

rootdn     "cn=Manager,dc= mydomain,dc=ru"

rootpw     secret

directory  /usr/local/var/openldap-ldbm

index      objectClass,mail,cn,sn,uid eq

Затем создаем файл example.ldif с описанием корневого дерева и групп пользователей, например, такого содержания:

# Корень нашего дерева директорий

dn: dc=mydomain,dc=ru

objectClass: top

# Группа админов

dn: ou=admin,dc=mydomain,dc=ru

objectClass: top

objectClass: organizationalUnit

ou: admin

# Группа для пользователей icq

dn: ou=icq,dc=mydomain,dc=ru

objectClass: top

objectClass: organizationalUnit

ou: icq

# Группа для простых пользователей

dn: ou=accounts,dc=mydomain,dc=ru

objectClass: top

objectClass: organizationalUnit

ou: accounts

# Добавляем 1 пользователя в группу admin

dn: uid=boss,ou=admin,dc=mydomain,dc=ru

objectClass: top

objectClass: person

objectClass: organizationalPerson

objectClass: inetOrgPerson

# Это для Qmail

objectClass: qmailUser

# Обязательный класс, чтобы появилось поле member

objectClass: groupOfNames

#Если active то все пучком:)

description: active

# Сюда я забиваю время создания данной записи, на всякий случай

destinationIndicator: 01.02.03

# Здесь я указываю лимит в байтах, который установлен

#для данного пользователя

preferredLanguage: 50000000

# Это поле только для Qmail

accountStatus: active

# Именно по этому полю проверяется принадлежность пользователя к группе

member: ou=admin,dc=mydomain,dc=ru

sn:: 0J/Rg9GC0LjQvQ==

cn:: 0J/Rg9GC0LjQvSDQktC70LDQtNC40LzQuNGAINCS0LvQsNC00LjQvNC40YDQvtCy0LjRhw==

serPassword: 123

telephoneNumber: 111-11-11

title:: 0J/RgNC10LfQuNC00LXQvdGC

ou:: 0JzQvtGB0LrQstCwINC60YDQtdC80LvRjA==

givenName:: 0JLQu9Cw0LTQuNC80LjRgA==

initials:: 0JLQu9Cw0LTQuNC80LjRgNC+0LLQuNGH

mail: boss@mydomain.ru

uid: boss

# Это поле только для Qmail

mailMessageStore: /var/qmail/maildirs/boss

# Это поле только для Qmail

mailHost: mailhost.boss.ru

# Добавляем 1 пользователя в группу icq

dn: uid=icq_user,ou=icq,dc=mydomain,dc=ru

objectClass: top

objectClass: person

objectClass: organizationalPerson

objectClass: inetOrgPerson

objectClass: groupOfNames

description: active

member: ou=icq,dc=mydomain,dc=ru

sn: Sidoriv

cn: Sidorov Fedor Petrovich

userPassword: 321

telephoneNumber: 999-99-99

title: Doctor

ou: Departament

givenName: Fedor

initials: Petrovich

mail: icq_user@mydomain.ru

uid: icq_user

# Добавляем 1 пользователя в группу accounts

dn: uid=Ivan,ou=accounts,dc=mydomain,dc=ru

objectClass: top

objectClass: person

objectClass: organizationalPerson

objectClass: inetOrgPerson

objectClass: groupOfNames

description: active

member: ou=icq,dc=mydomain,dc=ru

sn: Ivanov

cn: Ivanov Ivan Ivanovich

userPassword: 333

telephoneNumber: 999-99-99

title: Doctor

ou: Departament

givenName: Ivan

initials: Ivanovich

mail: Ivan@mydomain.ru

uid: Ivan

Запись для первого поля почти реальная, форма, а не содержание. Последние две записи несколько аскетичные, если вам не нужна ни адресная книга, ни поддержка QMail, то это как раз необходимый минимум.

Небольшое пояснение. Поля sn, cn и др. заполнены русским текстом в формате utf8. Ничего не имею против английского, но некоторые пользователи жалуются. К тому же появляется адресная книга вашей фирмы, не советую пользоваться адресной книгой в Outlook Express, на редкость неудобная реализация. Я пользуюсь той, что идет в пакете Mozilla, но это дело вкуса.

Теперь пора добавить наши данные.

В случае работающего OpenLDAP:

/path/ldapadd –x –D “cn=Manager,dc=mydomain,dc=ru” –W –f /path/example.ldif

/path/ – реальное местоположение утилиты ldapadd и файла example.ldif.

В заключение хочется добавить, что лень и нехватка времени заставили меня написать некоторое количество скриптов, в основном на Perl, которые проверяют и расходование трафика пользователями и блокировки доступа в Интернет с посылкой уведомления по почте.

Мои пользователи через веб-интерфейс правят свои учетные записи на предмет рабочих телефонов, места работы, смены пароля – это реализовано на PHP.

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

Для создания записей в OpenLDAP я пользуюсь GQ-0.6.0: http://biot.com/gq.

Вот, собственно, и всё. Удачи!

Благодарность Henrik Nordstrom hno@squid-cache.org за то, что написал модуль squid_ldap_group и объяснил мне, как им пользоваться.


Комментарии отсутствуют

Добавить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-45
E-mail: sa@samag.ru