Как настроить SAMBA в SUSE как PDC с OpenLDAP, DYNDNS и CLAM

Материал из openSUSE.

Содержание

Введение

Это пошаговое руководство по настройке системы GNU/Linux с Samba, OpenLDAP, DHCP, DNS и ClamAV на примере SUSE Linux Professional 9.3. Учтя некоторые отличия, вы также можете использовать это руководство на любом другом дистрибутиве.

Статья, описывающая то же для SUSE Linux 10.1, находится здесь

Обзор необходимого ПО

Дистрибутив: SUSE 9.3 Professional

SUSE LINUX Professional 9.3 - простая в установке операционная система, вышедшая в 2003 году. SUSE 9.3 использует новейшие версии открытых сетевых программ, например, Samba, Apache, NFS, SLP, NIS, DNS и DHCP. Эта версия Linux предназначена для домашних сетей, в том числе для систем веб-хостинга, централизованной печати и рабочих медиа-станций. Особые возможности ускоряют всё, от настройки сервера до настройки обновлений к программам, SUSE Linux содержит наиболее полный набор инструментов, когда-либо включаемых в коробочную версию Linux.

Backend: OpenLDAP 2.2.23-6

OpenLDAP - это открытая реализация Облегчённого протокола доступа к директориям (Lightweight Directory Access Protocol).

Разрешение имен: Named(BIND) 9.3.1-3

Программа Berkeley Internet Name Domain, ранее известная как Berkeley Internet Name Daemon - самый распространённый DNS-сервер в интернете, особенно на юниксоподобных системах, где он является стандартом de facto. BIND (BIND 9) написан с нуля, во-первых из-за архитектурных сложностей с проверкой ранних кодов BIND, а во-вторых ради поддержки DNSSEC (безопасные расширения DNS). В число важных возможностей BIND 9 входят: TSIG, DNS notify, nsupdate, IPv6, rndc flush, виды, поддержка нескольких процессоров и улучшенная для портирования архитектура.

Автоматизация настроек TCP/IP: DHCP-Server 3.0.2-6

DHCPD демон который используется в Linux для динамической настройки TCP/IP на клиентских машинах.

Антивирусное ПО: Samba Vscan 0.3.5-37

Шаблон:Samba Vscan

Установка необходимого ПО

Если у вас уже есть рабочая версия SUSE 9.3 Professional, то в неё необходимо дополнительно установить несколько пакетов.

Первое, в чём необходимо определиться - какие пакеты необходимо установить. Если список пакетов отличается от того, что перечислен внизу, вы можете установить их вручную или через Yast:

samba-client-3.0.12-5
samba-doc-3.0.12-5
samba-3.0.12-5
samba-pdb-3.0.12-5
samba-winbind-3.0.12-5
yast2-samba-client-2.11.5-3
yast2-samba-server-2.11.14-3
samba-vscan-0.3.5-37
dhcp-server-3.0.2-6
bind-9.3.1-3
clamav-db-0.85.1-1.1
clamav-0.85.1-1.1
perl-URI-1.35-3
perl-ldap-0.29-137
perl-Convert-ASN1-0.18-69
perl-Crypt-SmbHash-0.02-3

Для установки недостающих пакетов воспользуйтесь YaST или командой RPM.

  • Через YaST (достаточно указать имя пакета, например: samba-vscan):
    • yast -i имя-пакета
  • Через RPM (предполагается, что вы в том же каталоге, что и RPM-пакет):
    • rpm -Uvh имя-пакета

Убедитесь, что остальные пакеты установлены (если нет, то установите их):

# rpm -qa | grep samba
# rpm -qa | grep dhcp-server
# rpm- qa | grep bind
# rpm -qa | grep clamav
# rpm -qa | grep perl

Настройка сервера

Настройка Samba

Переместите старый smb.conf в безопасное место:

# cd /etc/samba/
# mv smb.conf smb.conf.OLD

Используя свой любимый редактор ascii editor, отредактируйте или создайте новый smb.conf в папке /etc/samba и измените или добавьте следующие строки. Примечание: в опции workgroup, если foobar.tld длинее 15 символов, Samba обрежет его! Я рекомендую создавать файл smb.conf с нуля, как указано ниже:

