Linux İşletim Sistemlerinde Birincil Etki Alanı Sunucu Yapılandırması (Samba Domain Controller)

LinuxAllBu makalemizde “Linux İşletim Sistemlerinde Birincil Etki Alanı Sunucu Yapılandırması (Samba Domain Controller)” konusunu inceleyeceğiz. Kurulum işlemimizi “CentOS Linux 6.4 İşletim Sistemi” üzerinde gerçekleştireceğiz. Kurulum adımları Red Hat türevi işletim sistemleri ile oldukça benzerdir.

Samba Nedir ?

Samba, Linux/Unix işletim sistemleri ile Windows işletim sistemleri arasındaki iletişim kuran bir ağ sunucusu yazılımıdır. Linux’ta arka planda çalışan bu Deamon Windows istemcilerinin samba kurulu olan sunucuda paylaşıma açılmış dosya ve dizinlere ulaşılmasına olanak tanır bunun yanında istemcilerin yazıcı isteklerinide yönetebilir. Tam olarak Samba yapılandırılmış bir Linux sunucusu, genel olarak dizinleri paylaştırabilir, aktif dizin servisi (ADS – Active Directory Services) verebilir ayrıca PDC (Birincil Alan Denetleyicisi) olarak da çalışabilir, Windows istemcileri ile kullanıcı onayı yapar, kaynakları (dizinleri ve yazıcıları) paylaştırır ve kullanıcı oturumlarını uyarlar. Samba Windows istemcileri (clients) için dosya, yazıcı servisi sağlamanın dışında istemciler için işlevsellik ve yardımcı uygulamalar içerir.

Samba Sunucusunun Yapabildikleri

1. Öncelikle sunucumuza işletim sistemini “CentOS Linux İşletim Sistemi Kurulumu” makalemizde anlatıldığı gibi kuruyoruz. Kurulum işlemlerini “Red Hat Linux” veya “Oracle Linux” işletim sistemlerinde de yapabiliriz. Ayrıca Sunucumuzda “Firewall” ve “SELinux” servislerimizi devre dışı bırakıyoruz. Eğer “Firewall” servisimiz aktif olacaksa servislerimizin kullanacağı portlara izin vermemiz gerekiyor.

# vim /etc/selinux/config
-- Dosyasını açıyoruz ve aşağıdaki satırı "disabled" olarak ayarlıyoruz.

SELINUX=disabled

-- Firewall servisimizi durdurup kapatıyoruz.

# service iptables stop
# chkconfig iptables off

Eğer sistemimizde “firewall” servisi etkin olacaksa “Samba Etki Alanı Denetleyicisi”nin doğru çalışabilmesi için aşağıdaki portlara izin verilmelidir.

DNS		: Port 53 (both TCP and UDP) 
Multicast DNS	: Port 5353 (both TCP and UDP) 
Samba/smbd	: UDP ports 137 - 138, TCP ports 139 and 445 
EPMMAP		: TCP port 135 
LDAP		: TCP ports 389 and 636, UDP port 389 
Kerberos		: Ports 88 and 464 (both TCP and UDP) 
Directory Sync	: TCP port 1024

2. Sunucumuza sabit bir IP Adresi atıyoruz. Ayrıca Hosts dosyasında gerekli düzenlemeleri yapıyoruz. IP Adresi vb. atama işlemlerini aşağıdaki gibi komut satırından veya grafik arayüz (gui) yardımı ile yapabiliriz.

-- Sunucumuza sabit (static) IP adresi atıyoruz.

# vim /etc/sysconfig/network-scripts/ifcfg-eth0

dosyasını açıyoruz ve aşağıdaki parametreleri kendi sistemimize göre düzenliyoruz.

IPADDR=192.168.2.121
PREFIX=24
GATEWAY=192.168.2.1
DNS1=192.168.2.121
DOMAIN=koraykey.net
DEFROUTE=yes
ONBOOT=yes

-- Sunucumuzda DNS ve Domain ayarlarımızı düzenliyoruz.

# vim /etc/resolv.conf

search koraykey.net
nameserver 192.168.2.121

-- Heriki yerde DNS sunucumuzu aynı sunucu üzerinde yapılandıracağımız için
bu adresi yazdık.

-- Sunucumuzda host ismimizi kontrol ediyoruz ve aşağıdaki gibi QFDN ismi ile
düzenliyoruz. Ayrıca varsayılan ağ geçidimizide burada doğru olduğunu kontrol
ediyoruz.

# vim /etc/sysconfig/network

NETWORKING=yes
HOSTNAME=koraykey-pdc.koraykey.net
GATEWAY=192.168.2.1

-- Sunucumuzda "hosts" dosyasını aşağıdaki gibi kendi sistemimize göre düzenliyoruz.

127.0.0.1   	localhost.koraykey.net        localhost
192.168.2.121   	koraykey-pdc.koraykey.net     koraykey-pdc

-- Sistemimizde sanallaştırma ile ilgili bir sanal ağ kartı aktifse bunu
kapatıyoruz. Kapatmazsak "samba" iki adet ağ kartı görerek bind ediyor ve
sorun çıkarabiliyor.

# ifconfig

virbr0    Link encap:Ethernet  HWaddr 52:54:00:DC:BF:EB  
          inet addr:192.168.122.1  Bcast:192.168.122.255  Mask:255.255.255.0
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

-- Yukarıdaki gibi "virbr0" ağ kartı aktifse kapatmak için aşağıdaki komutları
uyguluyoruz. Kurulum sonrası gerekiyorsa açılabilir.

# virsh net-destroy default
# virsh net-undefine default
# service libvirtd restart

-- Kapandığını teyid etmek için aşağıdaki komutu çalıştırdığımızda artık
görülmeyecektir.

# ifconfig

