Абонентское обслуживание компьютеров

База знаний - Linux

Установка Samba + OpenLDAP на CentOS 6 x64

Задача – сделать контроллер домена на базе samba с хранением учетных записей в ldap каталоге и web интерфейсом для управления пользователями и группами, а так же для управления общими ресурсами на сервере.

Ставим openldap

yum install -y openldap-servers openldap-servers-overlays openldap-clients

Копируем конфигурацию

cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG chown -R ldap:ldap /var/lib/ldap/

Получаем hash пароля и запоминаем его (копируем в буфер обмена)

Slappasswd

Правим файл  /etc/openldap/slapd.d/cn=config/olcDatabase\=\{2\}bdb.ldif заменяем

> olcSuffix: dc=[домен],dc=[суффикс домена]
> olcRootDN: cn=admin,dc=[домен],dc=[суффикс домена]
> olcRootPW: [вставляем hash пароля]

Правим файл /etc/openldap/slapd.d/cn=config/olcDatabase\=\{1\}monitor.ldif

> olcAccess: {0}to *  by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read  by dn.base="cn=admin,dc=[домен],dc=[суффикс домена]" read  by * none

Проверяем конфигурацию и запускаем службу

slaptest -u
service slapd start
chkconfig slapd on

Создаем структуру в openldap

cd ~

создаем файл base.ldif со следующим содержимым

dn: dc=[домен],dc=[суффикс домена]
> dc: ldap
> objectClass: top
> objectClass: domain

> dn: ou=users, dc=[домен],dc=[суффикс домена]
> ou: users
> objectClass: top
> objectClass: organizationalUnit

> dn: ou=groups, dc=[домен],dc=[суффикс домена]
> ou: groups
> objectClass: top
> objectClass: organizationalUnit

Добавляем содержимое файла в каталог ldap

ldapadd -x -W -D cn=admin,dc=[домен],dc=[суффикс домена]-f /root/base.ldif

Проверяем результат

ldapsearch -x -b dc=[домен],dc=[суффикс домена]

Настраиваем поддержку шифрования в openldap

Ставим openssl

yum install openssl

генерим ключи на 10 лет

cd /etc/pki/tls/certs
make openldap.key
openssl rsa -in openldap.key -out openldap.key
make openldap.csr
openssl x509 -in openldap.csr -out openldap.crt -req -signkey openldap.key -days 3650

Копируем ключи в папку openldap

chmod 400 openldap.*
chown ldap. openldap.*
mv openldap.* /etc/openldap/cacerts/

правим /etc/openldap/slapd.d/cn=config.ldif показывая где лежат ключи

> olcTLSCertificateFile: /etc/openldap/cacerts/openldap.crt
> olcTLSCertificateKeyFile: /etc/openldap/cacerts/openldap.key

правим конфиг openldap для использования шифрования /etc/openldap/ldap.conf

> TLS_CACERTDIR /etc/openldap/cacerts
> TLS_REQCERT allow

Правим /etc/sysconfig/ldap

> SLAPD_LDAPS=yes

Перезапускаем openldap, чтобы применилиcь настройки

service slapd restart

проверяем SSL

ldapsearch -x -H ldaps://[имя компьютера].[домен].[суффикс домена]

проверяем TLS

ldapsearch -x -ZZ -h [имя компьютера].[домен].[суффикс домена]

Включаем авторизацию через LDAP (или проверяем, что она включена)

yum install nss-pam-ldapd pam_ldap
authconfig-tui

Ставим samba

yum install samba

Правим конфиг самбы /etc/samba/smb.conf

Если не знаете как настраивать samba, поищите в интернете значения параметрах в файле конфигурации. Хотя назначение основных параметров понятно из названия. В конфиге настраиваем имя рабочей группы, имя компьютера, сетевые интерфейсы на которых будет работать samba и сети из которых к ней будет доступ (как правило указываем только нашу сеть)

В конфиге есть 3 раздела для отдельно стоящего сервера, для сервера вписанного в домен и для сервера контроллера домена. Коментируем параметры в ненужных разделах и разкоментируем в нужном.

В нужный раздел добавляем настройки для работы с ldap

passdb backend = ldapsam:ldap://localhost/
ldap suffix = dc=[домен],dc=[суффикс домена]
ldap user suffix = ou=users
ldap group suffix = ou=groups
ldap machine suffix = ou=computers
ldap admin dn = "cn=admin,dc=[домен],dc=[суффикс домена]"
ldap delete dn = no
ldap ssl = off
ldap passwd sync =yes
time server = yes
preferred master = yes
domain master = yes
local master = yes
wins support = yes

В разделе Share Definition указываем общие папки.

Задаем пароль администратора

smbpasswd -w [пароль]

пароль должен задаться для объекта в ldap (смотрим вывод команды)

Открываем нужные порты.

Добавляем в /etc/sysconfig/iptables для входящих соединений

-A INPUT -p tcp -m multiport --dport 139,389,445 -j ACCEPT
-A INPUT -p udp -m multiport --dport 137,138 -j ACCEPT

И перезагружаем iptables

/etc/init.d/iptables restart

Расширяем схему ldap объектами samba

cd ~
wget http://mirror.yandex.ru/centos/6.3/os/x86_64/Packages/samba-3.5.10-125.el6.x86_64.rpm
mkdir tmp
cd tmp
rpm2cpio ~/ samba-3.5.10-125.el6.x86_64.rpm | cpio –id
cp ./etc/openldap/schema/samba.schema /etc/openldap/schema/

создаем файл schema_convert.conf и в него записываем следующее