# Задаём имя домена и узла
####################################################
[global]
workgroup = foobar.tld
netbios name = bar
# Настройка ldapsam backend database #################################################### passdb backend = ldapsam:ldap://127.0.0.1 username map = /etc/samba/smbusers
# Настройка системы печати #################################################### printcap name = cups printing = cups
# Путь к скрипту IDEALX (его коснемся позже) #################################################### add user script = /usr/local/sbin/smbldap-useradd -m %u delete user script = /usr/local/sbin/smbldap-userdel %u add group script = /usr/local/sbin/smbldap-groupadd -p %g delete group script = /usr/local/sbin/smbldap-groupdel %g add user to group script = /usr/local/sbin/smbldap-groupmod -m %g %u delete user from group script = /usr/local/sbin/smbldap-groupmod -x %g %u set primary group script = /usr/local/sbin/smbldap-usermod -g %g %u add machine script = /usr/local/sbin/smbldap-useradd -w %u
# если вы хотите добавлять машины в домен автоматически, добавьте этот скрипт: # add machine script = /usr/local/sbin/smbldap-useradd -w -i %u # испытано на SUSE 10.0 # # Другие разнообразные директивы (man smb.conf) #################################################### obey pam restrictions = Yes logon script = scripts\logon.bat logon path = \\%L\Profiles\%U logon drive = H: logon home = \\%L\%U domain logons = Yes os level = 44 preferred master = Yes domain master = Yes dont descend = /proc,/dev,/etc,/lib,/lost+found,/initrd show add printer wizard = yes
# настройки OpenLDAP определяются здесь ################################################### ldap suffix = dc=foobar,dc=tld ldap machine suffix = ou=Computers ldap user suffix = ou=Users ldap group suffix = ou=Groups ldap idmap suffix = ou=Users ldap admin dn = cn=Manager,dc=foobar,dc=tld ldap ssl = no ldap passwd sync = Yes idmap uid = 15000-20000 idmap gid = 15000-20000
# Задаём настройки журналирования #################################################### log level = 2 log file = /var/log/samba/%m.log
# Определение настроек сканирования вирусов #################################################### vfs object = vscan-clamav vscan-clamav: config-file = /etc/samba/vscan-clamav.conf
# Настройки домашних директорий #################################################### [homes] comment = Home Directories valid users = %S read only = No browseable = No
# Определение принтеров #################################################### [printers] comment = All Printers path = /var/spool/samba printer admin = @"Print Operators" read only = Yes guest ok = Yes printable = Yes browseable = No
# Драйвера для принтера #################################################### [print$] path = /var/lib/samba/drivers/ guest ok = No browseable = Yes read only = Yes valid users = @"Print Operators" write list = @"Print Operators" create mask = 0664 directory mask = 0775
# Настройка службы сетевого входа (logon) #################################################### [netlogon] comment = NLService path = /var/lib/samba/netlogon guest ok = Yes browseable = No
# Ресурс профилей ( для переносимых профилей ) #################################################### [profiles] comment = Roaming Profiles path = /var/lib/samba/profiles create mask = 0600 directory mask = 0700 browseable = No guest ok = Yes force user = %U valid users = %U "Domain Admins" read only = No profile acls = Yes
# Определение разделенных ресурсов #################################################### [share] comment = data share path = /opt/stuff valid users = %U

Отредактируйте файл smbusers в папке /etc/samba и измените или добавьте строку:

root = Administrator

Теперь давайте разберемся с частью IDEALX, которую вы видели в smb.conf. Объяснение такое: "IDEALX скрипты - это набор системных утилит (скриптов) user{add,del,mod} и group{add,del,mod}, предназначенных для управления пользователями и группами, сохранёнными в каталоге LDAP".

Скопируйте эти скрипты в соответствующие каталоги:

# cd /usr/share/doc/packages/samba/examples/LDAP/smbldap-tools-*/
# cp smbldap-* /usr/local/sbin

Проверьте конфигурацию, вы должны получить такой же текст как показан ниже:

# testparm
Load smb config files from /etc/samba/smb.conf
Processing section "[homes]"
Processing section "[printers]"
Processing section "[netlogon]"
Processing section "[profiles]"
Processing section "[share]"
Loaded services file OK.
Server role: ROLE_DOMAIN_PDC
Press enter to see a dump of your service definitions

Установите для Samba права доступа, чтобы можно было создавать переносимые профили:

# chmod 1777 /var/lib/samba/profiles

Теперь запустите службы Samba :

# rcsmb start
# rcnmb start

И список ресурсов на вашем сервере такой:

# smbclient -L localhost -N
added interface ip=192.168.1.104 bcast=192.168.1.255 nmask=255.255.255.0
Anonymous login successful
Domain=[FOOBAR.TLD] OS=[Unix] Server=[Samba 3.0.12-5-SUSE]
Sharename Type Comment --------- ---- ------- profiles Disk Roaming Profiles share Disk share IPC$ IPC IPC Service (Samba 3.0.12-5-SUSE) ADMIN$ IPC IPC Service (Samba 3.0.12-5-SUSE) Anonymous login successful Domain=[FOOBAR.TLD] OS=[Unix] Server=[Samba 3.0.12-5-SUSE]
Server Comment --------- ------- BAR Samba 3.0.12-5-SUSE
Workgroup Master --------- ------- FOOBAR.TLD BAR
Настройка OpenLDAP

Воспользуйтесь вашим любимым ascii редактором, изменим файл slapd.conf в /etc/openldap каталоге и изменим или добавим следующие строки ( я рекомендую создавать файл slapd.conf с нуля ):

