Uygulama

Debian 10 ‘da Samba Domain Controller sunucusu nasıl kurulur

Ağlarınız için merkezi etki alanı yönetimine mi ihtiyacınız var, ancak bir Windows Sunucusu kullanmaya ve ek lisans ücretini ödemeye hevesli değil misiniz? Samba Domain sunucusu, Linux üzerinde deneyebileceğiniz en iyi ve ücretsiz alternatiflerden biridir.

Samba, öncelikle ağ dosya sunucusu ve yazdırma hizmetleriyle tanınan açık kaynaklı bir çözümdür. Ancak 4.0 sürümünden bu yana Samba, Domain sunucu rolünü de sağlamanıza olanak tanır.

Samba, Ortak İnternet Dosya Sistemini (CIFS) kullanır ve aşağıdaki gibi eylemleri gerçekleştirmenizde size yardımcı olur.

  • Dosya ve baskı hizmetleri
  • Ad çözümlemesi
  • Windows’un Unix ana bilgisayarındaki dosyaları ve yazıcıları paylaşmasına izin verir
  • Yetkilendirme
  • Kimlik doğrulama

Bu yazıda, Samba DC’yi Debian 10 üzerine kurup yapılandıracağız.

Kurulum Hazırlıkları

Paket dizinini güncelleyin.

$ sudo apt update

Debian 10 sisteminizi güncelleyin.

$ sudo apt upgrade

Ana bilgisayar adının tanımlandığından emin olun.

$ sudo hostnamectl --static set-hostname ad.octocat.lab

hosts dosyasının doğru işlendiğinden emin olmak için içeriğini kontrol edin.

$ cat /etc/hosts
 
127.0.0.1       localhost
#10.10.10.10     ad.octocat.lab ad

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
 

Systemd-resolve servisinin durumunu kontrol ederek servisin devre dışı bırakıldığından emin olun.

$ systemctl status systemd-resolved.service 
 
● systemd-resolved.service - Network Name Resolution
     Loaded: loaded (/lib/systemd/system/systemd-resolved.service; disabled; vendor preset: enabled)
     Active: inactive (dead)
       Docs: man:systemd-resolved.service(8)
             man:org.freedesktop.resolve1(5)
             https://www.freedesktop.org/wiki/Software/systemd/writing-network-configuration-managers
             https://www.freedesktop.org/wiki/Software/systemd/writing-resolver-clients
 

DNS çözümleyici, daha sonra iletici olarak kullanılacak DNS sunucusuna işaret etmelidir.

$ cat /etc/resolv.conf 
nameserver 10.10.0.1

Samba DC sunucusuna statik bir IP adresi atanmış olmalıdır.

$ cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback
$ cat /etc/network/interfaces.d/eth0 
auto eth0
iface eth0 inet static
        address 10.10.10.10
        netmask 255.255.0.0
        gateway 10.10.0.1

Bu adımlar daha sonra yapılacak işlemlerde size zaman kazandıracaktır.

Kuruluma Başlayalım

NTP hizmetini yükleyin

chronyNTP arka plan programını yükleyin .

$ sudo apt install chrony

chronyhizmetini daha sonra yapılandırmak üzere şimdilik devre dışı bırakın .

$ sudo systemctl disable --now chrony

DNS hizmetini yükleyin

bind9DNS arka plan programını yükleyin .

$ sudo apt install bind9

bindhizmetini daha sonra yapılandırmak üzere şimdilik devre dışı bırakın .

Samba DC hizmetini yükleyin

Gerekli Samba ve Kerberos paketlerini kurun.

$ sudo DEBIAN_FRONTEND=noninteractive apt-get install -y samba smbclient winbind krb5-user krb5-config 

Samba hizmetlerinin devre dışı bırakıldığından emin olun.

$ sudo systemctl disable --now samba-ad-dc.service smbd.service nmbd.service winbind.service

Varsayılan yapılandırmayı kaldırın.

$ sudo unlink /etc/samba/smb.conf
$ sudo unlink /etc/krb5.conf 

Samba DC hizmetini yapılandırın

Yapılandırma işlemine başlamak için aşağıdaki komutu verin:

$ sudo samba-tool domain provision --realm OCTOCAT.LAB \
                                   --domain OCTOCAT \
                                   --server-role dc \
                                   --dns-backend BIND9_DLZ \
                                   --adminpass oct0passwOrd \
                                   --use-rfc2307 \
                                   --option="interfaces=lo eth0" \
                                   --option="bind interfaces only=yes"

DNS çözümleyicisini bu sunucuya işaret edecek şekilde değiştirin.

$ cat << EOF | sudo tee /etc/resolv.conf 
search octocat.lab
nameserver 10.10.10.10
EOF

Kerberos yapılandırmasını kopyalayın.

$ sudo cp /var/lib/samba/private/krb5.conf /etc/krb5.conf

Yapılandırma dosyasının içeriğini görüntüleyin.

$ cat /etc/krb5.conf 
[libdefaults]
        default_realm = OCTOCAT.LAB
        dns_lookup_realm = false
        dns_lookup_kdc = true
[realms]
OCTOCAT.LAB = {
        default_domain = octocat.lab
}

[domain_realm]
        ad = OCTOCAT.LAB

Keytab dosyasına bağlantı oluşturun.

$ sudo ln -s /var/lib/samba/private/secrets.keytab /etc/krb5.keytab

Keytab dosyasının içeriğini görüntüleyin.

$ sudo klist -k /etc/krb5.keytab 
Keytab name: FILE:/etc/krb5.keytab
 KVNO Principal
 ---------------------------------------------- ----------------------------
    1 HOST/[email protected]
    1 HOST/[email protected]
    1 [email protected]
    1 HOST/[email protected]
    1 HOST/[email protected]
    1 [email protected]
    1 HOST/[email protected]
    1 HOST/[email protected]
    1 [email protected]

Samba yapılandırmasını görüntüleyin.

$ cat /etc/samba/smb.conf 
# Global parameters
[global]
        bind interfaces only = Yes
        interfaces = lo eth0
         dns forwarder = 10.10.0.1 
        netbios name = AD
        realm = OCTOCAT.LAB
        server role = active directory domain controller
        server services = s3fs, rpc, nbt, wrepl, ldap, cldap, kdc, drepl, winbindd, ntp_signd, kcc, dnsupdate
        workgroup = OCTOCAT
        idmap_ldb:use rfc2307 = yes

[sysvol]
        path = /var/lib/samba/sysvol
        read only = No

[netlogon]
        path = /var/lib/samba/sysvol/octocat.lab/scripts
        read only = No

DNS yönlendiricinin tanımlı olduğundan emin olun.

NTP hizmetini yapılandırın

ntp_signd socket konumunu tespit edin.

$ sudo samba -b | grep NTP_SIGND_SOCKET_DIR
   NTP_SIGND_SOCKET_DIR: /var/lib/samba/ntp_signd

Eğer dizin yoksa aşağıdaki komut ile oluşturabilirsiniz.

$ sudo mkdir /var/lib/samba/ntp_signd

Uygun izinleri ayarlayın.

$ sudo chgrp _chrony /var/lib/samba/ntp_signd
$ sudo chmod 750 /var/lib/samba/ntp_signd

Varsayılan NTP havuzunu silin.

$ sudo sed -i -e "/\# Use Debian vendor zone./,+2d" /etc/chrony/chrony.con

Kaynak olarak Debian NTP havuzunu tanımlayın.

$ cat << EOF | sudo tee /etc/chrony/sources.d/debian-pool.sources
pool 0.debian.pool.ntp.org iburst
pool 1.debian.pool.ntp.org iburst
pool 2.debian.pool.ntp.org iburst
pool 3.debian.pool.ntp.org iburst
EOF

Sunucu yapılandırması oluşturun.

$ cat << EOF | sudo tee /etc/chrony/conf.d/server.conf
bindaddress 10.10.10.10
allow 10.10.0.1/16
ntpsigndsocket  /var/lib/samba/ntp_signd
EOF

Komut ve izleme erişimi için Unix etki alanı komut soketini kullanın.

$ cat << EOF | sudo tee /etc/chrony/conf.d/cmd.conf
bindcmdaddress /var/run/chrony/chronyd.sock
cmdport 0
EOF

NTP servisini etkinleştirin.

$ sudo systemctl enable --now  chrony

DNS hizmetini yapılandırın

BIND için Samba yapılandırma dizinini belirleyin.

$ sudo smbd -b | grep BINDDNS
   BINDDNS_DIR: /var/lib/samba/bind-dns