3. Sunucumuzda paket kurulumlarını yapabilmek için “yum repository” erişimi ve internete çıkabiliyor olması gerekmektedir. Sunucularımız direk olarak değilde bir proxy sunucu aracılığı ile internete çıkıyorsa “Linux İşletim Sistemlerinde Yum Repository için Proxy Yapılandırması” makalemizi inceleyebilirsiniz.

4. Sunucumuzda “samba4” için disklerimizde “acl” ve “user_xattr” ayarlarını yapıyoruz. Bu ayarlar “samba4” kurulumu için gerekli ayarlardır.

-- Sunucumuzda bulunan "/etc/fstab" dosyamızı açarak "/" (root)
diskimizde gerekli ayarları yapıyoruz. "fstab" dosyamızdaki
ayarları yaparken dikkatli olmamız gerekiyor aksi takdirde
sistemimiz açılmayabilir. Böyle bir durumla karşılaşırsak
kurulum dvd'mizden "boot" işlemi yaparak "rescue" modda açıp 
"fstab" dosyamızı düzelterek sistemimizi kurtarabiliriz.
Burada yapacağımız işlem "defaults" değişkenini aşağıdaki gibi
düzenlemek olacaktır.

# vim /etc/fstab

/dev/mapper/vg_koraykey-lv_root /    ext4    defaults,user_xattr,acl,barrier=1 1 1

5. Sunucumuzda mevcut “samba” paketleri varsa bunları kaldırıyoruz. Kurulum işlemimizi “samba4” üzerinde yapacağımız için mevcut paketleri kaldırıyoruz ve işletim sistemimizi güncelledikten sonra kurmamız gereken paketlerimizi kuruyoruz.

-- Aşağıdaki işlemler internet ve sunucu hızınıza göre biraz vakit alacaktır.

-- Sistemimizde mevcut ve eski versiyon "samba" ve "bind" paketlerimizi
kaldırıyoruz.

# yum -y remove samba* bind

-- İşletim sistemimizi güncelliyoruz.

# yum -y update

-- Kimlik doğrulama, samba kurulumu vb. için gerekli işletim sistemi paketlerimizi
kuruyoruz. Yaklaşık 107 paket kurulacaktır.

# yum -y install glibc* gcc* python* libacl* libpcap* krb5* git-core dhcp ntp

-- Sistemimizde samba ile ilgili bir paket kalıp kalmadığını kontrol ediyoruz.
Sistemimizde "samba" ile ilgili bir paket kalmamalıdır. Aksi takdirde çakışma
olacak ve çalışmayacaktır.

# rpm -qa | grep samba

-- Sistemimize Samba4 paketini "/u01/samba-master" altına derlemek üzere
indiriyoruz.

# git clone git://git.samba.org/samba.git /u01/samba-master

-- Öncelikle derleyeceğimiz paketimizde bir güncelleme varmı onu kontrol ediyoruz.

# cd /u01/samba-master
# git pull

-- DNS (Bind) hizmeti için gerekli paketimizi "/u01/bind9" altına derlemek üzere
indiriyoruz. Bind paketimizi kesinlikle "yum install" komutları veya "rpm" paketi
ile kurmuyoruz. Aksi takdirde DDNS (Dynamic DNS) güncellemeleri çalışmayacaktır.
Etki alanımıza bir istemci bilgisayar eklediğimizde otomatik DNS kayıtları
oluşmayacaktır ve log'larda aşağıdaki gibi hatalar verecektir.

samba_dlz: starting transaction on zone example.com
client 192.168.2.130#62812: update 'example.com/IN' denied
samba_dlz: cancelling transaction on zone example.com

# mkdir -p /u01/bind9
# cd /u01/bind9
# wget ftp://ftp.isc.org/isc/bind9/9.9.4-P1/bind-9.9.4-P1.tar.gz
# tar -zxvf bind-9.9.4-P1.tar.gz

-- Derleme işlemine geçmeden önce sistemimizi yeniden başlatıyoruz.

# shutdown -r now

6. Sunucumuzda “samba4” paketimizin derleme ve kurulum işlemlerini yapıyoruz.

-- Samba4 paketimizi derliyoruz. Aşağıdaki işlemler biraz vakit alabilir.
Yaklaşık 3942 + 4252 paket derleyecektir.

-- Samba paketimizi derleme ve kurulum işlemenine başlıyoruz.

# cd /u01/samba-master
# ./configure
# make
# make install

-- Bind (DNS) paketimizi derleme ve kurulum işlemine başlıyoruz.

# cd /u01/bind9/bind-9.9.4-P1
# ./configure --with-gssapi=/usr/include/gssapi --with-dlopen=yes
# make
# make install

# groupadd -g 25 named
# useradd -g named -u 25 -d /var/named -M -s /sbin/nologin named
# chown root:daemon /var/run
# chmod 775 /var/run
# mkdir -p /var/named/dynamic
# mkdir -p /var/named/data
# mkdir -p /var/named/master
# touch /etc/named.conf
# touch /var/named/named.root
# chown -R named:named /var/named
# chown named:named /etc/named.conf
# chmod -R 755 /var/named

-- Bu işlemlerden sonra samba komutlarını sistemimizde direk kullanabilmek için
".bash_profile" dosyamızda "path" tanımlamamızı yapıyoruz. Aşağıdaki "path"
değişkenini dosyada bulunan mevcut değişkenle değiştirebiliriz.

# cd

# vim .bash_profile

PATH=$PATH:$HOME/bin:/usr/local/samba/bin:/usr/local/samba/sbin

-- Yapılandırmaya geçmeden sistemimizi yeniden başlatıyoruz. 

# shutdown -r now

7. Sunucumuzda “samba4” aracılığı ile etki alanı (domain) kurulumuna  başlıyoruz.