# Определение схем и расположения файлов
################################################################
include         /etc/openldap/schema/core.schema
include         /etc/openldap/schema/cosine.schema
include         /etc/openldap/schema/inetorgperson.schema
include         /etc/openldap/schema/nis.schema
include         /etc/openldap/schema/samba3.schema
pidfile /var/run/slapd/slapd.pid argsfile /var/run/slapd/slapd.args
# Настройка вашей базы и пользователя админа + пароль ################################################################ database bdb suffix "dc=foobar,dc=tld" rootdn "cn=Manager,dc=foobar,dc=tld" rootpw secret directory /var/lib/ldap
# Индексация для ускорения отклика ( неверный индекс может только ухудшить дело ) ################################################################# index objectClass eq index cn pres,sub,eq index sn pres,sub,eq index uid pres,sub,eq index displayName pres,sub,eq index uidNumber eq index gidNumber eq index memberUid eq index sambaSID eq index sambaPrimaryGroupSID eq index sambaDomainName eq index default sub
# Настройки списков контроля доступа (ACL) для доступа к различным частям вашей # базы. Вы можете и обойтись и без ACL, но немного безопасности не повредит # Предотвратим просмотр пользовательских паролей, рабочих номеров ... и т.д. ###################################################################### access to attr=userpassword,clearpassword,ldappassword by anonymous auth by self write by dn="cn=Manager,dc=foobar,dc=tld" write by * none
access to * by dn="cn=Manager,dc=foobar,dc=tld" write by users read by self write by * read

Вы должны отредактировать файл чтобы он выглядел как представлено ниже, убедитесь что есть строка samba3.schema в файле /etc/openldap/schema каталога ( список каталогов вы видели ). Если у вас этого нет установите пакет с именем samba-client.

Следующим шагом настройки OpenLDAP конфигурации вам необходимо создать иерархию в вашем домене OpenLDAP. Вы используете скрипты IDEALX для заселения LDAP дерева, первое что необходимо создать каталог smbldap-tools внутри каталога /etc и скопировать smbldap.conf, smbldap_bind.conf из каталога /usr/share/doc/packages/samba/examples/LDAP/smbldap-tools-0.8.7/:

# cd /usr/share/doc/packages/samba/examples/LDAP/smbldap-tools-0.8.7/
# cp smbldap_bind.conf /etc/smbldap-tools
# cp smbldap.conf /etc/smbldap-tools
# cp smbldap_tools.pm /usr/local/sbin
# chmod 644 /usr/local/sbin/smbldap_tools.pm
# cd /etc/smbldap-tools
# chmod 644 smbldap.conf
# chmod 600 smbldap_bind.conf  

Снова используем ваш ascii редактор, правим файл smbldap.conf в каталоге /etc/smbldap-tools и изменяем или добавляем следующие строки ( я рекомндую создавать файл smbldap.conf с нуля ):

# Узнав ваш номер SID по выводу команды net getlocalsid
# И вставляем его ниже
###############################################################
SID="S-1-5-21-2139989288-483860436-2398042574"
slaveLDAP="127.0.0.1" slavePort="389" masterLDAP="127.0.0.1" masterPort="389" ldapTLS="0" verify="require" cafile="/etc/smbldap-tools/ca.pem" clientcert="/etc/smbldap-tools/smbldap-tools.pem" clientkey="/etc/smbldap-tools/smbldap-tools.key" suffix="dc=example,dc=tld" usersdn="ou=Users,${suffix}" computersdn="ou=Computers,${suffix}" groupsdn="ou=Groups,${suffix}" idmapdn="ou=Idmap,${suffix}" sambaUnixIdPooldn="sambaDomainName=foobar.tld,${suffix}" scope="sub" hash_encrypt="SSHA" crypt_salt_format="%s" userLoginShell="/bin/bash" userHome="/home/%U" userGecos="System User" defaultUserGid="513" defaultComputerGid="515" skeletonDir="/etc/skel" defaultMaxPasswordAge="99" userSmbHome="\\BAR\homes\%U" userProfile="\\BAR\profiles\%U" userHomeDrive="H:" userScript="%U.cmd" mailDomain="foobar.tld" with_smbpasswd="0" smbpasswd="/usr/bin/smbpasswd" with_slappasswd="0" slappasswd="/usr/sbin/slappasswd"

Используя ваш любимый ascii редактор, правим файл smbldap_tools.pm в каталоге /usr/local/sbin и изменим или добавим такие строки:

my $smbldap_conf="/etc/smbldap-tools/smbldap.conf";
my $smbldap_bind_conf="/etc/smbldap-tools/smbldap_bind.conf";

Снова в ascii редактор, редактируем файл smbldap_bind.conf в каталоге /etc/smbldap-tools и приавм или добавляем строки:

slaveDN="cn=Manager,dc=example,dc=tld"
slavePw="secret"
masterDN="cn=Manager,dc=example,dc=tld"
masterPw="secret"

