Установка 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
< Предыдущая | Следующая > |
---|