Відмінності між версіями «LDAP-configure»

Матеріал з Wiki Welard
Перейти до навігації Перейти до пошуку
Рядок 19: Рядок 19:
  
  
−
[Защита LDAP при помощи SSL.]
 
  
−
Как я уже говорил в LDAP существует возможность защиты данных, передаваемых по
+
== Защита LDAP при помощи SSL. ==
 +
 
 +
В LDAP существует возможность защиты данных, передаваемых по
 
сети. При этом используется два метода: TLS и SASL. Первый из них не меняет
 
сети. При этом используется два метода: TLS и SASL. Первый из них не меняет
 
порта, на котором слушает LDAP(336), а просто организует аутентификацию
 
порта, на котором слушает LDAP(336), а просто организует аутентификацию
Рядок 33: Рядок 34:
  
 
         $ openssl genrsa -out ldap.key 1024  
 
         $ openssl genrsa -out ldap.key 1024  
−
 
  
 
б) создаём запрос на сертификацию
 
б) создаём запрос на сертификацию
  
 
         $ openssl req -new -config .cfg -key ldap.key -out ldap.csr
 
         $ openssl req -new -config .cfg -key ldap.key -out ldap.csr
−
 
  
 
в) создаём сертификат, которому будем доверять(CACertificate); вначале делаем
 
в) создаём сертификат, которому будем доверять(CACertificate); вначале делаем
Рядок 44: Рядок 43:
  
 
         $ openssl genrsa -des3 -out ca.key 2048
 
         $ openssl genrsa -des3 -out ca.key 2048
−
 
  
 
г) создаём self-signed сертификат сроком действия на год на основе сгенерированного ключа
 
г) создаём self-signed сертификат сроком действия на год на основе сгенерированного ключа
  
 
         $ openssl req -new -x509 -days 365 -key ca.key -out ca.cert  
 
         $ openssl req -new -x509 -days 365 -key ca.key -out ca.cert  
−
 
  
 
д) теперь на основе созданного для LDAP ключа и доверенного сертификата создаём
 
д) теперь на основе созданного для LDAP ключа и доверенного сертификата создаём
Рядок 56: Рядок 53:
 
         $ openssl x509 -req -in ldap.csr -out ldap.cert -CA ca.cert -CAkey ca.key -CAcreateserial \  
 
         $ openssl x509 -req -in ldap.csr -out ldap.cert -CA ca.cert -CAkey ca.key -CAcreateserial \  
 
           -days 365 -extfile .cfg
 
           -days 365 -extfile .cfg
−
 
  
 
При этом файл конфигурации .cfg должен содержать следующие расширения:
 
При этом файл конфигурации .cfg должен содержать следующие расширения:
Рядок 65: Рядок 61:
 
         nsComment        = "LDAP server certificate"
 
         nsComment        = "LDAP server certificate"
 
         nsCertType      = server
 
         nsCertType      = server
−
 
  
 
Немного страшновато выглядит, но в ходе всех этих действий создаются два
 
Немного страшновато выглядит, но в ходе всех этих действий создаются два
Рядок 81: Рядок 76:
  
 
         #chmod 0400 /etc/ssl/ldap/*
 
         #chmod 0400 /etc/ssl/ldap/*
−
 
  
 
и меняем владельца на ldap
 
и меняем владельца на ldap
  
 
         #chown ldap:ldap /etc/ssl/ldap/*
 
         #chown ldap:ldap /etc/ssl/ldap/*
−
 
  
 
Настройка сервера предельно проста: необходимо просто прописать пути к
 
Настройка сервера предельно проста: необходимо просто прописать пути к
Рядок 97: Рядок 90:
 
         # Доверенный сертификат
 
         # Доверенный сертификат
 
         TLSCACertificateFile /etc/ssl/ldap/ca.cert  
 
         TLSCACertificateFile /etc/ssl/ldap/ca.cert  
−
 
  
 
Сервер можно конфигурировать и альтернативным методом - через туннель stunnel
 
Сервер можно конфигурировать и альтернативным методом - через туннель stunnel
Рядок 106: Рядок 98:
  
 
         #stunnel  -r ldap  -d 636 -p /etc/ssl/stunnel/stunnel.pem
 
         #stunnel  -r ldap  -d 636 -p /etc/ssl/stunnel/stunnel.pem
−
 
  
 
Записываем эту команду в один из init файлов и добавляем правило iptables для
 
Записываем эту команду в один из init файлов и добавляем правило iptables для
Рядок 118: Рядок 109:
 
             -out stunnel.pem -keyout stunnel.pem                             
 
             -out stunnel.pem -keyout stunnel.pem                             
 
         $ openssl gendh 512 >> stunnel.pem     
 
         $ openssl gendh 512 >> stunnel.pem     
−
 
  
 
для генерации self-signed сертификата и параметров для ключей
 
для генерации self-signed сертификата и параметров для ключей

Версія за 20:03, 24 березня 2009

Установка OpenLDAP сервера на CentOS 5

yum -y install openldap