-- Etki alanı kurulum işlemine başlıyoruz. Seçenekleri dikkatli girmeliyiz.
geri alamıyoruz. Bir değeri yanlış girdiysek yeniden başlamak için "ctrl+c" ile
işlemi kesmeliyiz. Ayrıca parola atarken karmaşık olması zorunluluğu vardır.
En azından bir harfi büyük olacak şekilde atamalıyız. Bu işlemleri doğru yapmazsak
kurulum işlemi hata verecektir. Samba kurulacak sunucu ile Bind (DNS) servisinin
aynı sunucuda olması zorunludur.

# samba-tool domain provision

Realm [KORAYKEY.NET]: KORAYKEY.NET
Domain [KORAYKEY]: KORAYKEY
Server Role (dc, member, standalone) [dc]: dc
DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INT]: BIND9_DLZ
Administrator password: Password100
Retype password: Password100
Looking up IPv4 addresses
Looking up IPv6 addresses
No IPv6 address will be assigned
Setting up share.ldb
Setting up secrets.ldb
Setting up the registry
Setting up the privileges database
Setting up idmap db
Setting up SAM db
Setting up sam.ldb partitions and settings
Setting up sam.ldb rootDSE
Pre-loading the Samba 4 and AD schema
Adding DomainDN: DC=koraykey,DC=net
Adding configuration container
Setting up sam.ldb schema
Setting up sam.ldb configuration data
Setting up display specifiers
Modifying display specifiers
Adding users container
Modifying users container
Adding computers container
Modifying computers container
Setting up sam.ldb data
Setting up well known security principals
Setting up sam.ldb users and groups
Setting up self join
Adding DNS accounts
Creating CN=MicrosoftDNS,CN=System,DC=koraykey,DC=net
Creating DomainDnsZones and ForestDnsZones partitions
Populating DomainDnsZones and ForestDnsZones partitions
See /usr/local/samba/private/named.conf for an example configuration include 
file for BIND
and /usr/local/samba/private/named.txt for further documentation required for
secure DNS updates
Setting up sam.ldb rootDSE marking as synchronized
Fixing provision GUIDs
A Kerberos configuration suitable for Samba 4 has been generated at
/usr/local/samba/private/krb5.conf
Once the above files are installed, your Samba4 server will be ready to use
Server Role:           active directory domain controller
Hostname:              koraykey-pdc
NetBIOS Domain:        KORAYKEY
DNS Domain:            koraykey.net
DOMAIN SID:            S-1-5-21-354508688-3167613570-812071699

-- Kerberos kimlik doğrulama sistemi yapılandırma dosyasını samba dizininden
kopyalıyoruz.

-- Mevcut dosyanın yedeğini alıyoruz.

# mv /etc/krb5.conf /etc/krb5.conf.bak

-- Kerberos yapılandırma dosyasını kopyalıyoruz 

# cp -pr /usr/local/samba/private/krb5.conf /etc/krb5.conf

-- Bind (DNS) Samba servis entegrasyonumuz için gerekli izinleri veriyoruz.

# chgrp named /usr/local/samba/private/dns.keytab
# chmod g+r /usr/local/samba/private/dns.keytab
# chmod g+r /etc/krb5.conf

8. Sunucumuzda Bind (DNS) servisimizi yapılandırıyoruz. Bu işlemler çok önemlidir eğer Bind (DNS) servisimiz düzgün çalışmazsa özellikle kerberos kimlik doğrulama sistemimiz doğru çalışmayacaktır. Yapılandırmamızı aşağıdaki örnek dosyadaki gibi çok dikkatli bir şekilde yapıyoruz. Aksi takdirde “samba” sunucumuz çalışmayacaktır. Bind (DNS) sunucumuzu yapılandırırken “zone” dosyası vb. oluşturmayacağız. Bu işlemi “samba” kurulumda otomatik oluşturacak biz sadece bir kaç değişkeni ve “reverse zone” dosyamızı oluşturup sonradan ekleyeceğiz.

-- Sistemimizde varsa "bind chroot" sistemini devre dışı bırakmamız gerekiyor.
Aksi takdirde "samba" çalışmayacaktır. Bizim yukarıdaki kurulumumuzda bulunmuyor.
Bundan dolayı bu adımı atlayabiliriz.

# vim /etc/sysconfig/named

NAMED_RUN_CHROOTED="no"

-- Bu ayarı yapmazsak "bind" servisimizi başlatırken aşağıdaki gibi hata alırız.

Error in named configuration:
/etc/named.conf:45: open: /usr/local/samba/private/named.conf: file not found
[FAILED]
umount: /var/named/chroot/var/named: device is busy.
        (In some cases useful info about processes that use
         the device is found by lsof(8) or fuser(1))

-- Bind (DNS) yapılandırmamızı aşağıdaki gibi yapıyoruz.

# vim /etc/named.conf

//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(9) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//

options {
        listen-on port 53 { 127.0.0.1; 192.168.2.121; };
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        tkey-gssapi-keytab "/usr/local/samba/private/dns.keytab";
        forwarders    { 8.8.8.8; 8.8.4.4; };
        allow-query    { any; };
        empty-zones-enable no;
        recursion yes;
        auth-nxdomain yes;

};

# Root servers (required zone for recursive queries)
zone "." {
       type hint;
       file "named.root";
};

include "/usr/local/samba/private/named.conf";

-- Forward Zone dosyamızı samba kurulumda otomatik oluşturdu biz sadece
"reverse zone" dosyamızı oluşturuyoruz. Eğer bizde "forward zone" oluşturursak
"bind" servisimiz hata verecek ve başlamayacaktır.

-- Reverse Zone dosyamızı kurulum işlemi bittikten sonra Windows yönetim araçları
ile kuracağız. Makalemizin 18. adımında bu işlemler anlatılıyor.

-- (Bind) Dns sunucumuzun versiyonunu kontrol ediyoruz.

# named -V
BIND 9.9.3-P1 (Extended Support Version)
built with '--with-gssapi=/usr/include/gssapi' '--with-dlopen=yes'
using OpenSSL version: OpenSSL 1.0.0 29 Mar 2010
using libxml2 version: 2.7.6

