Bu 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
- Print server ( Windows’tan Linux’e, Linux’tan Windows’a )
- PDC (Windows ve Linux için Birincil Etki Alanı Denetleyicisi) vb.
- Wins Server
- Master Browser
- Domain Browser
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.
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.
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.
16. İstemcimiz etki alanına başarıyla üye oldu “Tamam” düğmesini tıkladıktan sonra istemcimizi yeniden başlatıyoruz.
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.
15. “Bilgisayar Özellikleri>Bilgisayar” sekmesini açtığımızda istemcimizin “koraykey.net” etki alanına üye olduğunu görüyoruz.
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.
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.
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.
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.
20. Yeni “Reverse Lookup Zone” oluşturma ekranını “Next” düğmesine tıklarak geçiyoruz.
21. Mevcut “Reverse Lookup Zone” olmadığı için “Primary Zone” olarak oluşturacağız.
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.
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.
24. “Reverse Lookup Zone” için subnet adresimizi yazıyoruz. Bu aynı zamanda oluşturacağı “Reverse Lookup Zone” dosyasının adı olacaktır.
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.
26. “Reverse Lookup Zone” oluşturma işlemimizi tamamlamak için “Finish” düğmesine tıklıyoruz.
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.
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.
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.
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.
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.
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.
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.
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.
36. Etki alanına üye olma işlemi tamamlandı. “Apply” düğmesine tıklıyoruz ve istemcimizi yeniden başlatıyoruz.
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.
38. Etki alanı kullanıcımız ile oturum açtık şimdi sistemimizde çalışabiliriz.
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…
Yorum yazabilmek için oturum açmalısınız.