Wednesday, September 12, 2012

Domain Controller dengan Samba4


Seperti yang saya ceritakan pada tulisan sebelumnya bahwa minggu-minggu kemaren saya sudah praktek membuat domain controller dengan  samba4 dan mail server dengan zimbra, kali ini saya akan ceritakan membuat domain controller dengan samba4. Domain controller ini saya konfigurasi pada CentOS 6.0 32 bit (kebetulan ada komputer nganggur dengan spesifikasi cukup untuk 32 bit) dengan konfigurasi berikut;
IP Address   : 192.168.1.1
Hostname : samba
Domain Name : catatankerja.net
Berikut tahapan-tahapan yang saya lakukan untuk membuat Domain Controller dengan samba4:

Installasi Samba4
Sebelum menginstall samba4, kita harus melakukan installasi terhadap beberapa aplikasi yang diperlukan untuk samba4, dengan mengetikkan sintak berikut:
# yum install libacl-devel e2fsprogs-devel gnutls-devel readline-devel python-devel gdb pkgconfig gcc libblkid-devel zlib-devel setroubleshoot-server setroubleshoot-plugins policycoreutils-python libsemanage-python setools-libs popt-devel libpcap-devel sqlite-devel libidn-devel libxml2-devel libacl-devel libsepol-devel libattr-devel keyutils-libs-devel cyrus-sasl-devel

Kemudian kita download binari samba4 di http://ftp.samba.org/pub/samba/samba4/, dimana file tarball yang saya gunakan untuk praktek ini adalah samba4 versi 4.0.0beta2:
    # wget http://ftp.samba.org/pub/samba/samba4/samba-4.0.0beta2.tar.gz
Setelah selesai mendownload kita install dengan perintah:
  # tar -zxvf samba-4.0.0beta2.tar.gz
  # cd samba-4.0.0beta2
  # ./configure-developer
  # make
  # make install
Nantinya hasil installasi akan berada pada folder /usr/local/samba/

Installasi DNS Server
Sebelum melakukan provisioning pada samba4, kita harus installasi dan konfigurasi DNS Server terlebih dahulu, untuk menginstall DNS pada CentOS dapat dilakukan dengan perintah:
  # yum install bind bind-utils caching-nameserver

Konfigurasi DNS Server
Ada beberapa tahapan untuk mengkonfigurasi DNS Server pada CentOS dengan menggunakan console/terminal sebagai berikut:
a. Melakukan editing file named.conf
  # nano /etc/named.conf
options {
        listen-on port 53 { 127.0.0.1;192.168.1.1; };
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        allow-query     { localhost;any; };
        recursion yes;
Tambahkan yang tercetak tebal pada file named.conf
b. Melakukan editing file named.rfc1912.zones
  # nano /etc/named.rfc1912.zones
zone "catatankerja.net" IN {
       type master;
      file "catatankerja.net.zone";
        allow-update { none; };
};

Tambahkan zona DNS Server yang akan kita buat pada baris paling bawah.
c. Membuat dan konfigurasi untuk zona yang baru kita buat
  # cp /var/named/named.localhost var/named/catatankerja.net.zone
  # chown named.named /var/named/catatankerja.net.zone
  # nano /var/named/catatankerja.net.zone
$TTL 38400      ; 10 hours 40 minutes
@                          IN SOA  ns1.catatankerja.net. admin.catatankerja.net. (
                                                2011070101 ; serial
                                                180        ; refresh (3 minutes)
                                                360        ; retry (6 minutes)
                                                604800     ; expire (1 week)
                                                86400      ; minimum (1 day)
                                                                       )
                           NS      ns1.catatankerja.net.
                           MX      0 mail.catatankerja.net.
                           A       192.168.1.1
ns1                     A       192.168.1.1
samba               A       192.168.1.1
mail                   A       192.168.1.1

d. Konfigurasi file /etc/hosts
  # nano /etc/hosts
192.168.1.1    samba.catatankerja.net     samba   # Added by NetworkManager
127.0.0.1       localhost.localdomain   localhost
::1                  samba.catatankerja.net     samba   localhost6.localdomain6 localhost6

e. Restart services DNS dan jalankan otomatis pada boot
  # service named restart
  # chkconfig named on

f. Check DNS Server dengan perintah nslookup
  [root@samba ~]# nslookup catatankerja.net
  Server:         192.168.1.1
  Address:        192.168.1.1#53

  Name:   catatankerja.net
  Address: 192.168.1.1

Provision Samba4
Setelah konfigurasi DNS berhasil, kita dapat melakukan provisioning pada samba4 yang sudah terinstall dengan perintah:
# /usr/local/samba/sbin/provision --realm=catatankerja.net --domain=CATATANKERJA --adminpass=Pa$$w0rd --server-role=dc
Tunggu hingga proses selesai

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:              samba
NetBIOS Domain:        CATATANKERJA
DNS Domain:            catatankerja.net
DOMAIN SID:            S-1-5-21-987618465-665967820-2421925628
A phpLDAPadmin configuration file suitable for administering the Samba 4 LDAP server has been created in /usr/local/samba/private/phpldapadmin-config.php.
[root@samba ~]# 

Starting Samba4
Untuk menjalankan samba kita dapat menggunakan perintah:
  # /usr/local/sbin/samba
Agar otomatis jalan pada saat booting, kita dapat membuat  script untuk menjalankannya, buat dengan nama samba4, dan disimpan
  # nano /etc/init.d/samba4
Berikut scrip yang akan kita buat:
#!/bin/sh
# chkconfig:2345 99 01
# description: program startup script by seilent

####################################################################

DAEMON="/usr/local/samba/sbin/samba"
rm /usr/local/samba/var/run/smbd-fileserver.conf.pid

# The init commands
case "$1" in
start)
echo "Starting Samba4..."
$DAEMON > /dev/null 2>&1 &
;;