-- Bind versiyonumuz 9.9.x olduğu için aşağıdaki dosyamızı buna göre düzenliyoruz.

# vim /usr/local/samba/private/named.conf

dlz "AD DNS Zone" {
    # For BIND 9.8.0
    # database "dlopen /usr/local/samba/lib/bind9/dlz_bind9.so";

    # For BIND 9.9.0
    database "dlopen /usr/local/samba/lib/bind9/dlz_bind9_9.so";
};

-- Bind (DNS) için "root dns" dosyamızı aşağıdaki gibi düzenliyoruz.

# vim /var/named/named.root

;       This file holds the information on root name servers needed to
;       initialize cache of Internet domain name servers
;       (e.g. reference this file in the "cache  .  <file>"
;       configuration file of BIND domain name servers).
;
;       This file is made available by InterNIC 
;       under anonymous FTP as
;           file                /domain/named.cache
;           on server           FTP.INTERNIC.NET
;       -OR-                    RS.INTERNIC.NET
;
;       last update:    Jan 3, 2013
;       related version of root zone:   2013010300
;
; formerly NS.INTERNIC.NET
;
.                        3600000  IN  NS    A.ROOT-SERVERS.NET.
A.ROOT-SERVERS.NET.      3600000      A     198.41.0.4
A.ROOT-SERVERS.NET.      3600000      AAAA  2001:503:BA3E::2:30
;
; FORMERLY NS1.ISI.EDU
;
.                        3600000      NS    B.ROOT-SERVERS.NET.
B.ROOT-SERVERS.NET.      3600000      A     192.228.79.201
;
; FORMERLY C.PSI.NET
;
.                        3600000      NS    C.ROOT-SERVERS.NET.
C.ROOT-SERVERS.NET.      3600000      A     192.33.4.12
;
; FORMERLY TERP.UMD.EDU
;
.                        3600000      NS    D.ROOT-SERVERS.NET.
D.ROOT-SERVERS.NET.      3600000      A     199.7.91.13
D.ROOT-SERVERS.NET.     3600000      AAAA  2001:500:2D::D
;
; FORMERLY NS.NASA.GOV
;
.                        3600000      NS    E.ROOT-SERVERS.NET.
E.ROOT-SERVERS.NET.      3600000      A     192.203.230.10
;
; FORMERLY NS.ISC.ORG
;
.                        3600000      NS    F.ROOT-SERVERS.NET.
F.ROOT-SERVERS.NET.      3600000      A     192.5.5.241
F.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:2F::F
;
; FORMERLY NS.NIC.DDN.MIL
;
.                        3600000      NS    G.ROOT-SERVERS.NET.
G.ROOT-SERVERS.NET.      3600000      A     192.112.36.4
;
; FORMERLY AOS.ARL.ARMY.MIL
;
.                        3600000      NS    H.ROOT-SERVERS.NET.
H.ROOT-SERVERS.NET.      3600000      A     128.63.2.53
H.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:1::803F:235
;
; FORMERLY NIC.NORDU.NET
;
.                        3600000      NS    I.ROOT-SERVERS.NET.
I.ROOT-SERVERS.NET.      3600000      A     192.36.148.17
I.ROOT-SERVERS.NET.      3600000      AAAA  2001:7FE::53
;
; OPERATED BY VERISIGN, INC.
;
.                        3600000      NS    J.ROOT-SERVERS.NET.
J.ROOT-SERVERS.NET.      3600000      A     192.58.128.30
J.ROOT-SERVERS.NET.      3600000      AAAA  2001:503:C27::2:30
;
; OPERATED BY RIPE NCC
;
.                        3600000      NS    K.ROOT-SERVERS.NET.
K.ROOT-SERVERS.NET.      3600000      A     193.0.14.129
K.ROOT-SERVERS.NET.      3600000      AAAA  2001:7FD::1
;
; OPERATED BY ICANN
;
.                        3600000      NS    L.ROOT-SERVERS.NET.
L.ROOT-SERVERS.NET.      3600000      A     199.7.83.42
L.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:3::42
;
; OPERATED BY WIDE
;
.                        3600000      NS    M.ROOT-SERVERS.NET.
M.ROOT-SERVERS.NET.      3600000      A     202.12.27.33
M.ROOT-SERVERS.NET.      3600000      AAAA  2001:DC3::35
; End of File

-- Secure DNS için "rndc.key" dosyamızı oluşturuyoruz.

# rndc-confgen -a

-- Bind (DNS) uygulamamızı başlatıyoruz ve testlerimizi yapıyoruz.

# named -u named

-- Bind servisimizin ayarlarını kontrol ediyoruz.

# nslookup google.com
Server:         192.168.2.121
Address:        192.168.2.121#53

Non-authoritative answer:
Name:   google.com
Address: 173.194.112.71
...

# nslookup koraykey-pdc.koraykey.net
Server:         192.168.2.121
Address:        192.168.2.121#53

Name:   koraykey-pdc.koraykey.net
Address: 192.168.2.121
Name:   koraykey-pdc.koraykey.net
Address: 192.168.122.1

-- "root dns" sunucularımızı arada güncelleyebiliriz. Bunun için aşağıdaki
komutları çalıştırmamız yeterlidir.

# wget -q -O /var/named/named.root http://www.internic.net/zones/named.root
# chown named:named /var/named/named.root

-- Bind (DNS) zone kayıtları "samba" tarafından yönetildiği için bir DNS kaydı
eklemek veya çıkartmak istediğimizde aşağıdaki komutları kullanabiliriz.
Bu işlemleri daha sonra Windows Yönetim araçları (DNS) gui arayüzdende yapabiliriz.

-- Kayıt eklemek için

# samba-tool dns add <server> <zone> <name> <A|AAAA|PTR|CNAME|NS|MX|SRV> <data>

-- Kayıt çıkartmak için

# samba-tool dns delete <server> <zone> <name> <A|AAAA|PTR|CNAME|NS|MX|SRV> <data>

