Имеется дерево доменов Active Directory с поддоменами. Необходимо извлечь вложенную зону subdomain1.subdomain2.example.com из домена example.com и создать отдельный DNS домен - subdomain1.subdomain2.example.com
Создаем файл extract-dns-zone.cmd:
set maindomain=example.com
set subdomain=subdomain1.subdomain2
set dcsrv=dc.example.com
del \\%dcsrv%\c$\WINDOWS\system32\dns\%maindomain%.txt
dnscmd %dcsrv% /zoneexport %maindomain% %maindomain%.txt
copy \\%dcsrv%\c$\WINDOWS\system32\dns\template.dns \\%dcsrv%\c$\WINDOWS\system32\dns\%subdomain%.%maindomain%.dns
findstr /i "%subdomain%" \\%dcsrv%\c$\WINDOWS\system32\dns\%maindomain%.txt >> \\%dcsrv%\c$\WINDOWS\system32\dns\%subdomain%.%maindomain%.dns
cscript replace.vbs \\%dcsrv%\c$\WINDOWS\system32\dns\%subdomain%.%maindomain%.dns ".%subdomain% " " "
cscript replace.vbs \\%dcsrv%\c$\WINDOWS\system32\dns\%subdomain%.%maindomain%.dns "%subdomain% " "@ "
dnscmd %dcsrv% /zoneadd %subdomain%.%maindomain% /primary /file %subdomain%.%maindomain%.dns /load
rem psexec.exe \\%dcsrv% dcdiag /test:registerindns /dnsdomain:%subdomain%.%maindomain%.dns
Поскольку в Windows нет штатной команды для замены текста в файле, создадим vbs скрипт replace.vbs:
Const ForReading = 1
Const ForWriting = 2
strFileName = Wscript.Arguments(0)
strOldText = Wscript.Arguments(1)
strNewText = Wscript.Arguments(2)
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile(strFileName, ForReading)
strText = objFile.ReadAll
objFile.Close
strNewText = Replace(strText, strOldText, strNewText)
Set objFile = objFSO.OpenTextFile(strFileName, ForWriting)
objFile.WriteLine strNewText
objFile.Close
Файл extract-dns-zone.cmd импортирует всю зону example.com в файл, копирует шаблон пустой зоны subdomain2.subdomain2.example.com в новый файл и добавляет в него только строки, относящиеся к извлекаемому домену, затем на основе этого файла создает новую зону DNS. После создания зоны необходимо сдклать её интегрированной в AD и включить безопасный обновления. Старую подзону следует удалить и вместо неё создать делегированную зону.
Файл \\dc.example.com\c$\WINDOWS\system32\dns\template.dns:
;
@ IN SOA dc.example.com. hostmaster.example.com. (
2010060200 ; serial number
900 ; refresh
600 ; retry
86400 ; expire
3600 ) ; default TTL
;
; Zone NS records
;
@ NS dc.example.com.
Monday, September 27, 2010
Saturday, September 25, 2010
Заменяем файл-сервер Windows на сервер samba под Ubuntu Linux
Сначала необходимо настроить интеграцию учетных записей linux в домен Active Directory.
Ставим пакеты:
sudo apt-get install winbind krb5-user samba-common-bin
sudo service winbind stop
Создаем файл настройки /etc/samba/smb.conf:
[global]
workgroup = EXAMPLE
server string = %h server
wins server = 172.20.0.97 172.20.0.92
log file = /var/log/samba/%m.log
max log size = 1024
syslog = 0
realm = EXAMPLE.COM
security = ads
idmap backend = hash
idmap uid = 10000-4000000000
idmap gid = 10000-4000000000
winbind nss info = hash
idmap cache time = 1800
winbind refresh tickets = true
winbind cache time = 900
winbind offline logon = true
winbind expand groups = 2
winbind use default domain = No
template homedir = /home/%D/%U
template shell = /bin/bash
kerberos method = secrets and keytab
Добавляем в конце файла /usr/share/pam-configs/winbind
вместо
Session:
optional pam_winbind.so
строки
Session:
optional pam_winbind.so
required pam_mkhomedir.so umask=0022 skel=/etc/skel
Session-Initial:
required pam_mkhomedir.so umask=0022 skel=/etc/skel
Это позволит автоматически создавать каталог администратора, зашедшего на сервер по ssh
Включаем pam модуль:
sudo pam-auth-update
Отмечаем [*] Winbind NT/Active Directory authentication
Заменяем файл /etc/krb5.conf:
[libdefaults]
default_realm = EXAMPLE.COM
default_tgs_enctypes = RC4-HMAC DES-CBC-MD5 DES-CBC-CRC
default_tkt_enctypes = RC4-HMAC DES-CBC-MD5 DES-CBC-CRC
preferred_enctypes = RC4-HMAC DES-CBC-MD5 DES-CBC-CRC
dns_lookup_kdc = true
[realms]
EXAMPLE.COM = {
auth_to_local = RULE:[1:$0\$1](^EXAMPLE\.COM\\.*)s/^EXAMPLE\.COM/EXAMPLE/
auth_to_local = DEFAULT
}
[appdefaults]
pam = {
mappings = EXAMPLE\\(.*) $1@EXAMPLE.COM
forwardable = true
validate = true
}
httpd = {
mappings = EXAMPLE\\(.*) $1@EXAMPLE.COM
reverse_mappings = (.*)@EXAMPLE\.COM EXAMPLE\$1
}
Меняем строки файла /etc/nsswitch.conf:
passwd: compat winbind
group: compat winbind
Включаем в домен:
sudo net ads join -U Administrator
Запускаем winbind
sudo service winbind start
Проверяем работоспособность командой:
id EXAMPLE\\Administrator
При корректной работе будет выведен список групп пользователя EXAMPLE\Administrator.
Добавляем в файл /etc/ssh/ssh_config строки:
GSSAPIAuthentication yes
GSSAPIDelegateCredentials yes
Добавляем в файл /etc/ssh/sshd_config
GSSAPIAuthentication yes
GSSAPICleanupCredentials yes
AllowGroups EXAMPLE\netadmins admin root
Это позволит заходить по ssh на сервер членам группы EXAMPLE\netadmins
Разрешаем группе EXAMPLE\netadmins авторизовываться в правами root:
Через команду
sudo visudo
добавляем строку
%EXAMPLE\\netadmins ALL=(ALL) ALL
Интеграция сервера в домен закончена. Теперь участники группы EXAMPLE\netadmins могут заходить по ssh и пользоваться командой sudo.
Настраиваем файл-сервер samba
Устанавливаем пакеты:
sudo apt-get install samba attr acl
Добавляем в вышеприведенный /etc/samba/smb.conf
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=24576 SO_SNDBUF=24576
load printers = no
printing = bsd
printcap name = /dev/null
disable spoolss = yes
# Enable recycle bin and file acl like on ntfs volume (xfs or ext3/ext4 filesystem needed full acl work only on samba >3.5)
map acl inherit = yes
acl group control = yes
[all]
path = /var/shares/all
read only = no
hide unreadable = no
guest ok = no
veto files = /lost+found/
Создаем файл /etc/samba/recycle.conf
recycle:repository = .Корзина
recycle:keeptree = Yes
recycle:touch = Yes
recycle:versions = Yes
recycle:maxsize = 209715200
recycle:exclude = *.tmp|*.temp|*.o|*.obj|~$*|*.~??|*.TMP
recycle:excludedir = /tmp|/temp|/cache
recycle:noversions = *.doc|*.xls|*.ppt
На сервере отключается поддержка печати и включается расширенная настройка списка доступа на файловой системе, максимально приближеного к NTFS. Поддержка расширенных список доступа и потоков NTFS обеспечивается файловыми системами xfs, ext3, ext4. Монтировать том для ext3/ext4 необходимо с параметром noatime,acl,user_xattr. Для XFS монтировать с параметрами noatime, attr2.
Дополнительно используется vfs-модуль recycle. Он позволяет не удалять файлы а складывать их в каталог .Корзина.
Перенос файлов с Windows сервера.
Для переноса файлов с windows сервера на сервер samba можно использовать утилиту robocopy из Windows Server 2003 Resource Kit Tools
Например, для копирования файлов с сервера srv1 на сервер srv2 выполните команду:
robocopy \\srv1\all \\srv2\all /e /zb /copy:dats /xd DfsrPrivate /purge
На samba сервер нельзя скопировать информацию о владельце файла и протоколе аудита. Поэтому используется параметр /copy:dats. Параметр /xd указывает пропустить каталог DfsrPrivate.
Ставим пакеты:
sudo apt-get install winbind krb5-user samba-common-bin
sudo service winbind stop
Создаем файл настройки /etc/samba/smb.conf:
[global]
workgroup = EXAMPLE
server string = %h server
wins server = 172.20.0.97 172.20.0.92
log file = /var/log/samba/%m.log
max log size = 1024
syslog = 0
realm = EXAMPLE.COM
security = ads
idmap backend = hash
idmap uid = 10000-4000000000
idmap gid = 10000-4000000000
winbind nss info = hash
idmap cache time = 1800
winbind refresh tickets = true
winbind cache time = 900
winbind offline logon = true
winbind expand groups = 2
winbind use default domain = No
template homedir = /home/%D/%U
template shell = /bin/bash
kerberos method = secrets and keytab
Добавляем в конце файла /usr/share/pam-configs/winbind
вместо
Session:
optional pam_winbind.so
строки
Session:
optional pam_winbind.so
required pam_mkhomedir.so umask=0022 skel=/etc/skel
Session-Initial:
required pam_mkhomedir.so umask=0022 skel=/etc/skel
Это позволит автоматически создавать каталог администратора, зашедшего на сервер по ssh
Включаем pam модуль:
sudo pam-auth-update
Отмечаем [*] Winbind NT/Active Directory authentication
Заменяем файл /etc/krb5.conf:
[libdefaults]
default_realm = EXAMPLE.COM
default_tgs_enctypes = RC4-HMAC DES-CBC-MD5 DES-CBC-CRC
default_tkt_enctypes = RC4-HMAC DES-CBC-MD5 DES-CBC-CRC
preferred_enctypes = RC4-HMAC DES-CBC-MD5 DES-CBC-CRC
dns_lookup_kdc = true
[realms]
EXAMPLE.COM = {
auth_to_local = RULE:[1:$0\$1](^EXAMPLE\.COM\\.*)s/^EXAMPLE\.COM/EXAMPLE/
auth_to_local = DEFAULT
}
[appdefaults]
pam = {
mappings = EXAMPLE\\(.*) $1@EXAMPLE.COM
forwardable = true
validate = true
}
httpd = {
mappings = EXAMPLE\\(.*) $1@EXAMPLE.COM
reverse_mappings = (.*)@EXAMPLE\.COM EXAMPLE\$1
}
Меняем строки файла /etc/nsswitch.conf:
passwd: compat winbind
group: compat winbind
Включаем в домен:
sudo net ads join -U Administrator
Запускаем winbind
sudo service winbind start
Проверяем работоспособность командой:
id EXAMPLE\\Administrator
При корректной работе будет выведен список групп пользователя EXAMPLE\Administrator.
Добавляем в файл /etc/ssh/ssh_config строки:
GSSAPIAuthentication yes
GSSAPIDelegateCredentials yes
Добавляем в файл /etc/ssh/sshd_config
GSSAPIAuthentication yes
GSSAPICleanupCredentials yes
AllowGroups EXAMPLE\netadmins admin root
Это позволит заходить по ssh на сервер членам группы EXAMPLE\netadmins
Разрешаем группе EXAMPLE\netadmins авторизовываться в правами root:
Через команду
sudo visudo
добавляем строку
%EXAMPLE\\netadmins ALL=(ALL) ALL
Интеграция сервера в домен закончена. Теперь участники группы EXAMPLE\netadmins могут заходить по ssh и пользоваться командой sudo.
Настраиваем файл-сервер samba
Устанавливаем пакеты:
sudo apt-get install samba attr acl
Добавляем в вышеприведенный /etc/samba/smb.conf
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=24576 SO_SNDBUF=24576
load printers = no
printing = bsd
printcap name = /dev/null
disable spoolss = yes
# Enable recycle bin and file acl like on ntfs volume (xfs or ext3/ext4 filesystem needed full acl work only on samba >3.5)
map acl inherit = yes
acl group control = yes
[all]
path = /var/shares/all
read only = no
hide unreadable = no
vfs objects = recycle acl_xattr streams_xattr
inherit acls = yes
include = /etc/samba/recycle.confguest ok = no
veto files = /lost+found/
Создаем файл /etc/samba/recycle.conf
recycle:repository = .Корзина
recycle:keeptree = Yes
recycle:touch = Yes
recycle:versions = Yes
recycle:maxsize = 209715200
recycle:exclude = *.tmp|*.temp|*.o|*.obj|~$*|*.~??|*.TMP
recycle:excludedir = /tmp|/temp|/cache
recycle:noversions = *.doc|*.xls|*.ppt
На сервере отключается поддержка печати и включается расширенная настройка списка доступа на файловой системе, максимально приближеного к NTFS. Поддержка расширенных список доступа и потоков NTFS обеспечивается файловыми системами xfs, ext3, ext4. Монтировать том для ext3/ext4 необходимо с параметром noatime,acl,user_xattr. Для XFS монтировать с параметрами noatime, attr2.
Дополнительно используется vfs-модуль recycle. Он позволяет не удалять файлы а складывать их в каталог .Корзина.
Перенос файлов с Windows сервера.
Для переноса файлов с windows сервера на сервер samba можно использовать утилиту robocopy из Windows Server 2003 Resource Kit Tools
Например, для копирования файлов с сервера srv1 на сервер srv2 выполните команду:
robocopy \\srv1\all \\srv2\all /e /zb /copy:dats /xd DfsrPrivate /purge
На samba сервер нельзя скопировать информацию о владельце файла и протоколе аудита. Поэтому используется параметр /copy:dats. Параметр /xd указывает пропустить каталог DfsrPrivate.
Доступ к файловым ресурсам Windows с Linux при помощи autofs
Для доступа к файловым ресурсам Windows будем использовать autofs.
Необходимо установить пакеты autofs и smbclient
# apt-get install autofs smbclient
Создаем следующие файлы:
/etc/auto.master:
/var/autofs/cifs /etc/auto.cifs.top
/etc/auto.cifs.top:
* -fstype=autofs,-Dhost=& file:/etc/auto.cifs.sub
/etc/auto.cifs.sub:
* -fstype=cifs,credentials=/home/user1/domain-user.psw,uid=user1,codepage=866,iocharset=utf8 ://${host}/&
В последнем файле мы указываем параметры монтирования smb ресурса. В данном примере в файле /home/user1/domain-user.pws задана учетная запись для подключения к windows компьютерам.
/home/user1/domain-user.psw:
username=user1
password=user1pasword
domain=EXAMPLE
Создаем каталог куда будут монтироваться smb ресурсы.
# mkdir /var/autofs/cifs
# chown user1 /var/autofs/cifs
Перезапускаем autofs
# service autofs restart
Теперь мы можем подключать любой windows ресурс просто обратившись к папке /var/autofs/cifs/{имя сервера}/{имя шары}, например
# ls /var/autofs/vifs/fileserv1/share1
Необходимо установить пакеты autofs и smbclient
# apt-get install autofs smbclient
Создаем следующие файлы:
/etc/auto.master:
/var/autofs/cifs /etc/auto.cifs.top
/etc/auto.cifs.top:
* -fstype=autofs,-Dhost=& file:/etc/auto.cifs.sub
/etc/auto.cifs.sub:
* -fstype=cifs,credentials=/home/user1/domain-user.psw,uid=user1,codepage=866,iocharset=utf8 ://${host}/&
В последнем файле мы указываем параметры монтирования smb ресурса. В данном примере в файле /home/user1/domain-user.pws задана учетная запись для подключения к windows компьютерам.
/home/user1/domain-user.psw:
username=user1
password=user1pasword
domain=EXAMPLE
Создаем каталог куда будут монтироваться smb ресурсы.
# mkdir /var/autofs/cifs
# chown user1 /var/autofs/cifs
Перезапускаем autofs
# service autofs restart
Теперь мы можем подключать любой windows ресурс просто обратившись к папке /var/autofs/cifs/{имя сервера}/{имя шары}, например
# ls /var/autofs/vifs/fileserv1/share1
Subscribe to:
Posts (Atom)