Интеграция 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г.
Просмотров: 6224
Комментарии: 0
Машинное обучение с использованием библиотеки Н2О

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

02.12.2013г.
Просмотров: 3024
Комментарии: 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