-- Örnek kayıt ekleme komutu

# samba-tool dns add koraykey-pdc koraykey.net gateway.koraykey.net A 192.168.2.1
Password for [administrator@KORAYKEY.NET]:
Record added successfully

# nslookup gateway.koraykey.net
Server:         192.168.2.121
Address:        192.168.2.121#53

Name:   gateway.koraykey.net
Address: 192.168.2.1

-- Örnek kayıt çıkartma komutu

# samba-tool dns delete koraykey-pdc koraykey.net gateway.koraykey.net A 192.168.2.1
Record deleted successfully

-- Diğer Samba Tool DNS komutlarını görmek için

# samba-tool dns

Usage: samba-tool dns <subcommand>

Domain Name Service (DNS) management.

Options:
  -h, --help  show this help message and exit

Available subcommands:
  add         - Add a DNS record
  delete      - Delete a DNS record
  query       - Query a name.
  roothints   - Query root hints.
  serverinfo  - Query for Server information.
  update      - Update a DNS record
  zonecreate  - Create a zone.
  zonedelete  - Delete a zone.
  zoneinfo    - Query for zone information.
  zonelist    - Query for zones.

9. Samba Etki Alanı Denetleyicimizin ve Bind (DNS) servisimizin sistemimiz açıldığında otomatik başlaması için servis oluşturmamız gerekiyor. Servislerimizi oluşturup sistemimiz açıldığında otomatik başlaması için gerekli ayaları yapıyoruz.

-- Samba servisimiz için dosyamızı oluşturuyoruz ve aşağıdaki içeriği kopyalıyoruz.

# vim /etc/init.d/samba

 #! /bin/bash
 #
 # samba4       Bring up/down samba4 service 
 #
 # chkconfig: - 90 10
 # description: Activates/Deactivates all samba4 interfaces configured to \
 #              start at boot time.
 #
 ### BEGIN INIT INFO
 # Provides: 
 # Should-Start: 
 # Short-Description: Bring up/down samba4
 # Description: Bring up/down samba4
 ### END INIT INFO
 # Source function library.
 . /etc/init.d/functions

 if [ -f /etc/sysconfig/samba4 ]; then
 	. /etc/sysconfig/samba4
 fi

 CWD=$(pwd)
 prog="samba4"

 start() {
       # Attach irda device 
       echo -n $"Starting $prog: "
 	/usr/local/samba/sbin/samba
 	sleep 2
 	if ps ax | grep -v "grep" | grep -q /samba/sbin/samba ; then success $"samba4 startup"; else failure $"samba4 startup"; fi
       echo
 }
 stop() {
       # Stop service.
       echo -n $"Shutting down $prog: "
 	killall samba
 	sleep 2
 	if ps ax | grep -v "grep" | grep -q /samba/sbin/samba ; then failure $"samba4 shutdown"; else success $"samba4 shutdown"; fi
       echo
 }
 status() {
 	/usr/local/samba/sbin/samba --show-build
 }

 # See how we were called.
 case "$1" in
 start)
 	start
       ;;
 stop)
 	stop
       ;;
 status)
 	status irattach
 	;;
 restart|reload)
 	stop
 	start
 	;;
 *)
       echo $"Usage: $0 {start|stop|restart|status}"
       exit 1
 esac

 exit 0

-- Bind (DNS) servisimiz için dosyamızı oluşturuyoruz ve aşağıdaki içeriği
kopyalıyoruz.

# vim /etc/init.d/named

#!/bin/sh
#
# named This shell script takes care of starting and stopping
# named (BIND DNS server).
#
# chkconfig: 345 55 45
# description: named (BIND) is a Domain Name Server (DNS) \
# that is used to resolve host names to IP addresses.
# probe: true
#
# Source function library.
. /etc/rc.d/init.d/functions
#
# Source networking configuration.
. /etc/sysconfig/network
#
# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0
#
[ -f /usr/local/sbin/named ] || exit 0
[ -f /etc/named.conf ] || exit 0
#
# See how we were called.
case "$1" in
        start)
                # Start daemons.
                echo -n "Starting named: "
                daemon /usr/local/sbin/named -u named -c /etc/named.conf
                echo
                touch /var/lock/subsys/named
                ;;

        stop)
                # Stop daemons.
                echo -n "Shutting down named: "
                kill `pidof named`
                echo
                rm -f /var/lock/subsys/named
                ;;

        status)
                status named
                exit $?
                ;;

        restart)
                $0 stop
                $0 start
                exit $?
                ;;

        reload)
                /usr/local/sbin/rndc reload
                exit $?
                ;;

        probe)
                # named knows how to reload intelligently; we don't want linuxconf
                # to offer to restart every time
                /usr/local/sbin/rndc reload >/dev/null 2>&1 || echo start
                exit 0
                ;;
        #

        *)
                echo "Usage: named {start|stop|status|restart|reload}"
                exit 1
esac
#
exit 0

-- Servislerimizin çalışması için gerekli izinleri veriyoruz.

# chmod 750 /etc/init.d/samba
# chmod 750 /etc/init.d/named

-- Servislerimizi sisteme ekliyoruz.

# chkconfig --add samba
# chkconfig --add named

-- Servislerimizi sunucumuz açılırken otomatik başlayacak şekilde
ayarlıyoruz.

# chkconfig samba on
# chkconfig named on

-- Sistemimizi yeniden başlatıp ayarları test ediyoruz.

# shutdown -r now

10. Samba Etki Alanı Denetleyicisi yapılandırma işlemlerimiz tamamlandı. Sistemimizin doğru çalıştığını aşağıdaki komutlarla test edebiliriz.

-- Aşağıdaki gibi çıktılar alıyorsak sistemimiz çalışıyor demektir.