stop)
echo "Stoping Samba4..."
kill -9 `ps -C samba -o pid --no-headers`
;;

restart)
echo "Stoping Samba4..."
kill -9 `ps -C samba -o pid --no-headers`

echo "Starting Samba4..."
$DAEMON > /dev/null 2>&1 &
;;

*)
echo "usage: /etc/init.d/samba4"
echo "$0 {start | stop | restart}"
exit 1
;;

esac

Berikan hak akses agar dapat dieksekusi
  #chmod 755 /etc/init.d/samba4
Buat link untuk service yang baru saja dibuat
  #ln -s /etc/init.d/samba4 /etc/rc.d/rc5.d/S99samba4
Tambahkan script tersebut agar dapat berjalan pada saat booting
  # chkconfig --add samba4
  # chkconfig samba4 on
Untuk menjalankan, mematikan, dan merestart samba4 dapat menggunakan perintah:
  # service samba4 start
  # service samba4 restart
  # service samba4 stop

Testing Samba4
Untuk melakukan testing dapat kita coba dengan perintah berikut:
[root@samba ~]# /usr/local/samba/bin/smbclient --version
Version 4.0.0beta2
[root@samba ~]# /usr/local/samba/bin/smbclient -L localhost -U%
Domain=[CATATANKERJA] OS=[Unix] Server=[Samba 4.0.0beta2]

        Sharename       Type      Comment
        ---------       ----      -------
        netlogon        Disk      
        sysvol          Disk      
        IPC$            IPC       IPC Service (Samba 4.0.0beta2)
Domain=[CATATANKERJA] OS=[Unix] Server=[Samba 4.0.0beta2]

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

        Workgroup            Master
        ---------            -------
[root@samba ~]# /usr/local/samba/bin/smbclient //localhost/netlogon -Uadministrator%Pa$$w0rd
Domain=[CATATANKERJA] OS=[Unix] Server=[Samba 4.0.0beta2]
smb: \> 

Jika semua perintah tersebut berhasil sesuai contoh, maka folder share samba4 sudah OK

Update Konfigurasi DNS
Setelah sebelumnya kita konfigurasi DNS, kita masih perlu melakukan konfigurasi DNS yang sudah ada. Hal ini dilakukan mengingat samba4 yang dicompile dan install memiliki database DNS yang harus dimasukkan kedalam konfigurasi DNS Server yang sudah ada agar samab4 berjalan dengan semestinya.
Konfigurasi named.conf
Samba memiliki file named.conf sendiri untuk konfigurasi DNS dengan metode DLZ (Dynamically Loadable Zone). Tambahkan iinclude "/usr/local/samba/private/named.conf"; pada baris paling bawah named.conf
  # nano /etc/named.conf
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
include "/usr/local/samba/private/named.conf";

Disable SELinux
SELinux merupakan security yang digunakan pada CentOS, agar konfigurasi DNS dapat diload oleh DLZ maka SELinux harus di disable dengan perintah:
  # setenforce 0
Untuk mendisable pada saat booting kita edit file /etc/sysconfig/selinux
  # nano /etc/sysconfig/selinux
SELINUX =disable

Disable Chroot directory
DNS pada samba4 tidak dapat berjalan jika menggunakan chroot dns, maka kita harus disable chroot DNS terlebih dahulu pada file /etc/sysconfig/named.
  # nano /etc/sysconfig/named
