özgür dünya

Samba DC 4.9.5 Kurulumu

SAMBA DC, Windows Aktif Dizin'in oldukça önemli bir alternatifi olarak karşımıza çıkmaktadır. Bu konuda çok fazla detay bilgi olmasına rağmen bu yazıda temel seviyede bir SAMBA DC kurulumu yapacağız. Windows AD ile güven ilişkisi kurma yöntemi de son paragrafta gösterilecektir.

Öncelikle sistemi Ubuntu 18.04 Sunucu üzerinde yazdığımı belirtmem lazım. Statik bir IP belirledikten sonra aşağıdaki adımlara geçmenizde yarar var. Eğer Windows AD ile güven ilişkisi kuracaksanız ağ ayarlarına aynı DNS kaydını da eklemeniz gerekmektedir.

İlk olarak derleyerek güncel sürüm kullanımı uygulaması yapacağız. Öncelikle sistemimizi güncelleyip, bağımlılıkları yüklemeniz gerekmektedir.
apt install -y libreadline-dev git build-essential libattr1-dev libblkid-dev libpam0g-dev autoconf gdb
apt install -y python-dev python-dnspython libacl1-dev pkg-config libpopt-dev libldap2-dev libcups2-dev
apt install -y dnsutils acl attr libbsd-dev docbook-xsl libgnutls28-dev
apt install -y liblmdb-dev lmdb-utils libjansson-dev libgpgme11-dev libarchive-dev 
Daha sonra şuan için güncel 4.9.x sürümlerinden 4.9.5 indirilecektir.
cd /usr/src
get_samba4=https://download.samba.org/pub/samba/stable/samba-4.9.5.tar.gz
wget -c ${get_samba4}
tar xvfz $(basename ${get_samba4})
cd $(basename ${get_samba4}|sed "s/.tar.gz//")
Bu adımdan sonra kaynak kodu ikili sisteme çevrilecektir:
./configure --with-ads --with-shared-modules=idmap_ad --enable-debug --enable-selftest --with-systemd --prefix=/opt/samba4
make
make install
Ve servis dosyası hazırlanır:
echo '[Unit]
Description=Samba4 AD DC Daemon
After=syslog.target network.target

[Service]
Type=forking
PIDFile=/opt/samba4/var/run/samba.pid
LimitNOFILE=16384
EnvironmentFile=-/etc/sysconfig/samba4
ExecStart=/opt/samba4/sbin/samba $SAMBAOPTIONS
ExecReload=/usr/bin/kill -HUP $MAINPID

[Install]
WantedBy=multi-user.target' > /etc/systemd/system/samba4.service
Komutların çalıştırılabilmesi için çalıştırılabilir ayarlanması gerekiyor:
echo 'export PATH=$PATH:/opt/samba4/bin:/opt/samba4/sbin' >> /etc/profile
echo 'export PATH=$PATH:/opt/samba4/bin:/opt/samba4/sbin' >> ~/.bashrc
source /etc/profile
Bu adımdan sonra SAMBA DC temel gereksinimleri kurulu olup etki alanı eklenmesi gerekliliği bulunmaktadır. 
1. Sıfırdan bir etki alanı eklemek için:
samba-tool domain provision --server-role=dc --use-rfc2307 --dns-backend=SAMBA_INTERNAL --realm=ACIKLAB.NET --domain=ACIKLAB --adminpass=AcikLab01
systemctl daemon-reload
systemctl enable samba4.service
systemctl start samba4.service
2. Eğer var olan bir Windows AD sunucu ile güven ilişkisi kurulacaksa krb5-user paketi eklendikten sonra:

/etc/krb5.conf içinde aşağıdaki satırların olması:
[libdefaults]
    dns_lookup_realm = false
    dns_lookup_kdc = true
    default_realm = WIN.LAB
Yetkili kullanıcı için bilet alınır ve var olan domaine giriş yapılarak güven ilişkisi kurulur:
kinit administrator
samba-tool domain join win.lab DC -U"WIN\administrator" --dns-backend=SAMBA_INTERNAL