# smbclient -L localhost -U%
Domain=[KORAYKEY] OS=[Unix] Server=[Samba 4.1.0pre1-GIT-7f760ed]

        Sharename       Type      Comment
        ---------       ----      -------
        netlogon        Disk      
        sysvol          Disk      
        IPC$            IPC       IPC Service (Samba 4.1.0pre1-GIT-7f760ed)
Domain=[KORAYKEY] OS=[Unix] Server=[Samba 4.1.0pre1-GIT-7f760ed]

        Server               Comment
        ---------            -------

        Workgroup            Master
        ---------            -------

# host -t SRV _ldap._tcp.koraykey.net

_ldap._tcp.koraykey.net has SRV record 0 100 389 koraykey-pdc.koraykey.net.

# host -t SRV _kerberos._udp.koraykey.net

_kerberos._udp.koraykey.net has SRV record 0 100 88 koraykey-pdc.koraykey.net.

# host -t A koraykey-pdc.koraykey.net

koraykey-pdc.koraykey.net has address 192.168.122.1

# kinit administrator@KORAYKEY.NET
Password for administrator@KORAYKEY.NET: **********
Warning: Your password will expire in 41 days on Wed Jul 31 14:57:53 2013

# samba_dnsupdate --verbose --all-names
...

11. Sunucumuzu aynı zamanda NTP (Zaman) Server olarak ayarlıyoruz. Bu sayede etki alanına üye olacak kullanıcıların zaman senkronizasyonu yapılmış olacaktır.

-- NTP yapılandırma dosyamızı açıyoruz ve aşağıdaki bulunan satırların altına
etki alanı zaman yapılandırmamızı ekliyoruz.

# vim /etc/ntp.conf

# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
server 0.rhel.pool.ntp.org
server 1.rhel.pool.ntp.org
server 2.rhel.pool.ntp.org

# Samba Time Server
server 	127.127.1.0
fudge 	127.127.1.0  stratum 12
ntpsigndsocket /usr/local/samba/var/lib/ntp_signd/
restrict default mssntp

-- Değişikliklerin geçerli olması için NTP servisimizi yeniden başlatıyoruz.

# service ntpd restart

-- Ayarlarımızı test etmek için

# ntpq -np
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 95.211.7.153    103.52.146.131   2 u    2   64    1   65.377    7.432   0.000
 148.240.19.26   200.23.51.102    2 u    1   64    1  222.620   11.426   0.000
 131.211.8.244   .PPS.            1 u    -   64    1   71.908   11.379   0.000
 127.127.1.0     .LOCL.          12 l    -   64    0    0.000    0.000   0.000

12. Sunucumuzda aynı zamanda otomatik IP dağıtımı yapacaksak DHCP servisimizi kurmamız gerekiyor. Bunun için aşağıdaki ayarları sistemimizde yapıyoruz.

-- Sunucumuzda “DHCP Server” yapılandırma için kullanacağımız “/etc/dhcp/dhcpd.conf”
dosyasında dağıtacağı IP aralığına göre aşağıdaki örnekte olduğu gibi düzenliyoruz.

# vim /etc/dhcp/dhcpd.conf

Allow booting;
Allow bootp;
Allow client-updates;
authoritative;

subnet 192.168.2.0 netmask 255.255.255.0 {
  option routers               192.168.2.1;
  option subnet-mask           255.255.255.0;
  option ntp-servers           192.168.2.121;
  option domain-name           "koraykey.net";
  option domain-name-servers   192.168.2.121;
  default-lease-time           21600;
  max-lease-time               43200;
  ddns-updates on;
  ddns-update-style interim;
  ignore client-updates;
  update-static-leases on;
  range dynamic-bootp 192.168.2.100 192.168.2.253;
}

-- Sunucumuzda “DHCP Server” servisini yaptığımız ayarlarla başlatıyoruz ve
sunucumuz yeniden başladığında otomatik açılması için gerekli ayarımızı yapıyoruz.

# service dhcpd start
# chkconfig dhcpd on

-- Sistemimizin kurulumu tamamlandı sunucumuzu yeniden başlatıyoruz ve istemci
bilgisayarları etki alanına üye yapmaya geçiyoruz.

# shutdown -r now

13. Öncelikle bir istemci bilgisayarı kurmuş olduğumuz “koraykey.net” etki alanına üye yapıyoruz. Bunun için “Bilgisayar Özellikleri>Bilgisayar” sekmesini açıyoruz ve istemci adını ve workgroup’unu aşağıdaki gibi sistemimize göre düzenliyoruz. Bu değişikliklerden sonra istemcimizi yeniden başlatıyoruz.

SambaPdcInstall_1

14. İstemcimiz açıldığında “Başlat>Çalıştır” yolunda “cmd” yazarak komut istemcisini açıyoruz ve “ipconfig /all” komutunu vererek istemcimizin aldığı IP adresi vb. değişkenlerin sistemizle uyumlu olduğunu kontrol ediyoruz. İstemcimiz yapılandırdığımız DHCP sunucusundan adres almışsa sorunsuz olarak yapılanacaktır.

SambaPdcInstall_2

15. İstemcimizi etki alanına üye yapabilmek için “Bilgisayar Özellikleri>Bilgisayar” sekmesini açıyoruz ve Etki Alanı (Domain) ismini aşağıdaki gibi yazıyoruz ve “Tamam” düğmesine tıklıyoruz. Bizde istemcimizi etki alanına üye yapabilmek için istemci eklemeye yetkisi olan bir kullanıcı adı ve şifre istiyor. Samba PDC kurulumu sırasında oluşan “Administrator” kullanıcısı ve atamış olduğumuz parolayı giriyoruz ve “Tamam” düğmesine tıklıyoruz.

SambaPdcInstall_3

16. İstemcimiz etki alanına başarıyla üye oldu “Tamam” düğmesini tıkladıktan sonra istemcimizi yeniden başlatıyoruz.

SambaPdcInstall_4

14. İstemcimizle etki alanımızda oturum açıyoruz. Bunun için az önce kullandığımız “Administrator” kullanıcısı ve parolasını kullanıyoruz.