include /etc/openldap/schema/core.schema
include /etc/openldap/schema/collective.schema
include /etc/openldap/schema/corba.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/duaconf.schema
include /etc/openldap/schema/dyngroup.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/java.schema
include /etc/openldap/schema/misc.schema
include /etc/openldap/schema/nis.schema
include /etc/openldap/schema/openldap.schema
include /etc/openldap/schema/ppolicy.schema
include /etc/openldap/schema/samba.schema

Создаем папку

mkdir ldif_output
slapcat -f schema_convert.conf -F ./ldif_output -n0 -s "cn={12}samba,cn=schema,cn=config" > ./cn=samba.ldif

Правим cn=samba.ldif В первых 3 строках удаляем {12} В конце файла удаляем блок

structuralObjectClass: olcSchemaConfig
entryUUID: 761ed782-e76d-102f-94de-7784c8a781ec
creatorsName: cn=config
createTimestamp: 20110320184149Z
entryCSN: 20110320184149.954974Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20110320184149Z

Вносим наши объекты в ldap командой выполнить команду

ldapadd -Y EXTERNAL -H ldapi:/// -f cn=samba.ldif

Создаем файл samba_indexes.ldif с содержимым

dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcDbIndex
olcDbIndex: uidNumber eq
olcDbIndex: gidNumber eq
olcDbIndex: loginShell eq
olcDbIndex: uid eq,pres,sub
olcDbIndex: memberUid eq,pres,sub
olcDbIndex: uniqueMember eq,pres
olcDbIndex: sambaSID eq
olcDbIndex: sambaPrimaryGroupSID eq
olcDbIndex: sambaGroupType eq
olcDbIndex: sambaSIDList eq
olcDbIndex: sambaDomainName eq
olcDbIndex: default sub

Выполняем команду

ldapmodify -Y EXTERNAL -H ldapi:/// -f samba_indexes.ldif

Удаляем временную папку и перезапускаем openldap

cd
rm -rf tmp
/etc/init.d/slapd restart

Ставим smbldap-tools

yum install perl-Crypt-SmbHash perl-Digest-SHA perl-LDAP
cd ~
wget http://dl.fedoraproject.org/pub/epel/6/i386/perl-Crypt-SmbHash-0.12-10.el6.noarch.rpm
wget http://dl.fedoraproject.org/pub/epel/6/x86_64/perl-Digest-MD4-1.5-10.el6.x86_64.rpm
wget http://download.gna.org/smbldap-tools/packages/el6/smbldap-tools-0.9.9-1.el6.noarch.rpm
rpm –i perl-Digest-MD4-1.5-10.el6.x86_64.rpm
rpm –i perl-Crypt-SmbHash-0.12-10.el6.noarch.rpm
rpm –i smbldap-tools-0.9.9-1.el6.noarch.rpm

Запускаем настройку smb-tools

cd /usr/share/doc/smbldap-tools-*/
chmod +x smbldap-config.pl
./ smbldap-config.pl

На все вопросы жмем enter, соглашаясь на значения по умолчанию, кроме паролей к ldap. Пароль администратора ldap вводим такой-же, как при настройке ldap.

Создаем структуру samba в ldap

smbldap-populate
smbldap-groupadd -a domain-admin
smbldap-useradd -am -g domain-admin domain-admin
smbldap-passwd domain-admin

Перезагружаем сервер и пробуем войти под domain-admin

Внимание!!!

В моем случае не стартовали автоматически службы smb,nbd,httpd

Чтобы проверить нужно воспользоваться командой

ps –A|grep smb

Если вывод команды пустой, то значит служба не запущена.

Чтобы посмотреть какие службы стартуют автоматически выполняем команду

chkconfig

Для включения автозапуска службы

chkconfig [имя службы] on

Вписываем SAMBA в свой домен

Создаем учетную запись для компьютера

/usr/sbin/useradd -g “Domain Computers”-d /dev/null -c «samba_pdc» -s /bin/false samba$

samba$ - это имя нашего компьютера. Оно обязательно должно заканчиваться на $

Блокируем пароль для нашей учетки

passwd -l samba$

Добавляем учетку в домен

smbpasswd -a -m machine_name$<
net rpc join -U root%[пароль]

В ответ нам должны сказать “Joined domain YOURDOMAINNAME.COM”

Проверяем что samba видит домен

net rpc testjoin

Если самба не видит свой домен, то проверяем запущена ли служба nbd

Установка LAM

Управлять пользователями и группами из командной строки неудобно. Поэтому поставим web интерфейс для этих целей.

Ставим apache и php

yum install httpd php php-ldap

скачиваем и устанавливаем lam

cd ~
wget http://downloads.sourceforge.net/project/lam/LAM/4.0/ldap-account-manager_4.0-1_all.deb?r=&ts=1356698909&use_mirror=citylan
rpm –i ldap-account-manager_4.0-1_all.deb

Выключаем SELinux потому что он не даст обращаться web серверу к папкам c LAM. Для этого открываем на редактирование /etc/selinux/config и ставим параметр SELINUX=disable

Перезагружаем сервер.

Делаем владельцем папки с lam apache

chown –R apache:apache /var/lib/ldap-account-manager
chown –R apache:apache /usr/share/ldap-account-manager

Заходим черезбраузер http://[сервер]/lam

В правом верхнем углу входим в конфигурацию, и выбираем второй пункт сверху.

Пароль по умолчанию lam

Строчки вида dc=[…],dc=[…] заменяем на свои.

В разделе безопасности меняем cn=manager,dc=[домен],dc=[суффикс домена] на cn=admin,dc=[…],dc=[…]

Во второй вкладке указываем, что пользователи хранятся в ou=users,dc=[…],dc=[…] , а компьютеры в ou=computers,dc=[…],dc=[…]

В остальном вроде все.

Для управления общими ресурсами самбы можно поставить SWAT – вэб интерфейс

yum install swat

В браузере http://[сервер]:901 – вход в swat