И в который раз, снова в ваш ascii редактор, изменяем файл smbldap-populate в каталоге /usr/local/sbin и изменяем или добавим следующие строки ( по умолчанию есть Administrator, но у меня были проблемы с этим аккаунтом во время присоединения рабочей станции к домену, поэтому ниже в конфигурации samba мы определим root как Administrator и вам необходимо использовать пользователя с uid=0 для присоединения рабочей станции к домену. Если у вас есть решение как использовать пользователя не с uid равным 0 пожалуйста в свободное время сообщите мне и я изменю эту часть в статье ):

my $adminName = $Options{'a'};
if (!defined($adminName)) {
  $adminName = "Admin";
}

Изменив файл smbldap-populate, вам необходимо вам необходимо запустить его из директории /usr/local/sbin, но перед этим запустите сервер LDAP ( вам надо убедиться что вывод команд как здесь ):

# rcldap start
# /usr/local/sbin/smbldap-populate
Using workgroup name from sambaUnixIdPooldn (smbldap.conf): sambaDomainName=foobar.tld
Using builtin directory structure
adding new entry: dc=fooobar,dc=tld
adding new entry: ou=Users,dc=foobar,dc=tld
adding new entry: ou=Groups,dc=foobar,dc=tld
adding new entry: ou=Computers,dc=foobar,dc=tld
adding new entry: ou=Idmap,dc=foobar,dc=tld
adding new entry: sambaDomainName=foobar.tld,dc=foobar,dc=tld
adding new entry: uid=Admin,ou=Users,dc=foobar,dc=tld
adding new entry: uid=nobody,ou=Users,dc=foobar,dc=tld
adding new entry: cn=Domain Admins,ou=Groups,dc=foobar,dc=tld
adding new entry: cn=Domain Users,ou=Groups,dc=foobar,dc=tld
adding new entry: cn=Domain Guests,ou=Groups,dc=foobar,dc=tld
adding new entry: cn=Domain Computers,ou=Groups,dc=foobar,dc=tld
adding new entry: cn=Administrators,ou=Groups,dc=foobar,dc=tld
adding new entry: cn=Print Operators,ou=Groups,dc=foobar,dc=tld
adding new entry: cn=Backup Operators,ou=Groups,dc=foobar,dc=tld

Перед использованием нашей базы ldap убедимся что все что нужно было создано, вы должны получить вывод как здесь:

# slapcat
dn: dc=foobar,dc=tld
objectClass: dcObject
objectClass: organization
o: foobar
dc: foobar
structuralObjectClass: organization
entryUUID: fc296908-e259-1027-9686-c73f68847b0c
creatorsName: cn=Manager,dc=foobar,dc=tld
createTimestamp: 20040124014007Z
entryCSN: 20040124014007Z#000001#00#000000
modifiersName: cn=Manager,dc=foobar,dc=tld
modifyTimestamp: 20040124014007Z
dn: ou=Users,dc=foobar,dc=tld objectClass: organizationalUnit ou: Users structuralObjectClass: organizationalUnit entryUUID: fc4bf504-e259-1027-9687-c73f68847b0c creatorsName: cn=Manager,dc=foobar,dc=tld createTimestamp: 20040124014007Z entryCSN: 20040124014007Z#000002#00#000000 modifiersName: cn=Manager,dc=foobar,dc=tld modifyTimestamp: 20040124014007Z
dn: ou=Groups,dc=foobar,dc=tld objectClass: organizationalUnit ou: Groups structuralObjectClass: organizationalUnit entryUUID: fc4e6cb2-e259-1027-9688-c73f68847b0c creatorsName: cn=Manager,dc=foobar,dc=tld createTimestamp: 20040124014007Z entryCSN: 20040124014007Z#000003#00#000000 modifiersName: cn=Manager,dc=foobar,dc=tld modifyTimestamp: 20040124014007Z
dn: ou=Computers,dc=foobar,dc=tld objectClass: organizationalUnit ou: Computers structuralObjectClass: organizationalUnit entryUUID: fc55504a-e259-1027-9689-c73f68847b0c creatorsName: cn=Manager,dc=foobar,dc=tld createTimestamp: 20040124014008Z entryCSN: 20040124014008Z#000001#00#000000 modifiersName: cn=Manager,dc=foobar,dc=tld modifyTimestamp: 20040124014008Z
dn: ou=Idmap,dc=foobar,dc=tld objectClass: organizationalUnit ou: Idmap structuralObjectClass: organizationalUnit entryUUID: fc58a128-e259-1027-968a-c73f68847b0c creatorsName: cn=Manager,dc=foobar,dc=tld createTimestamp: 20040124014008Z entryCSN: 20040124014008Z#000002#00#000000 modifiersName: cn=Manager,dc=foobar,dc=tld modifyTimestamp: 20040124014008Z
dn: sambaDomainName=efoobar.tld,dc=foobar,dc=tld objectClass: sambaDomain objectClass: sambaUnixIdPool sambaDomainName: example.tld sambaSID: S-1-5-21-2139989288-483860436-2398042574 uidNumber: 1000 gidNumber: 1000 structuralObjectClass: sambaDomain entryUUID: fc5fcfac-e259-1027-968b-c73f68847b0c creatorsName: cn=Manager,dc=foobar,dc=tld createTimestamp: 20040124014008Z entryCSN: 20040124014008Z#000003#00#000000 modifiersName: cn=Manager,dc=foobar,dc=tld modifyTimestamp: 20040124014008Z
dn: uid=Admin,ou=Users,dc=foobar,dc=tld cn: Admin sn: Admin objectClass: inetOrgPerson objectClass: sambaSamAccount objectClass: posixAccount objectClass: shadowAccount gidNumber: 512 uid: Admin uidNumber: 998 homeDirectory: /home/Admin sambaPwdLastSet: 0 sambaLogonTime: 0 sambaLogoffTime: 2147483647 sambaKickoffTime: 2147483647 sambaPwdCanChange: 0 sambaPwdMustChange: 2147483647 sambaHomePath: \\bar\homes\Admin sambaHomeDrive: H: sambaProfilePath: \\bar\profiles\Admin\ sambaPrimaryGroupSID: S-1-5-21-2139989288-483860436-2398042574-512 sambaLMPassword: XXX sambaNTPassword: XXX sambaAcctFlags: [U ] sambaSID: S-1-5-21-2139989288-483860436-2398042574-2996 loginShell: /bin/false gecos: Netbios Domain Administrator structuralObjectClass: inetOrgPerson entryUUID: fc9199a6-e259-1027-968c-c73f68847b0c creatorsName: cn=Manager,dc=foobar,dc=tld createTimestamp: 20040124014008Z entryCSN: 20040124014008Z#000004#00#000000 modifiersName: cn=Manager,dc=foobar,dc=tld modifyTimestamp: 20040124014008Z
dn: uid=nobody,ou=Users,dc=foobar,dc=tld cn: nobody sn: nobody objectClass: inetOrgPerson objectClass: sambaSamAccount objectClass: posixAccount objectClass: shadowAccount gidNumber: 514 uid: nobody uidNumber: 999 homeDirectory: /dev/null sambaPwdLastSet: 0 sambaLogonTime: 0 sambaLogoffTime: 2147483647 sambaKickoffTime: 2147483647 sambaPwdCanChange: 0 sambaPwdMustChange: 2147483647 sambaHomePath: \\bar\homes\nobody sambaHomeDrive: H: sambaProfilePath: \\bar\profiles\nobody sambaPrimaryGroupSID: S-1-5-21-2139989288-483860436-2398042574-514 sambaLMPassword: NO PASSWORDXXXXXXXXXXXXXXXXXXXXX sambaNTPassword: NO PASSWORDXXXXXXXXXXXXXXXXXXXXX sambaAcctFlags: [NU ] sambaSID: S-1-5-21-2139989288-483860436-2398042574-2998 loginShell: /bin/false structuralObjectClass: inetOrgPerson entryUUID: fcbe3362-e259-1027-968d-c73f68847b0c creatorsName: cn=Manager,dc=foobar,dc=tld createTimestamp: 20040124014008Z entryCSN: 20040124014008Z#000005#00#000000 modifiersName: cn=Manager,dc=foobar,dc=tld modifyTimestamp: 20040124014008Z
dn: cn=Domain Admins,ou=Groups,dc=foobar,dc=tld objectClass: posixGroup objectClass: sambaGroupMapping gidNumber: 512 cn: Domain Admins memberUid: Admin description: Netbios Domain Administrators sambaSID: S-1-5-21-2139989288-483860436-2398042574-512 sambaGroupType: 2 displayName: Domain Admins structuralObjectClass: posixGroup entryUUID: fcc7222e-e259-1027-968e-c73f68847b0c creatorsName: cn=Manager,dc=foobar,dc=tld createTimestamp: 20040124014008Z entryCSN: 20040124014008Z#000006#00#000000 modifiersName: cn=Manager,dc=foobar,dc=tld modifyTimestamp: 20040124014008Z
dn: cn=Domain Users,ou=Groups,dc=foobar,dc=tld objectClass: posixGroup objectClass: sambaGroupMapping gidNumber: 513 cn: Domain Users description: Netbios Domain Users sambaSID: S-1-5-21-2139989288-483860436-2398042574-513 sambaGroupType: 2 displayName: Domain Users structuralObjectClass: posixGroup entryUUID: fceb2534-e259-1027-968f-c73f68847b0c creatorsName: cn=Manager,dc=foobar,dc=tld createTimestamp: 20040124014008Z entryCSN: 20040124014008Z#000007#00#000000 modifiersName: cn=Manager,dc=foobar,dc=tld modifyTimestamp: 20040124014008Z
dn: cn=Domain Guests,ou=Groups,dc=foobar,dc=tld objectClass: posixGroup objectClass: sambaGroupMapping gidNumber: 514 cn: Domain Guests description: Netbios Domain Guests Users sambaSID: S-1-5-21-2139989288-483860436-2398042574-514 sambaGroupType: 2 displayName: Domain Guests structuralObjectClass: posixGroup entryUUID: fcf449fc-e259-1027-9690-c73f68847b0c creatorsName: cn=Manager,dc=foobar,dc=tld createTimestamp: 20040124014009Z entryCSN: 20040124014009Z#000001#00#000000 modifiersName: cn=Manager,dc=foobar,dc=tld modifyTimestamp: 20040124014009Z
dn: cn=Domain Computers,ou=Groups,dc=foobar,dc=tld objectClass: posixGroup objectClass: sambaGroupMapping gidNumber: 515 cn: Domain Computers description: Netbios Domain Computers accounts sambaSID: S-1-5-21-2139989288-483860436-2398042574-515 sambaGroupType: 2 displayName: Domain Computers structuralObjectClass: posixGroup entryUUID: fcfe6612-e259-1027-9691-c73f68847b0c creatorsName: cn=Manager,dc=foobar,dc=tld createTimestamp: 20040124014009Z entryCSN: 20040124014009Z#000002#00#000000 modifiersName: cn=Manager,dc=foobar,dc=tld modifyTimestamp: 20040124014009Z
dn: cn=Administrators,ou=Groups,dc=foobar,dc=tld objectClass: posixGroup objectClass: sambaGroupMapping gidNumber: 544 cn: Administrators description: Netbios Domain Members can fully administer the computer/sambaDomainName sambaSID: S-1-5-32-544 sambaGroupType: 5 displayName: Administrators structuralObjectClass: posixGroup entryUUID: fd077900-e259-1027-9692-c73f68847b0c creatorsName: cn=Manager,dc=foobar,dc=tld createTimestamp: 20040124014009Z entryCSN: 20040124014009Z#000003#00#000000 modifiersName: cn=Manager,dc=foobar,dc=tld modifyTimestamp: 20040124014009Z
dn: cn=Print Operators,ou=Groups,dc=foobar,dc=tld objectClass: posixGroup objectClass: sambaGroupMapping gidNumber: 550 cn: Print Operators description: Netbios Domain Print Operators sambaSID: S-1-5-32-550 sambaGroupType: 5 displayName: Print Operators structuralObjectClass: posixGroup entryUUID: fd1062c2-e259-1027-9693-c73f68847b0c creatorsName: cn=Manager,dc=foobar,dc=tld createTimestamp: 20040124014009Z entryCSN: 20040124014009Z#000004#00#000000 modifiersName: cn=Manager,dc=foobar,dc=tld modifyTimestamp: 20040124014009Z
dn: cn=Backup Operators,ou=Groups,dc=foobar,dc=tld objectClass: posixGroup objectClass: sambaGroupMapping gidNumber: 551 cn: Backup Operators description: Netbios Domain Members can bypass file security to back up files sambaSID: S-1-5-32-551 sambaGroupType: 5 displayName: Backup Operators structuralObjectClass: posixGroup entryUUID: fd181b16-e259-1027-9694-c73f68847b0c creatorsName: cn=Manager,dc=foobar,dc=tld createTimestamp: 20040124014009Z entryCSN: 20040124014009Z#000005#00#000000 modifiersName: cn=Manager,dc=foobar,dc=tld modifyTimestamp: 20040124014009Z
dn: cn=Replicators,ou=Groups,dc=foobar,dc=tld objectClass: posixGroup objectClass: sambaGroupMapping gidNumber: 552 cn: Replicators description: Netbios Domain Supports file replication in a sambaDomainName sambaSID: S-1-5-32-552 sambaGroupType: 5 displayName: Replicators structuralObjectClass: posixGroup entryUUID: fd211446-e259-1027-9695-c73f68847b0c creatorsName: cn=Manager,dc=foobar,dc=tld createTimestamp: 20040124014009Z entryCSN: 20040124014009Z#000006#00#000000 modifiersName: cn=Manager,dc=foobar,dc=tld modifyTimestamp: 20040124014009Z

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