SambaPdcInstall_5

15. “Bilgisayar Özellikleri>Bilgisayar” sekmesini açtığımızda istemcimizin “koraykey.net” etki alanına üye olduğunu görüyoruz.

SambaPdcInstall_6

16. Şimdi etki alanımızı (domain) yönetebilmek için gerekli olan araçlarımızı kuruyoruz. Bu araçlar için “Başlat>Yönetimsel Araçlar>Server Manager” programını çalıştırıyoruz ve “Features” seçeneğinde “Add Features” düğmesine tıklayarak açılan pencereden “Group Policy Management” ve “Remote Server Administration Tools” seçeneklerini işaretliyoruz ve diğer tüm adımları “Next” ile geçiyoruz. Kurulum tamamlandığında istemcimizi yeniden başlatıyoruz.

SambaPdcInstall_7

SambaPdcInstall_8

17. İstemcimiz yeniden başladığında “Başlat>Yönetimsel Araçlar” yolunu izlediğimizde etki alanı yönetim araçlarımızın geldiğini göreceğiz.

SambaPdcInstall_9

18. Samba etki alanı yöneticimizde DNS yönetimi “Active Directory” ile bütünleşik yönetilmektedir. Ancak kurulum aşamasında “Reverse Zone” otomatik oluşmamaktadır. Bunu kendimiz Windows üzerindeki DNS Yönetimsel aracı ile yapabiliriz. Bunun için “Başlat>Yönetimsel Araçlar>DNS” yolunu izleyerek yönetim konsolumuzu açıyoruz ve Samba etki alanı yönetimizin adını yazıyoruz.

SambaPdcInstall_10

19. Açılan Dns Yönetim Konsolumuzda “Reverse Lookup Zone” seçeneğine gelerek üzerinde sağ tıklıyoruz ve “New Zone” seçeneğini seçiyoruz.

SambaPdcInstall_11

20. Yeni “Reverse Lookup Zone” oluşturma ekranını “Next” düğmesine tıklarak geçiyoruz.

SambaPdcInstall_12

21. Mevcut “Reverse Lookup Zone” olmadığı için “Primary Zone” olarak oluşturacağız.

SambaPdcInstall_13

22. Bir forest alanımız olmadığı ve sadece bu etki alanımıza ait bir “Reverse Lookup Zone” bölgesi oluşturacağımız için “… in this domain: koraykey.net” seçeneğini seçiyoruz ve “Next” düğmesine tıklıyoruz.

SambaPdcInstall_14

23. Dns kayıtlarımız “IPv4 Reverse Lookup Zone” olacağı için bu seçeneği seçiyoruz ve “Next” düğmesine tıklıyoruz.

SambaPdcInstall_15

24. “Reverse Lookup Zone” için subnet adresimizi yazıyoruz. Bu aynı zamanda oluşturacağı “Reverse Lookup Zone” dosyasının adı olacaktır.

SambaPdcInstall_16

25. Adreslerimiz güvenli bir şekilde güncellenmelidir. Active Directory ortamlarında önerilen seçeneğimiz bu olduğu için işaretliyoruz ve “Next” düğmesine tıklıyoruz.

SambaPdcInstall_17

26. “Reverse Lookup Zone” oluşturma işlemimizi tamamlamak için “Finish” düğmesine tıklıyoruz.

SambaPdcInstall_18

27. DNS yönetim aracımızla etki alanımızın DNS yönetimi işlemlerini belli kısıtlarla yapabiliriz. Bu araçla kayıtlar oluşturabilir veya silebiliriz.

SambaPdcInstall_19

Yaptığımız DNS değişikliklerinin geçerli olabilmesi için Samba Etki Alanı sunucumuzda “bind” (DNS) servisimizi yeniden başlatıyoruz.

[root@koraykey-pdc ~]# service named restart
Stopping named: .[  OK  ]
Starting named: [  OK  ]

28. Etki alanımızda kullanıcıların yönetimi için “Başlat>Yönetimsel Araçlar>Active Directory Users and Comupters” programını çalıştırıyoruz.

SambaPdcInstall_20

SambaPdcInstall_21

29. Windows istemcilerimiz için Güvenlik Politikaları (Group Policy) oluşturabiliriz. Bunun için “Başlat>Yönetimsel Araçlar>Group Policy Management” yolundan yönetim konsolumuzu çalıştırıyoruz. Burada oluşturacağımız güvenlik politikalarımız ve kullanıcıların açılış-kapanış scriptleri Linux üzerinde kurduğumuz Samba Etki Alanı denetleyici sunucumuzda depolanacaktır.

SambaPdcInstall_22SambaPdcInstall_23

30. Windows istemciden sonra Linux işletim sistemli istemcileri etki alanına üye yapma işlemini inceleyelim. İşletim sistemimizde gerekli olan kerberos, samba paketlerini ve bağımlılıklarını kuruyoruz.

-- Öncelikle sistemimizde bulunan eski "samba" paketlerini kaldırıyoruz.

# yum -y remove samba*

-- Sistemimize "samba4" ve kimlik doğrulama için "kerberos" paketlerini kuruyoruz.

# yum -y install samba4* krb5*

-- İstemcimizi etki alanına üye yapmadan önce sistemimizi yeniden başlatıyoruz.

# shutdown -r now

31. İşletim sistemimizin grafik arayüzünden (GUI) “System > Administration > Authentication” yolunu izleyerek yapılandırma programımızı açıyoruz. Bu işlemi kesinlikle etki alanı yöneticimiz (koraykey-pdc.koraykey.net) üzerinde yapmamalıyız. Aksi takdirde etki alanı yöneticimiz bozulacaktır.

Kerberos_Install_1