Çıktının sonunda aşağıdaki satırı görüyorsanız başarı ile sonuçlandırmış olacaksınız:
Joined domain WIN.LAB (SID S-1-5-21-469703510-2364959079-1506205053) as a DC


Ubuntu 18.04′te Statik IP

Ubuntu 18.04 ile birlikte sunucunuzda IP adresinizi kalıcı yapmak için gereken araç değiştiği için bir nebze sorun yaşanmakta olduğunu görmekteyiz. Bunun için basit anlamda /etc/netplan/***.yml dosyası içerisini aşağıdaki gibi bir içerik ile doldurmanız gerekmektedir. Ve tabi ilgili içeriği hazırladıktan sonra netplan apply komutunu uygulamanız gerekmektedir.
network:
 version: 2
 renderer: networkd
 ethernets:
   enp3s0:
     addresses:
       - 10.100.1.2/24
     gateway4: 10.100.1.1
     nameservers:
         search: [acik.lab, pardus.lab]
         addresses: [10.100.1.1, 8.8.8.8]

Daha fazla bilgi için:

Pardus ve Güncel Çekirdek Hakkında

Biliyoruz ki güncel Pardus 17.x, Debian'ın güncel kararlı sürümü olan Debian 9'u temel almakta. Ve Debian da kararlı sürümünde genellikle kullanılan paketlerde kararlı olan fakat daha eski sürümleri kullanmakta. Bir süredir dile getirilen Pardus'un güncel çekirdek versiyonu kullanması talebi de tam olarak burada baş göstermekte. Çekirdek versiyonları genellikle yeni çıkan donanımlara uyumluluk, sürücü destekleri, yazılım uyumlulukları ve yeni donanımlarla birlikte performans kazançlarını doğurmakta. Debian Kararlı sürümü de bu nedenlerden dolayı backport isimli bir depoda kararlı sürüm için güncel çekirdekleri barındırmakta. Bu olaya geçmeden önce güncel dağıtımların kullandıkları çekirdek versiyonlarını yazmak istiyorum.

Fedora 26 : 4.11 *** Fedora 27 : 4.13 *** Fedora 28 : 4.16
Manjoro 17.1.12 : 4.17 *** Manjoro Kararlı : 4.19rc4
Linux Mint 18.3 : 4.10 *** Linux Mint 19 : 4.15
Ubuntu 17.10 : 4.13 *** Ubuntu 18.04 : 4.15
OpenSUSE 15 : 4.12 *** OpenSUSE tumbleweed : 4.18
CentOS 7 : 3.10
Kali Linux 2017.3 : 4.13.10 *** Kali Linux 2018.3 : 4.17
Debian 9 : 4.9 *** Debian 10 : 4.18 *** Debian Kararsız : 4.18
Pardus 17.3 : 4.9

Görüldüğü gibi özellikle sunucu işlerine yakın olan dağıtımlar daha eski ama kararlı çekirdek sürümlerini, son kullanıcıya yakın olan dağıtımlar ise güncel versiyonlarında güncel çekirdek sürümlerini kullanmaktalar.

kernel.org'da yer alan güncel bilgilere göre ise Linux çekirdek 4.9 ve 4.14 şuan için LTS desteğine sahip. 4.18 ise kararlı çekirdek olarak adlandırılmakta.

Bugünün tarihiyle Pardus 17.2'de "uname -a" komutu ile çekirdek versiyonuna baktığımızda "4.9.88" olduğunu görmekteyiz. Bu sürümün resmi olarak güncellemesi için Pardus'un deposunda ilgili paketlerin bulunması gerekiyor fakat şuan için bunu Debian depolarını kullanarak da yapabiliriz. Tabi ki bu süreçte çekirdek ve çekirdek kütüphaneleri kullanacak her uygulama için bir şekilde uyumluluk çalışması yapılması gerekir.

Eğer Debian'ın backport deposunu kullanmak istiyorsanız, öncelikle aşağıdaki komut ile depoyu sisteminize eklemeniz ve depo listelerini güncellemeniz gerekmektedir:
sudo echo "deb http://ftp.debian.org/debian stretch-backports main" | sudo tee -a /etc/apt/sources.list > /dev/null
sudo apt-get update
Bu adımdan sonra aşağıdaki komut ile güncel olarak hangi linux çekirdek sürümlerinin olduğunu görebiliyoruz:
apt search linux-image
Şuan için bu komut uygulandığında 4.18 sürümünün olduğunu görebiliyoruz. 4.18 kernel.org'a göre kararlı çekirdek sürümü olduğunu tekrar belirtmek isterim. Bu aşamada kararlılığın bozulmaması için aşağıdaki komut ile bir güncelleme yapmamız gerekmektedir. Bu aşama stretch-backports'u daha sonra kullanmazsanız da kararsızlığa yol açabilir.
sudo apt-get -t stretch-backports upgrade
Ve bu adımdan sonra güncel linux çekirdeğini yükleyebiliriz:
sudo apt-get -t stretch-backports install linux-image-4.18.0-0.bpo.1-amd64
Bu işlem bittikten sonra bilgisayarınızı yeniden başlatıp GRUB ekranından 4.18 sürümlü çekirdeği seçerek ilerlemeniz gerekmekte. Ki zaten bu süreçte varsayılan olarak en güncel çekirdek seçili gelecektir.

Yeniden başlatıldıktan sonra artık "uname -a" komutu ile güncel çekirdeği gözlemleyebilirsiniz.

Sistemde mevcut çekirdekleri listelemek için:
dpkg --get-selections|grep linux-image
Herhangi birisini kaldırmak için aşağıdaki komutu yazabilirsiniz
sudo apt-get remove linux-image-4.9.0-6-amd64
Güncel çekirdek ile daha fazla donanım ve yazılım desteğinde çözüme kavuşabilirsiniz.

Kolay gelsin.

Uzak Bilgisayarda Kod Geliştirme

Bugün genellikle vi ve vim ile çözülen sorunlardan birisi olarak uzak bilgisayarda kod geliştirme yapma konusunda en pratik bulduğum alternatif yöntemden bahsedeceğim. Microsoft'un geliştirdiği açık kaynak kodlu Visual Studio Code üzerinde eklentilerle bu işi yapacağız.

Öncelikle kendi sisteminizde Visual Studio Code'un yüklü olduğunu varsayıyorum ve eklentilerde "Remote VSCode" olarak aratıp ilgili eklentinin yüklenmesini sağlamalısınız.Eklenti yüklendikten sonra uygulamayı yeniden başlatmanız gerekmektedir.


Daha sonra ve ilerleyen tüm süreçte uzaktaki bilgisayarda (kodların bulunduğu) aşağıdaki komutları çalıştırarak rmate uygulamasını yüklemeniz gerekmekte:
sudo wget -O /usr/local/bin/rmate https://raw.github.com/aurora/rmate/master/rmate
sudo chmod a+x /usr/local/bin/rmate
Daha sonra tekrar kendi bilgisayarınızda VS Code uygulamasında iken CTRL + P tuşlarına basarak açılan komut kutusuna ">Remote: Start Server" yazmanız gerekmekte. Böylelikle sisteminiz uzak makineye bağlanmaya hazır olacaktır.

Ve son olarak kendi bilgisayarınızda aşağıdaki komut ile ilgili porttan giriş sağlamanız gerekmektedir.Tabi ki IP adresini kendinize göre tanımlayarak.
ssh -R 52698:localhost:52698 UZAKMAKİNEIPADRESİ
Bu işlemlerden sonra uzak bilgisayarda aşağıdaki komutu yazdığınızda VS Code üzerinde ilgili dosya açılabilecektir.
rmate deneme.py
VS Code üzerinde ilgili sunucu başlatılmasını başlangıçta yapmak için kullanıcı ayarlarında aşağıdaki kısmı aktif etmek gerekmekte.
  "remote.onstartup": true,
kaynak: https://medium.com/@prtdomingo/editing-files-in-your-linux-virtual-machine-made-a-lot-easier-with-remote-vscode-6bb98d0639a4 

Etki Alanı Nedir?

Etki alanı, ekşisözlükteki ilk tanımı gibi Windows literatüründe domain'e karşılık gelmektedir. Bir çok kişinin bunu yalnızca bu şekilde bilmesi aslında temel olarak bir yanılgıdır. Bu yanılgının kaynağı dilimizde teknolojik alanlarda (özellikle internet alan adları şeklinde kullanılan) "domain" kelimesinin de kullanılmasından kaynaklanmaktadır. Oysa ki bilgisayar alanında tüm domain'lerin Türkçe karşılığı "Etki Alanı"'dır.

Windows kurulu bilgisayarlar 2 farklı ortamda bulunabilirler.Bu ortamlar ya Çalışma Grubu (workspace), ya da Etki Alanı (domain)'dır. Varsayılan olarak Windows kurulu bilgisayar çalışma grubu içerisinde bulunup bu modda iken aynı ağa bağlı diğer cihazları görebilip iletişim kurabilmesine rağmen neredeyse diğer kurumsal özelliklerin hiçbirisine sahip değildir. Windows kurulu bilgisayarın bir diğer ortamı ise Etki Alanı ortamıdır. Bu ortamda ise merkezi bir "sunucu"da bulunan kullanıcı, makine ve diğer bilgiler, aynı etki alanına sahip tüm bilgisayarları ayrı ayrı veya tümleşik olarak etkileyecek biçimde kurgulanabilmektedir.

Etki Alanı ile alakalı olmayarak Windows kurulu bilgisayarlarda varsayılan olarak "Security Accounts Manager" (SAM) isminde bir yapı bulunmaktadır. Bu yapı içerisinde bilgisayardaki yerel kullanıcı bilgileri tutulmaktadır. Bu bilgiler GNU/Linux sistemindeki /etc/passwd ve diğer temel dosyaların bulunduğu yapıyla kıyaslanabilir.

Fakat kurumsal ihtiyaçlardan dolayı tüm kullanıcıların merkezi bir sunucuda tutulup, her bir bilgisayarda ayrı ayrı tutulmaması gereği düşünülmüş ve Etki Alanı Denetçisi (Domain Controller) kavramı ortaya çıkmıştır.

Etki Alanı Denetçisi içerisinde bir çok yapıyı barındırmaktadır. Bu yapılardan en önemlisi kullanıcı bilgilerinin tutulduğu LDAP (Basit İndeks Erişim Protokolü) olarak görülebilir. LDAP bir protokol olup, bu protokolü kullanan bir çok sunucu uygulaması bulunmaktadır. Bu uygulamaları aşağıdaki gibi özetleyebiliriz:

  • OpenLDAP
  • 389 DS (RedHat tarafından kullanılmakta, FreeIPA tarafından tercih edilmekte)
  • LDB (SAMBA4 tarafından kullanılmakta)
  • OpenDS (Sun tarafından kullanılmakta)
  • IBM Directory Server (IBM tarafından kullanılmakta)
  • MS LDAP (MS Aktif Dizin tarafından kullanılmakta)
Bu yazıda anlaşılması gereken en önemli şey Dizin Sistemi (LDAP) ile Etki Alanı Denetçisi'nin aynı şey olmadığıdır. Etki alanı denetleyicisinde dizin sisteminin yanında genellikle DNS sunucu, NTP sunucu ve Kerberos gibi bir ticket sistemi de bulunmaktadır. Benim bildiğim ve aktif kullanılan en önemli 3 etki alanı denetçisi bulunmaktadır. (Univention Corporate Server, Zentyal ve RazDC gibi 3 farklı etki alanı denetçisi de bulunmaktadır)
  • MS Aktif Dizin
  • SAMBA4
  • FreeIPA
Bunlardan ilki ve en çok kullanılanı MS Aktif Dizin olarak söyleyebiliriz. MS Aktif Dizin'in doğal olarak MS Windows'a tam desteği var. GNU/Linux sistemler için ise SAMBA ve Winbind aracılığı ile neredeyse tüm dağıtımlarda kullanılan bir entegrasyonu bulunmaktadır. MS Aktif Dizin'in 2008 sürümünden ilham alınarak benzer şekilde açık kaynak kodlu olarak yayımlanan SAMBA4 de bir etki alanı denetçisidir. Burada belirtmemiz gerekir ki SAMBA, 4 sürümünden önce yalnızca istemciyi "etki alanı"'na dahil etmek için kullanılan bir servis iken SAMBA4 ile birlikte Etki Alanı Denetçisi modu da kullanılabilir olmuştur. Böylelikle MS AD gibi bir etki alanı denetçisi özelliğine sahip olmuştur. Bu özelliği ile MS Windows cihazların da etki alanına bağlanabilmesini sağlayabilmektedir. Yeni geliştirilen özellikle MS Aktif Dizin'in başka bir özelliği olan GPO(Grup İlkesi Nesnesi)'ların kullanılmasına da izin verebilmektedir. Fakat belirtilmesi gerekir ki Server 2008 sonrasındaki özelliklerde problemler bulunabilmektedir.

İlk iki etki alanı denetçisinden bahsettikten sonra Linux üzerinde kullanılabilen bir diğer etki alanı denetçisinden bahsedeceğim. FreeIPA, RedHat tarafından ve topluluk tarafından desteklenen bir etki alanı denetçisidir. İsminin IPA'sının açılımı: Identity (Kimlik), Policy (Politika) ve Audit (Denetim)'dir. Kendi hakkında sayfasında belirtildiği gibi kimlik derken "makine, kullanıcı, sanal makineler, gruplar, kimlik doğrulama bilgileri" kastedilmektedir. Politika derken makine bazlı erişim kontrol işlemleri kastedilmektedir. Denetim kısmı ise ertelendiği belirtilmektedir. Daha sonraki yazılarda bu konularda daha detaylı bilgiler vereceğim.

Etki Alanı Denetçilerinin yönetim arayüzlerinden bahsetmemiz gerekirse. MS Aktif Dizin'i MS Sunucu sürümünde veya "Uzak Sunucu Yönetim Araçları"nda yer alan "Kullanıcılar ve Bilgisayarlar" uygulamasından yönetilebilmektedir. Bir cümlede belirttiğimiz GPO ve başka işler için ayrı araçlar bulunmaktadır. Ayrıca ilgili sunucuyu yönetebilmek için üçüncü parti ücretli farklı araçlar bulunmaktadır. Bunlardan kullandığım iki tanesi için: ManageEngine'in ADManager Plus ve LDAPSoft AD Admin.Daha fazla AD yönetim araçları da ilgili adreste bulabilirsiniz.

SAMBA4 Etki Alanı denetçisinin kontrolü için de yukarıda belirtilen AD araçlarını hatta Microsoft'un kendi aracını bile kullanabilirsiniz. Bunlara ek olarak webmin modülleri ve github üzerinde farklı projelerde belirtilmiş uygulamaları kullanabilirsiniz. Bunlardaki temel özellik LDAP okuyucu ve düzenleyici olduğu için şema dizilimi belli olduktan sonra oldukça rahat kullanılmaktadır. Ki zaten SAMBA4 ve MS AD'nin LDAP dizilimi birbirine çok fazla benzemektedir.

FreeIPA hakkında daha sonra daha detaylı bilgiler vereceğim fakat LDAP yönetim araçlarına ek olarak kendi FreeIPA arayüzünden de yönetebilmektesiniz.