и правим файл настроек

/etc/openldap/slapd.conf

основные поля что обязательно надо поставить

suffix   "dc=server-linux,dc=info"
rootdn   "cn=Manager,dc=server-linux,dc=info"
rootpw   {MD5}************************

копируем файл и устанавливаем атрибуты

cp /etc/openldap/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
chown ldap:ldap /var/lib/ldap/DB_CONFIG

и стартуем сервер

service ldap start

и что бы при каждом старте запускался

chkconfig ldap on


Защита LDAP при помощи SSL.

В LDAP существует возможность защиты данных, передаваемых по сети. При этом используется два метода: TLS и SASL. Первый из них не меняет порта, на котором слушает LDAP(336), а просто организует аутентификацию асимметрическим шифрованием, SASL же меняет порт LDAP на ldaps:// и соединение идёт по-другому механизму: через туннель SASL. TLS намного проще в настройке, поэтому я расскажу именно о нём. Для начала надо сгенерировать серверную пару ключей асимметрического шифрования. Для этого в Linux удобно воспользоваться единым центром сертификации OpenSSL(об этом я уже писал на страницах 2-го номера):

а) создаем rsa ключ длиной 1024 бита и сохраняем его в файле ldap.key

       $ openssl genrsa -out ldap.key 1024 

б) создаём запрос на сертификацию

       $ openssl req -new -config .cfg -key ldap.key -out ldap.csr

в) создаём сертификат, которому будем доверять(CACertificate); вначале делаем ключ длиной 2048 бит:

       $ openssl genrsa -des3 -out ca.key 2048

г) создаём self-signed сертификат сроком действия на год на основе сгенерированного ключа

       $ openssl req -new -x509 -days 365 -key ca.key -out ca.cert 

д) теперь на основе созданного для LDAP ключа и доверенного сертификата создаём сертификат LDAP

       $ openssl x509 -req -in ldap.csr -out ldap.cert -CA ca.cert -CAkey ca.key -CAcreateserial \ 
          -days 365 -extfile .cfg

При этом файл конфигурации .cfg должен содержать следующие расширения:

       [ v3_req ]
       subjectAltName   = email:copy
       basicConstraints = CA:false
       nsComment        = "LDAP server certificate"
       nsCertType       = server

Немного страшновато выглядит, но в ходе всех этих действий создаются два сертификата: доверенный сертификат и подписанный им сертификат сервера. Таким образом, сервер LDAP сможет проверить правильность своего сертификата через доверенный сертификат. Кстати, если у вас уже есть доверенные сертификаты, то можно воспользоваться ими: просто пропустите шаги б) и в) и на шаге г) введите имя своего доверенного сертификата(можно также воспользоваться моим скриптом CA).

Итак после всех этих действий перемещаем сертификаты и ключ сервера LDAP(ldap.key) куда-нибудь в /etc/ssl/ldap(принято хранить все ключи и сертификаты, созданные openssl в /etc/ssl) и делаем их доступными для чтения только владельцу:

       #chmod 0400 /etc/ssl/ldap/*

и меняем владельца на ldap

       #chown ldap:ldap /etc/ssl/ldap/*

Настройка сервера предельно проста: необходимо просто прописать пути к сертификатам и ключам в файле slapd.conf следующим образом:

       # Сертификат сервера
       TLSCertificateFile /etc/ssl/ldap/ldap.cert
       # Ключ сервера
       TLSCertificateKeyFile /etc/ssl/ldap/ldap.key
       # Доверенный сертификат
       TLSCACertificateFile /etc/ssl/ldap/ca.cert 

Сервер можно конфигурировать и альтернативным методом - через туннель stunnel или ssh. Обычно применяют stunnel, но для начала опять же генерируют сертификат сервера(при этом сам LDAP не должен быть настроен для поддержки SSL т.к. stunnel будет заменять встроенные механизмы SSL ldapa). После генерации сертификата делаем следующее:

       #stunnel  -r ldap  -d 636 -p /etc/ssl/stunnel/stunnel.pem

Записываем эту команду в один из init файлов и добавляем правило iptables для отбрасывния сетевого трафика с порта 389 с целью повышения безопасности(это запрещает доступ по сети к серверу ldap без механизма ssl). Для генерации сертификата в данном случае можно применить скрипт для генерации stunnel сертификатов, который обычно поставляется вместе с stunnel. Можно также применить следующее:

       $ openssl req -new -x509 -days 365 -nodes -config stunnel.cnf \              
           -out stunnel.pem -keyout stunnel.pem                             
       $ openssl gendh 512 >> stunnel.pem     

для генерации self-signed сертификата и параметров для ключей Дифлемана-Хельмана.

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

Теперь перезапускаем slapd и настраиваем клиентов. Для настройки клиентов надо прописать в файле ldap.conf следующие строки:

       # Аутентификация через TLS
       ssl start_tls
       # По умолчанию клиент пытается использовать обычное соединение, закомментировав
       # следующую строчку мы ставим жирный крест на его безобразиях
       #ssl off