32. Açılan arayüzde varsayılan olarak kimlik doğrulama yöntemi yerel hesaplar olarak gelmektedir. Buradan “User Account Database” seçeneğini “Winbind” olarak seçiyoruz ve aşağıdaki gibi değişkenleri kendi sistemize göre ayarlıyoruz. Burada etki alanı ismini büyük harflerle yazmalıyız. Burada “Winbind Domain Controllers” alanına etki alanı yöneticimizi yazmalıyız ancak birden fazla var ise “*” işareti koyabiliriz.

Kerberos_Install_2

33. Yapılandırma ekranımızdan “Advanced Options” sekmesine geçerek “Other Authentication” seçeneğinde “Create home directories on the first login” kutucuğunu işaretliyoruz. Bu seçenekle Linux sistemimizde oturum açtığımızda “home” klasörümüz oluşacaktır aksi takdirde oturum açarken hata verecektir.

Kerberos_Install_3

34.Tekrar “Identity & Authentication” sekmesine geri döndüğümüzde bize yaptığımız değişiklikleri kaydetmek istediğimizi soruyor burada “Save” düğmesine tıklıyoruz ve alt kısımda bulunan “Join Domain” düğmesine tıklıyoruz.

Kerberos_Install_4

35. Etki alanına istemcimizi üye yapmak için Etki Alanı yönetici hesabı ve parolasını giriyoruz ardından “OK” düğmesine tıklıyoruz.

Kerberos_Install_5

36. Etki alanına üye olma işlemi tamamlandı. “Apply” düğmesine tıklıyoruz ve istemcimizi yeniden başlatıyoruz.

Kerberos_Install_6Kerberos_Install_7

37. İstemcimiz yeniden açıldığında “other” seçeneğini seçerek etki alanı kullanıcı adı ve parolamızı giriyoruz. Grafik ekranda oturum açtığımız gibi “SSH” bağlantısı ile aynı şekilde oturum açabiliriz.

Kerberos_Install_8Kerberos_Install_9

38. Etki alanı kullanıcımız ile oturum açtık şimdi sistemimizde çalışabiliriz.

Kerberos_Install_10

39. Eğer bu işlemleri komut istemcisinden yapmak istiyorsak “Linux İşletim Sistemlerinde Kerberos ile Kimlik Doğrulama (Active Directory Entegrasyon)” makalemizden yararlanabilirsiniz.

40. Etki Alanı Sunucumuzun yedeğini almak veya yedekten dönme işlemleri için aşağıdaki adımları izlemeliyiz.

-- Samba Etki Alanı sunucumuzun yedeğini almak için

-- Yedeklerimizin alınacağı dizini yaratıyoruz

# mkdir -p /u01/samba_backups

-- Yedekleme script'ini derleme yaptığımız dizinden "/usr/local/samba/sbin" 
dizinine kopyalıyoruz.

# cp /u01/samba-master/source4/scripting/bin/samba_backup /usr/local/samba/sbin

-- Yedekleme script'imiz üzerinde root kullanıcısı için yetkilendirme yapıyoruz.

# chown root:root /usr/local/samba/sbin

-- Yedekleme script'imiz üzerinde gerekli izinleri veriyoruz.

# chmod 750 /usr/sbin/samba_backup

-- Yedekleme script'imizi açıyoruz ve "WHERE" değişkenini yedekleme alacağımız 
dizine ayarlıyoruz.

# vim /usr/local/samba/sbin/samba_backup

FROMWHERE=/usr/local/samba
WHERE=/u01/samba_backups

-- Yedekleme işlemi yapmak için script'imizi çalıştırıyoruz.

# samba_backup

-- Otomatik yedekleme işlemi için "cron" üzerinde görev atıyoruz.
Bu görevle hergün gece saat 2'de yedekleme işlemi başlayacaktır.

# crontab -e

0 2 * * *       /usr/local/samba/sbin/samba_backup

-- Samba Etki Alanı sunucumuzun yedekten dönmek için

-- Çalışan "samba" programlarını durduruyoruz.

# killall samba

-- Mevcut "samba" dizinlerimizi siliyoruz.

# rm -rf /usr/local/samba/etc
# rm -rf /usr/local/samba/private
# rm -rf /usr/local/samba/var/locks/sysvol

-- Yedekten dönme işlemini başlatıyoruz. Burada {Timestamp} değişkenini yedek
dosyamızdaki tarih bilgisini yazıyoruz.

# cd /u01/samba_backups
# tar -jxf etc.{Timestamp}.tar.bz2 -C /usr/local/samba/
# tar -jxf samba4_private.{Timestamp}.tar.bz2 -C /usr/local/samba/
# tar -jxf sysvol.{Timestamp}.tar.bz2 -C /usr/local/samba/
# samba_upgradedns --dns-backend=BIND9_DLZ

Bu makalemizde “Linux İşletim Sistemlerinde Birincil Etki Alanı Sunucu Yapılandırması (Samba Domain Controller)” yapılandırmasını inceledik. Bu makalemiz ile tamamen Linux tabanlı bir işletim sisteminden Active Directory Hizmeti veren bir sunucu kurulumunu inceledik. Tam bir etki alanı kurulumu için gerekli olan tüm işlemleri adım adım uyguladık. Samba ile bir dosya sunucusu (file server) yapılandırmak istersek “Linux İşletim Sistemlerinde Dosya Sunucusu Yapılandırması (Samba / Cifs File Server)” ayrıca Samba ile bir yazıcı sunucusu (print server) yapılandırmak istersek “Linux İşletim Sistemlerinde Yazıcı Sunucusu Yapılandırması (Samba Print Server)” makalelerimizden yararlanabilirsiniz. Yukarıdaki kurulum işlemleri Centos Linux 6.4, Red Hat Enterprise Linux 6.4 ve Oracle Enterprise Linux 6.4 işletim sistemlerinde denenmiştir.

Başka bir makalede görüşmek üzere…

Bu yazı Unix / Linux kategorisine gönderilmiş ve , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ile etiketlenmiş. Kalıcı bağlantıyı yer imlerinize ekleyin.