BIND sürümünü belirleyin.

$ sudo named -v

Uygun veritabanı sürümünün kullanıldığından emin olun.

$ sudo cat /var/lib/samba/bind-dns/named.conf
# This DNS configuration is for BIND 9.8.0 or later with dlz_dlopen support.
#
# This file should be included in your main BIND configuration file
#
# For example with
# include "/var/lib/samba/bind-dns/named.conf";

#
# This configures dynamically loadable zones (DLZ) from AD schema
# Uncomment only single database line, depending on your BIND version
#
dlz "AD DNS Zone" {
    # For BIND 9.8.x
    # database "dlopen /usr/lib/x86_64-linux-gnu/samba/bind9/dlz_bind9.so";

    # For BIND 9.9.x
    # database "dlopen /usr/lib/x86_64-linux-gnu/samba/bind9/dlz_bind9_9.so";

    # For BIND 9.10.x
    # database "dlopen /usr/lib/x86_64-linux-gnu/samba/bind9/dlz_bind9_10.so";

    # For BIND 9.11.x
    # database "dlopen /usr/lib/x86_64-linux-gnu/samba/bind9/dlz_bind9_11.so";

    # For BIND 9.12.x
    # database "dlopen /usr/lib/x86_64-linux-gnu/samba/bind9/dlz_bind9_12.so";

    # For BIND 9.14.x
    # database "dlopen /usr/lib/x86_64-linux-gnu/samba/bind9/dlz_bind9_14.so";

     # For BIND 9.16.x 
    database "dlopen /usr/lib/x86_64-linux-gnu/samba/bind9/dlz_bind9_16.so"; 
};
 

dinamik olarak yüklenebilir bölgeleri dahil edin.

$ sudo cat  /etc/bind/named.conf
// This is the primary configuration file for the BIND DNS server named.
//
// Please read /usr/share/doc/bind9/README.Debian.gz for information on the 
// structure of BIND configuration files in Debian, *BEFORE* you customize 
// this configuration file.
//
// If you are just adding zones, please do that in /etc/bind/named.conf.local

include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";
 include "/var/lib/samba/bind-dns/named.conf"; 

DNS güncellemeleri için Kerberos keytab sağlandığından emin olun.

$ cat /etc/bind/named.conf.options 
options {
        directory "/var/cache/bind";

        // If there is a firewall between you and nameservers you want
        // to talk to, you may need to fix the firewall to allow multiple
        // ports to talk.  See http://www.kb.cert.org/vuls/id/800113

        // If your ISP provided one or more IP addresses for stable 
        // nameservers, you probably want to use them as forwarders.  
        // Uncomment the following block, and insert the addresses replacing 
        // the all-0's placeholder.

        // forwarders {
        //      0.0.0.0;
        // };

        //========================================================================
        // If BIND logs error messages about the root key being expired,
        // you will need to update your keys.  See https://www.isc.org/bind-keys
        //========================================================================
        dnssec-validation auto;

        listen-on-v6 { any; };

         tkey-gssapi-keytab "/var/lib/samba/bind-dns/dns.keytab"; 
};
 

DNS sunucusunu etkinleştirin.

$ sudo systemctl enable --now named

Samba DC hizmetini başlatın

Samba-ad-dc hizmetinin maskesini kaldırın.

$ sudo systemctl unmask samba-ad-dc.service

samba-ad-dc hizmetini başlatın ve etkinleştirin.

$ systemctl status samba-ad-dc.service

Kurulum sonrası adımlar

DNS bölgelerini listeleyin.

$ samba-tool dns zonelist ad -U administrator
Password for [OCTOCAT\administrator]: *********
2 zone(s) found

  pszZoneName                 : octocat.lab
  Flags                       : DNS_RPC_ZONE_DSINTEGRATED DNS_RPC_ZONE_UPDATE_SECURE 
  ZoneType                    : DNS_ZONE_TYPE_PRIMARY
  Version                     : 50
  dwDpFlags                   : DNS_DP_AUTOCREATED DNS_DP_DOMAIN_DEFAULT DNS_DP_ENLISTED 
  pszDpFqdn                   : DomainDnsZones.octocat.lab

  pszZoneName                 : _msdcs.octocat.lab
  Flags                       : DNS_RPC_ZONE_DSINTEGRATED DNS_RPC_ZONE_UPDATE_SECURE 
  ZoneType                    : DNS_ZONE_TYPE_PRIMARY
  Version                     : 50
  dwDpFlags                   : DNS_DP_AUTOCREATED DNS_DP_FOREST_DEFAULT DNS_DP_ENLISTED 
  pszDpFqdn                   : ForestDnsZones.octocat.lab

