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
chrony
NTP arka plan programını yükleyin .
$ sudo apt install chrony
chrony
hizmetini daha sonra yapılandırmak üzere şimdilik devre dışı bırakın .
$ sudo systemctl disable --now chrony
DNS hizmetini yükleyin
bind9
DNS arka plan programını yükleyin .
$ sudo apt install bind9
bind
hizmetini 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.
Kariyerime 26 yıl önce başladım. Windows ve Linux sistemlerinin kurulumu, yapılandırılması, yönetimi ve bakımı dahil olmak üzere birden fazla sistem üzerinde uzmanlaştım.
Açık kaynak dünyasındaki en son gelişmelerden haberdar olmaktan ve Linux hakkındaki en son araçları, özellikleri ve hizmetleri denemekten hoşlanıyorum.
Son 6 yıldır sistem ve ağ yöneticisi olarak görev yapıyorum ayrıca Pardus Dönüşüm Projesini yönetiyorum ve Pardus İşletim Sisteminin yaygınlaşması adına uğraş gösteriyorum.
Boş zamanlarımda açık kaynaklı uygulamaların Türkçe çevirisine katılıyorum ve The Document Foundation üyesiyim.