# rcldap start
# rcsmb start
# rcnmb start

Давайте добавим еще несколько аккаунтов в вашу базу LDAP: первым вам необходимо добавить root для SAMBA, потому что подключение клиентских машин в домен требует использования аккаунта administrator ( пользователя с uid 0 ) и второе что необходимо добавить LDAP пароль в файл secrets.tdb для того чтобы SAMBA могла обновлять базу LDAP:

# smbpasswd -a root
# smbpasswd -w secret
Сохраним пароли для "cn=Manager,dc=foobar,dc=tld" в secrets.tdb

Заметьте, команда smbpasswd -w secret для того чтобы SAMBA могла использовать обновление в базе LDAP, достичь того же определив в файле slapd.conf под rootpw директивой.

Используя скрипты IDEALX для добавления пользователей/групп ... и т.д. в LDAP которые будут использоваться с SAMBA:

# smbldap-useradd -a USERNAME

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

Итак используем YaST для настройки вашей системы как LDAP клиента:

Image:Yastldap.png

Снова открываем ваш любимый ascii редактор, правим файл nsswitch.conf в папке /etc/ и изменяем следующие строки:

passwd: files ldap
group: files ldap

Сейчас просмотрите список элементов в административной базе, использует ли ваша система использует обе, локальную и LDAP ( если вы еще не добавили аккаунты тогда будет не менее двух Admin и nobody ):