##ROOTDIR=/var/named/chroot

Konfigurasi named.conf samba4
Ubah database dlz agar menggunakan sesuai versi bind yang kita gunakan, versi bind yang disupport adalah 9.8.0 keatas:
  # nano /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";
};

Dan lakukan disable pada zona DNS yang kita buat sebelumnya denganmemberi tanda comment (#) pada zone dns catatankerja.net
  #  nano /etc/named.rfc1912.zones 
#zone "catatankerja.net" IN {
#        type master;
#        file "catatankerja.net.zone";
#        allow-update { none; };
#};

Kemudian restart service DNS dengan perintah:
  # service named restart

Testing Konfigurasi DNS
Setelah konfigurasi DNS di update,kita dapat melakukan testing terhadap DNS sebagai berikut:
[root@samba ~]# host -t SRV _ldap._tcp.catatankerja.net
_ldap._tcp.catatankerja.net has SRV record 0 100 389 samba.catatankerja.net
[root@samba ~]# host -t SRV _kerberos._udp.catatankerja.net.
_kerberos._udp.catatankerja.net has SRV record 0 100 88 samba.catatankerja.net.
[root@samba ~]# host -t A catatankerja.net
catatankerja.net has address 192.168.1.1
[root@samba ~]# 

Konfigurasi Kerberos
Konfigurasi kerberos kita lakukan untuk keperluan autentikasi, pada Linux CentOS/Redhat, file konfigrasi terdapat pada file /etc/krb5.conf, kita ganti domain.example dengan nama domain yang kita gunakan.
  # nano /etc/krb5.conf
[logging]
 default = FILE:/var/log/krb5libs.log
 kdc = FILE:/var/log/krb5kdc.log
 admin_server = FILE:/var/log/kadmind.log

[libdefaults]
 default_realm = CATATANKERJA.NET
 dns_lookup_realm = false
 dns_lookup_kdc = false
 ticket_lifetime = 24h
 renew_lifetime = 7d
 forwardable = true

[realms]
 CATATANKERJA.NET = {
  kdc = samba.catatankerja.net
  admin_server = samba.catatankerja.net
 }

[domain_realm]
 .catatankerja.net = CATATANKERJA.NET
 catatankerja.net = CATATANKERJA.NET

Untuk memastikan kita test dengan perintah:
[root@samba ~]# klist -e
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: administrator@CATATANKERJA.NET

Valid starting     Expires            Service principal
09/05/12 08:34:20  09/05/12 18:34:20  krbtgt/CATATANKERJA.NET@CATATANKERJA.NET
        renew until 09/12/12 08:34:09, Etype (skey, tkt): ArcFour with HMAC/md5, ArcFour with HMAC/md5 
[root@samba ~]# 

Installasi dan Konfigurasi NTP Server
NTP Server dipergunakan untuk sinkronisasi antar waktu server dan client agar sama, karena terkadang perbedaan waktu server dan client menyebabkan client tidak bisa join ke server Domain. Berikut tahapan konfigurasi NTP Server
  # yum install ntp
  # nano /etc/ntp.conf

# Hosts on local network are less restricted.
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap

# server 0.centos.pool.ntp.org
# server 1.centos.pool.ntp.org
# server 2.centos.pool.ntp.org

server  127.127.1.0     # local clock
fudge   127.127.1.0 stratum 10

  # service ntpd restart
  # chkconfig ntpd on

Testing NTP Server
[root@samba ~]# ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*LOCAL(0)        .LOCL.          10 l   63   64  377    0.000    0.000   0.001
[root@samba ~]# 

Jika di bagian LOCAL terdapat tanda asterisk (*), maka ntp server sudah sikron dan dapat dipergunakan.
Okeyyy demikian share saya tentang Domain Controller dengan Samba4, untuk konfigurasi client sama dengan konfigurasi dengan menggunakan Domain Controller Windows Server. Semoga bermanfaat untuk semuanya..

3 comments:

  1. thx buat tutorialnya..
    sedikit tambahan

    /usr/local/samba/sbin/provision --realm=catatankerja.net --domain=CATATANKERJA --adminpass=Pa$$w0rd --server-role=dc --dns-backend=BIND9_DLZ

    biar ada file named.conf di /usr/local/samba/private/named.conf

    ReplyDelete
  2. Bagus artikelnya mas pantas di coba nihhhhh
    moga gak ada kendala, tapi sy mau nanya mas kenapa samba tidak jalan pada DNS chroot seperti mas ceritakan di atas!!

    ReplyDelete