Bir ters DNS bölgesi oluşturun.

$ samba-tool dns zonecreate -U administrator ad.octocat.lab 10.10.in-addr.arpa 
Password for [OCTOCAT\administrator]: *********
 

Zone 10.10.in-addr.arpa created successfully
 

DNS bölgelerini listeleyin.

$ samba-tool dns zonelist ad.octocat.lab -U administrator
Password for [OCTOCAT\administrator]: *********
3 zone(s) found

  pszZoneName                 : octocat.lab
  Flags                       : DNS_RPC_ZONE_DSINTEGRATED DNS_RPC_ZONE_UPDATE_SECURE 
  ZoneType                    : DNS_ZONE_TYPE_PRIMARY
  Version                     : 50
  dwDpFlags                   : DNS_DP_AUTOCREATED DNS_DP_DOMAIN_DEFAULT DNS_DP_ENLISTED 
  pszDpFqdn                   : DomainDnsZones.octocat.lab

  pszZoneName                 : 10.10.in-addr.arpa
  Flags                       : DNS_RPC_ZONE_DSINTEGRATED DNS_RPC_ZONE_UPDATE_SECURE 
  ZoneType                    : DNS_ZONE_TYPE_PRIMARY
  Version                     : 50
  dwDpFlags                   : DNS_DP_AUTOCREATED DNS_DP_DOMAIN_DEFAULT DNS_DP_ENLISTED 
  pszDpFqdn                   : DomainDnsZones.octocat.lab

  pszZoneName                 : _msdcs.octocat.lab
  Flags                       : DNS_RPC_ZONE_DSINTEGRATED DNS_RPC_ZONE_UPDATE_SECURE 
  ZoneType                    : DNS_ZONE_TYPE_PRIMARY
  Version                     : 50
  dwDpFlags                   : DNS_DP_AUTOCREATED DNS_DP_FOREST_DEFAULT DNS_DP_ENLISTED 
  pszDpFqdn                   : ForestDnsZones.octocat.lab

Hesap ayrıntılarını görüntüleyin.

$ net ads info
 
LDAP server: 10.10.10.10
LDAP server name: ad.octocat.lab
Realm: OCTOCAT.LAB
Bind Path: dc=OCTOCAT,dc=LAB
LDAP port: 389
Server time: Thu, 30 Sep 2021 20:33:23 CEST
KDC server: 10.10.10.10
Server time offset: 0
Last machine account password change: Thu, 30 Sep 2021 14:08:36 CEST
 

Etki alanı denetleyicisi hakkında bilgi almak için CLDAP sorgusu gerçekleştirin.

$ net ads lookup
 
Information for Domain Controller: 10.10.10.10

Response Type: LOGON_SAM_LOGON_RESPONSE_EX
GUID: 6b95767e-3fc5-4660-aed6-1ee5f55b9365
Flags:
        Is a PDC:                                   yes
        Is a GC of the forest:                      yes
        Is an LDAP server:                          yes
        Supports DS:                                yes
        Is running a KDC:                           yes
        Is running time services:                   yes
        Is the closest DC:                          yes
        Is writable:                                yes
        Has a hardware clock:                       yes
        Is a non-domain NC serviced by LDAP server: no
        Is NT6 DC that has some secrets:            no
        Is NT6 DC that has all secrets:             yes
        Runs Active Directory Web Services:         no
        Runs on Windows 2012 or later:              no
Forest: octocat.lab
Domain: octocat.lab
Domain Controller: ad.octocat.lab
Pre-Win2k Domain: OCTOCAT
Pre-Win2k Hostname: AD
Server Site Name: Default-First-Site-Name
Client Site Name: Default-First-Site-Name
NT Version: 5
LMNT Token: ffff
LM20 Token: ffff
 

Çıktıdan da anlaşılacağı gibi kurulum tamamlanmıştır.

Yazının orijinalini buradan okuyabilirsiniz.