# getent passwd
+::0:0:::
Admin:x:998:512:Netbios Domain Administrator:/home/Admin:/bin/false
nobody:x:999:514:nobody:/dev/null:/bin/false

Если все что описано выше вам необходимо выполнить более двух раз, то необходимо подумать о автоматизации, первое создадим каталог scripts в каталоге /etc/samba:

# echo session required pam_mkhomedir.so skel=/etc/skel umask=0022 >>/etc/pam.d/common-session

Фу-у, теперь остальное вы можете доделать сами :D !!

Настройка динамического DNS

Предварительные шаги

Для того чтобы создать вашу dynDNS инфраструктуру нам необходимо сделать несколько вещей до настоящей настройки пары серверов DHCP и DNS для динамического обновления. Первое нам необходимо создать ключ (key) который будет использоваться для безопастного обмена между серверами DHCP и DNS.

Для создания ключа (key) и файла который декларирует ключ key выполните следующие команды:

# cd /etc
# genDDNSkey

Это по умолчанию создаст файл с именем named.keys с ключом DHCP_UPDATER, конечно вы можете выбрать другие ключи key и файл ( для этого почитайте руководство ):

# genDDNSkey --key-file=/ur/path --key-name MY_KEY_NAME

Когда ключ (key) был создан, вам необходимо сказать демонам DHCP и DNS использовать этот файл до того как они будут запущены в ограниченном окружении ( chroot jail).

Воспользуйтесь вашим ascii редактором, правим файл dhcpd в каталоге /etc/sysconfig и изменим или добавим следующие директивы:

DHCPD_CONF_INCLUDE_FILES="/etc/named.keys"

Также правим файл named в папке /etc/sysconfig:

NAMED_CONF_INCLUDE_FILES="/etc/named.keys"

Теперь можно двигаться к настройке вашего DHCP и DNS серверов.

Настройка DHCP

Используя ascii редактор, редактируем файл dhcpd.conf в каталоге /etc и изменяем или добавим следющие строки ( я рекомендую вам создать файл dhcpd.conf с нуля ). Также для IP адреса значения произвольные, вы те которые соответствуют вашему случаю:

# Файл с ключом мы будем использовать для безопастного обновления файлов зон
###########################################################
include "/etc/named.keys";
# Наш сервер авторитетный ######################################################### server-identifier bar.foobar.tld; authoritative;
# Спецификация зоны ########################################### zone foobar.forward { primary 192.168.1.104; key DHCP_UPDATER; } zone foobar.reverse { primary 192.168.1.104; key DHCP_UPDATER; }
# Различные опции ######################################## default-lease-time 86400; max-lease-time 172800;
option domain-name "foobar.tld"; option domain-name-servers 192.168.1.104;
ignore client-updates; ddns-domainname "foobar.tld"; ddns-updates on; ddns-update-style interim;
# Определение сетевых настроек ( range ... ) ################################################# subnet 192.168.1.0 netmask 255.255.255.0 { range dynamic-bootp 192.168.1.10 192.168.1.254; zone foobar.tld { primary 127.0.0.1; key DHCP_UPDATER; } zone 1.168.192.in-addr.arpa. { primary 127.0.0.1; key DHCP_UPDATER; } option subnet-mask 255.255.255.0; option routers 192.168.1.1; one-lease-per-client on; }

Конфигурация выше резервирует предел от 1 - 10 для зарезервированных жесткого заданных (hard-wired IP) адресов, и динамически распределяться будут адреса из 10 - 254.

Настройка сервера имен

Используем ваш любимый ascii редактор, правим файл named.conf в каталоге /etc и изменим или добавим строки ( я рекомендую создать named.conf файл заново ). Также как в примере выше с DHCP, значения и пределы выборочные и вы используйте нужные вам.

# Подключим файл с ключом
#################################################
include "/etc/named.keys";
# Доступ (Access Control Lists) ################################################# acl mynet { 192.168.1.0/24; 127.0.0.1; };
# Различные настройки ################################################# options { directory "/var/lib/named"; allow-query { mynet; }; forwarders { 83.139.64.3; }; };
# Объявления зон ################################################# zone "localhost" in { type master; file "localhost.zone"; };
zone "0.0.127.in-addr.arpa" in { type master; file "127.0.0.zone"; };
zone "." in { type hint; file "root.hint"; };
# Оъявлене прямой зоны foobar.tld ################################################# zone "foobar.tld" { type master; file "dyn/foobar.forward"; allow-update { key DHCP_UPDATER; }; allow-query { mynet; }; allow-transfer { mynet; }; };
# Объявление обратной зоны foobar.tld ################################################# zone "1.168.192.in-addr.arpa" { type master; file "dyn/foobar.reverse"; allow-update { key DHCP_UPDATER; }; allow-query { mynet; }; allow-transfer { mynet; }; };

Создав файл named.conf, вы должны создать/настроить файлы с зонами.

Воспользуемся ascii редактором, создаем файл foobar.forward в каталоге /var/lib/named/dyn и изменим или добавим следующее ( рекомендую вам создать файл foobar.forward с нуля ).

$TTL 5D
@               IN SOA  bar.foobar.tld. root.foobar.tld. (
                                        200524085  ; serial
                                        3H         ; refresh
                                        1H         ; retry
                                        1W         ; expire
                                        5D )       ; minimum
@ NS bar.foobar.tld.
bar A 192.168.1.104

Вновь в ваш любимый ascii редактор, создаем файл foobar.reverse в каталоге /var/lib/named/dyn и добавим следующее:

$TTL 5D
@                      IN SOA  bar.foobar.tld. root.foobar.tld. (
                                200524086  ; serial
                                3H         ; refresh
                                1H         ; retry
                                1W         ; expire
                                5H )       ; minimum
@ NS bar.foobar.tld.
104 PTR bar.foobar.tld.

Оба фала зон для localhost есть по умолчанию, так что создавать их не надо, файл root.hint также присутствует по умолчанию.


Проверка содержимого

ClamAV

Настроим проверку контента в SAMBA, это немного капризная настройка и требует выполнения некоторых изменений. Итак, сперва копируем файл vscan-clamav.conf из каталога /usr/share/doc/packages/samba-vscan/ в /etc/samba:

# cp  /usr/share/doc/packages/samba-vscan/vscan-clamav.conf /etc/samba

Далее создаем каталог с именем clamd в папке /var/run и сменим его владельца и группу на vscan:

# mkdir /var/run/clamd
# chown vscan:vscan /var/run/clamd

Также нам необходимо создать каталог который бужет использоваться как quarantine и будет принадлежать пользователю vscan:

# mkdir /var/lib/clamav/quarantine
# chown vscan /var/lib/clamav/quarantine 

Воспользуемся вашим любимым ascii редактором, создаем файл vscan-clamav.conf в каталоге /etc/samba и добавим в него следующие строки ( рекомендую вам создать файл vscan-clamav.conf с нуля ):

[samba-vscan]
max file size = 0
verbose file logging = yes
scan on open = yes
scan on close = yes
deny access on error = yes
deny access on minor error = yes
send warning message = yes
infected file action = quarantine
quarantine directory  = /var/lib/clamav/quarantine
quarantine prefix = vir-
max lru files entries = 100
lru file entry lifetime = 5
exclude file types =
clamd socket name = /var/run/clamd/clamd
libclamav max files in archive = 1000
libclamav max archived file size = 10 * 1048576
libclamav max recursion level = 5

Воспользуйтесь вашим любимым ascii редактором, создадим файл clamd.conf в папке /etc/ и изменим или добавим следующие строки ( рекомендую создать файл clamd.conf с нуля ):

LogFile /var/log/clamd
LogFileUnlock
LogSyslog
LogFacility LOG_MAIL
LogVerbose
PidFile /var/lib/clamav/clamd.pid
DatabaseDirectory /var/lib/clamav
LocalSocket /var/run/clamd/clamd
FixStaleSocket
User vscan
Foreground
Debug
ScanRAR

Запускаем всех демонов:

# rcnamed start
# rcdhcpd start
# rcldap start
# rcsmb start
# rcnmb start
# rcclamd star

Настроим запуск всех демонов при старте системы:

# chkconfig named on
# chkconfig dhcpd on
# chkconfig smb on
# chkconfig nmb on
# chkconfig clamd on

Настройка клиентов

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

Для начала присоединим клиентскую машину к домену SAMBA. Учетная запись машины будет добавляться в домен автоматически, если вы добавите аккаунт POSIX-машины (примечание: значок $ указывает, что это аккаунт компьютера) командой:

# smbldap-useradd -w machine_name$

Теперь на рабочей станции Windows вызовите контекстное меню значка Мой компьютер и выберите Свойства. В появившемся диалоге выберите вкладку Имя компьютера. Перед вами появится такой диалог:

Изображение:Network-properties.gif

Теперь нажмите кнопку Изменить..., после чего возникнет это окно:

Image:Prop-add.gif

Выберите переключатель домена:, введите имя домена foobar.tld, нажмите ОК. Появится диалог параметров:

Image:Auth-prompt.jpg

Введите имя пользователя Administrator и его пароль (он задавался командой smbpasswd -a root).

Нажмите ОК и перезагрузите рабочую станцию. Сразу после загрузки зарегистрируйтесь в домене под пользователем, которого вы добавили с помощью скрипта smbldap-useradd.