FreeIPA ve Active Directory Entegrasyonu

Kurulum oncesi hazirlik:
  1. FreeIPA Server 4.4.0-14 ( CentOS 7 )
    • IPA Server IP Adresi: 172.16.183.128
    • IPA Server Hostname: ipaserver.piesso.local
    • IPA Domain: piesso.local
    • IPA Netbios: PIESSO
    • IPA Kerberos realm: PIESSO.LOCAL
  2. Windows Server 2012 R2
    • Active Directory IP Adresi: 172.16.183.132
    • Active Directory Hostname: ad.pencere.local
    • Active Directory Domain: pencere.local
    • Active Directory Netbios: PENCERE

Windows Server 2012 R2 ve FreeIPA icin kerberos ticket vs gibi sorunlar yasanmamasi icin ntp ile zaman esitlemesi mutlaka baslatilmalidir. FreeIPA kurulumunda ontanimli olarak ntp client "time sync" islemini ntp pool'larindan alarak esitlemektedir. Fakat Windows Server 2012 R2 uzerinde de bunu yapmak icin manuel ntp pool sunucularini girip zaman servisini yeniden baslatilmasi gerekmektedir.

Warning

2016 Bakanlar Kurulu karari ile yaz saati uygulamasi sona erdigi icin zaman diliminin "+3" oldugunu kontrol edin.

(Powershell uzerinde)

> net stop w32time
> w32tm /config /syncfromflags:manual /manualpeerlist:”0.centos.pool.ntp.org, 1.centos.pool.ntp.org, 2.centos.pool.ntp.org
> w32tm /config /reliable:yes
> net start w32time

FreeIPA ve Active Directory Cross-Realm Trust:

  • Ilk olarak "ipa-adtrust-install" paketini repodan kuralim:
# yum install ipa-adtrust-install
  • IPA Server uzerinde cross-realm islemi icin:
# ipa-adtrust-install --netbios-name=PIESSO -a password

Firewall Konfigurasyonu:

Windows Server uzerinde firewall uzerindeki kurallar otomatik olarak ekleniyor. Fakat IPA Server uzerinde asagidaki portlarin acik olmasi gerekmektedir.

TCP ports: 80, 88, 443, 389, 636, 88, 464, 53, 135, 138, 139, 445, 1024-1300
UDP ports: 88, 464, 53, 123, 138, 139, 389, 445

Centos 7 ile birlikte gelen firewall manager firewalld spesifik servisleri acmak icin halen yetersiz oldugu icin bunu disabled edip yerine klasik iptables'i aktif edelim:

# systemctl disable firewalld
# systemctl stop firewalld
# yum install -y iptables-services
# systemctl enable iptables

"/etc/sysconfig/iptables" dosyasina gerekli olan portlari acmak icin kurallarimizi girelim:

\*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -s ad_ip_address -p tcp -m multiport --dports 389,636 -m state --state NEW,ESTABLISHED -j REJECT
-A INPUT -p tcp -m multiport --dports 80,88,443,389,636,88,464,53,138,139,445 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -p udp -m multiport --dports 88,464,53,123,138,139,389,445 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -p udp -j REJECT
-A INPUT -p tcp -j REJECT
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

Iptables servisini baslatabiliriz:

# systemctl start iptables

DNS Forward Zone:

Active Directory ve FreeIPA'yi inbound ve outbound trust olarak isaretlemeden DNS Forward Zone'lari ekleyelim.

  • Windows Server 2012 R2 uzerinde:
> dnscmd 127.0.0.1 /ZoneAdd piesso.local /Forwarder 172.16.183.128
  • FreeIPA Server uzerinde:
# ipa dnsforwardzone-add pencere.local --forwarder=172.16.183.132 --forward-policy=only
  • Forwarder DNS zone'larin dogru sekilde eklenip eklenmedigi iki tarafta da kontrol edelim:

Windows Server 2012 R2 (PowerShell):

> nslookup
> set type=srv
> _ldap._tcp.ad_domain
> _ldap._tcp.ipa_domain
> quit
  • FreeIPA Server uzerinde:
# dig SRV _ldap._tcp.ipa_domain
# dig SRV _ldap._tcp.ad_domain

Cross-Realm Trust:

Freeipa ile Active Directory arasinda "Two-way trust" konfigurasyonu:

# ipa trust-add --type=ad pencere.local --admin Administrator --password --two-way=true

"Two-way trust" baglantisinin basarili sekilde kurulup kurulmadigini kontrol edelim:

# ipa trust-fetch-domains "pencere.local"
# ipa trustdomain-find "pencere.local"

IPA Client Kurulumu

Kullanilan yazilimlar:
  • Centos Linux 7.2

    • ipa-client
    • ipa-admin-tools

Kurulum Oncesi Hazirlik:

FQDN = ipaclient.piesso.local
IP = 172.16.183.135/24
IPA Server = ipa.piesso.local
IPA DOMAIN = piesso.local
IPA NETBIOS = PIESSO

Kuruluma baslamadan once kontrol edilmesi gerekenler;

  1. Hostname
  2. /etc/hosts
  3. Sistem update

Hostname:

# hostnamectl set-hostname ipaclient.piesso.local

/etc/hosts:

172.16.183.135 ipaclient.piesso.local ipaclient
172.16.183.128 ipa.piesso.local

Sistem update:

# yum update -y

Kurulum:

  • ipa-client ve ipa-admintools yazilimlarinin repodan kurulmasi;
# yum install ipa-client ipa-admintools
  • ipa-client kurulumu;
# ipa-client-install --domain PIESSO.LOCAL --server ipa.piesso.local --realm PIESSO -p host/ipa.piesso.local --enable-dns-updates --force-ntpd

IPA Client ve Kerberos Ticket Testi:

  • FreeIpa sunucusundaki admin kullanicisi ve parolasi ile giris yapin;
# getent passwd admin
# getent group admins
  • Kerberos'tan ticket alimi;
# kinit admin
  • Ticketin basarili alinip alinmadigi kontrolu;
# klist
  • Hersey saglam gorunuyorsa client dns'lerini FreeIPA Server adresine donusturulmesi;

/etc/resolv.conf:

search piesso.local
nameserver 172.16.183.128

Centos 7 uzerine FreeIPA Kurulumu

Kullanilan yazilimlar:

  • Centos Linux 7.2
  • ipa-server 4.2.0
  • ipa-server-dns 4.2.0
  • bind-dyndb-ldap 8.0
  • bind 9.9.4

Kurulum Oncesi Hazirlik:

FQDN: ipa.piesso.local
IP: 172.16.183.128/24
IPA DOMAIN: piesso.local
IPA NETBIOS: PIESSO

Kuruluma baslamadan once kontrol edilmesi gerekenler;

  1. Hostname
  2. /etc/hosts
  3. Statik IP
  4. Sistem update

1. Hostname:

# hostnamectl set-hostname ipa.piesso.local

2. /etc/hosts:

172.16.183.128 ipa.piesso.local ipa

3. Statik IP:

Ornek statik ip konfigurasyonu "/etc/sysconfig/network-scripts/ifcfg-xxxx"

ONBOOT= yes
BOOTPROTO= none
IPADDR= 172.16.183.128
PREFIX= 24
GATEWAY= 172.16.183.2
DNS1= 8.8.8.8
DNS2= 8.8.4.4
DEFROUTE= yes

4. Sistem update:

# yum update -y

Kurulum:

  • ipa-server, integrated dns, ad trust ve ldap back-end plugin yazilimlarinin repodan kurulmasi;
# yum install ipa-server ipa-server-dns bind-dyndb-ldap ipa-server-trust-ad
  • ipa-server kurulumu;
# ipa-server-install -a IpaAdminpassword -p IpaManagerpassword --domain=piesso.local --realm=piesso.local --setup-dns --no-forwarders -U
  • ipa-server kurulumu asagidaki sekilde basari ile biterse firewalld daemonuna gerekli port izinlerinin verilmesi;
Restarting the web server
==============================================================================
Setup complete

Next steps:
      1. You must make sure these network ports are open:
                 TCP Ports:
                   * 80, 443: HTTP/HTTPS
                   * 389, 636: LDAP/LDAPS
                   * 88, 464: kerberos
                   * 53: bind
                 UDP Ports:
                   * 88, 464: kerberos
                   * 53: bind
                   * 123: ntp
      2. You can now obtain a kerberos ticket using the command: 'kinit admin'
         This ticket will allow you to use the IPA tools (e.g., ipa user-add)
         and the web user interface.

Be sure to back up the CA certificate stored in /root/cacert.p12
This file is required to create replicas. The password for this
file is the Directory Manager password
# firewall-cmd --permanent --add-service={http,https,ldap,ldaps,kerberos,dns,kpasswd,ntp}
# firewall-cmd --reload
  • Firewall kurallarinin kontrol edilmesi;
# firewall-cmd --list-services

IPA Server ve Kerberos Ticket Testi:

  • Kerberos'tan ticket alimi;
# kinit admin
  • Ticketin basarili alinip alinmadigi kontrolu;
# klist
  • ipa-server servislerinin kontrolu;
# ipactl status
  • Hersey saglam gorunuyorsa sunucu dnslerini local adrese donusturulmesi;

/etc/resolv.conf:

search piesso.local
nameserver 127.0.0.1

Linux Yaz Kampi 2014

Ilki 2010 yilinda Isik Universitesi'nde baslayan Linux Yaz Kampi, bu yil 3.defa Bolu Abant Izzet Baysal Universitesi ev sahipliginde 11-23 Agustos tarihleri arasinda yapilacak.

  1. Linux Yaz Kampi ( 2010 - Isik Universitesi )
  2. Linux Yaz Kampi ( 2011 - Duzce Universitesi )
  3. Linux Yaz Kampi ( 2012 - Bolu Abant Izzet Baysal Universitesi )
  4. Linux Yaz Kampi ( 2013 - Bolu Abant Izzet Baysal Universitesi )
  5. Linux Yaz Kampi ( 2014 - Bolu Abant Izzet Baysal Universitesi )
Sadece bir sinif ve 20-30 kisi ile baslayan Linux Yaz Kampi, artik 10'u askin siniflarda 2 seviyede Linux Sistem Yonetimi, php-ruby-java egitimleri ve yuzlerce kisinin katilimiyla buyumeye devam ediyor. Bu yilki basvurularin kapanmasina az sure kalmis iken 1000'i askin basvuru yapildi. Ayrica bu yil ki yaz kampina uc farkli egitim eklendi:
  • Python/Django ile Web Programlama
  • Web Uygulama Guvenligi ve Guvenli Kod Gelistirme
  • Tersine Muhendislik
Yeni eklenen bu egitimler ile beraber toplam 8 kurs bulunuyor. Bu yilda guzel, eglenceli ve verimli yaz kampi olmasi dilegiyle.

Linux Yaz Kampi icin detayli bilgi icin tiklayin.

Gentoo ve Systemd

Systemd büyük bir hızla ,öncelikle güncel linux dağıtımlarında yerini almaya başladı.Systemd linux çekirdeği için geliştirilen ve klasik init sistemlerinin(openrc vs.) yerine geçecek olan daha hızlı ve kararlı bir sistem yönetim daemonu.

systemd pstree çıktısı systemd pstree çıktısı

init pstree çıktısı init pstree çıktısı

Yukardaki ekran görüntüleri örneklerinde de gördüğünüz gibi systemd 'nin sistem üzerindeki ilk daemon(ve proses) olduğu ve userspace üzerinde çalışacak olan tüm prosesler klasik init sistemlerinde olduğu gibi systemd'nin alt proseslerini oluşturmaktadir.Systemd'nin yapısını biraz daha iyi anlamak için aşağıdaki şema yardımcı olacaktır.

Systemd Bileşenleri Systemd Bileşenleri

Binary Linux Dağıtımlarında eğer systemd'ye geçilmişse ayrıca birşey yapmanıza gerek yok.Fakat Gentoo Linux dağıtımında şu an stage 3'te öntanımlı gelmediği için kendiniz yardımcı araçlarla geçebilirsiniz.(ki gentoo geliştiricileri bunun için birçok şeyi hazırlamış bulunmakta.)

Kısa adımlarla systemd'ye geçişten bahsedebilirim:

  1. İlk olarak çekirdeğimize systemd için gerekli destekleri verelim.Gentoo geliştiricileri bu konuda kullanıcıları rahatlamak için güncel kernel sürümlerinde "kernel konfigürasyon menüsü"ne eklenen "Gentoo Linux" sekmesinin altında bulunan "Support for init systems, system and service managers" alt sekmesinin içinde bulunan "systemd" seçeneğini seçerek kernel için gerekli tüm destekleri kolayca verebilirsiniz.Bu seçenek sizin zorunlu olan destekleri tek tek elle vermek yerine hızlıca yapmanizi sağlayan bir kısayol.

Gerekli destekleri verdikten sonra kernelimizi ve modüllerimizi yeniden derleyin.

  1. Kullandığınız herhangi grafik arabirimi ya da hangi sistem ise "Gentoo" profilinizi "systemd" profiline değiştirerek gerekli profil değişiklerini tanımlayın.
    # eselect profile list

Available profile symlink targets: [1]   default/linux/amd64/13.0 [2]   default/linux/amd64/13.0/selinux [3]   default/linux/amd64/13.0/desktop [4]   default/linux/amd64/13.0/desktop/gnome * [5]   default/linux/amd64/13.0/desktop/gnome/systemd [6]   default/linux/amd64/13.0/desktop/kde [7]   default/linux/amd64/13.0/desktop/kde/systemd [8]   default/linux/amd64/13.0/developer [9]   default/linux/amd64/13.0/no-multilib [10]  default/linux/amd64/13.0/x32 [11]  hardened/linux/amd64 [12]  hardened/linux/amd64/selinux [13]  hardened/linux/amd64/no-multilib [14]  hardened/linux/amd64/no-multilib/selinux [15]  hardened/linux/amd64/x32 [16]  hardened/linux/uclibc/amd64 Beşinci seçenekte olan "default/linux/amd64/13.0/desktop/gnome/systemd" profili ile değiştirelim.

# eselect profile set 5
 
  1. Bu adımda "systemd"yi yükleyelim.
    # emerge --ask systemd
  2. Profilimizi değiştirdiğimiz için sistemi güncellemeden önce "sys-apps/dbus" uygulamasının "systemd" USE FLAG'ını deaktif(

    /etc/portage/package.use dosyasınıza "sys-apps/dbus -systemd"
    şeklindeki satırı ekleyin.) edin ve daha sonra sistemi güncelleyin.
    # emerge -NuDa world
    Sistemimize bu şekilde gerekli systemd desteğini vererek "systemd" ile açılmasına hazır hale getirdik.
  3. Yeniden başlatmadan önce sistemin systemd ile başlaması için ön yükleyicinizin kernel satırına(grub için) aşağıdaki gibi ekleyin:

( /boot/grub/menu.lst )

kernel /vmlinuz-3.7.10-r1 root=/dev/sda2 init=/usr/lib/systemd/systemd
Grub 2 için;

( /boot/grub/grub.cfg )

linux /vmlinuz-3.7.10-r1 root=UUID=21312312-12312312-1231121 init=/usr/lib/systemd/systemd
UEFI kullanan sistemler için 1.adımda kernel derlemeden önce "kernel konfigürasyon menüsü"nde "Processor type and features" -> "Built-in kernel command line" içine aşağıdaki gibi ekleyebilirsiniz;
root=/dev/sda2 init=/usr/lib/systemd/systemd
6.Sistemi yeniden başlatın.

7.Sistem yeniden başladıktan sonra eski(Openrc vs.) init sistemi üzerinde tanımladığımız hostname,locale ayarları artık systemd üzerinde geçerli olmayacaktır.

Systemd hostname ayarlamak için;

# hostnamectl set-hostname benimpc
Systemd klavye ayarları için;
# localectl set-keymap trq
X11 için;
# localectl set-x11-keymap tr
Sistem locale ayarı için;
# localectl set-locale LANG=en_US.UTF-8
Türkçe için;
# localectl set-locale LANG=tr_TR.UTF-8
8.Yukardaki adımda sistem için gerekli tanımlamaları yaptık.Fakat herhangi bir grafik arabirimi kullanıyorsanız,bu açılmayacaktır.Systemd üzerinde de diğer init sistemlerinde olduğu gibi gerekli olan servisleri sistem açılışına ekleyebilir,servisleri çalıştırabilir,durumunu öğrenebilir ve bir servisi durdurabiliriz.

Systemd üzerinde sistem açılışında aktif olan servis ya da  hizmetleri ve bunların durumlarını görmek için;

# systemctl
Aktif ve deaktif tüm servislerin durumunu görmek için;
# systemctl list-unit-files
Herhangi bir servisi sistem açılışına eklemek için;
# systemd enable vixie-cron.service
Herhangi bir servisi çalıştırmak için;
# systemctl start syslog-ng.service
NOT: systemd herhangi bir syslog yazılımına ihtiyaç duymamaktadır.Systemd üzerinde journal log bilgilerini tutmaktadır.

Herhangi bir servisin durumunu görmek için;

# systemctl status NetworkManager.service
Herhangi bir servisi durdurmak için;
# systemctl stop upower.service
Herhangi bir servisi yeniden başlatmak için;
# systemctl restart dhcpcd.service
NOT: Gerekli olan servisleri sistem açılışında aktif etmeyi ihmal etmeyin.Grafik arabirimini sistem açılışında başlaması için örnek olarak "xdm"i sistem açılışında aktif etmek için;
# systemctl enable xdm.service
Burada dikkat edilecek nokta openrc'den systemd'ye geçişte "/etc/conf.d/xdm" içerisinde yapmış olduğumuz herhangi bir "display manager" ayarımız geçersiz olacaktır.Geçerli olan "display manager"i xdm'nin açılışta çalıştırması istiyorsanız;

"/usr/lib/systemd/system/xdm.service" dosyası içindeki ,

[Service]
ExecStart=/usr/bin/xdm -nodaemon
--> satırını;

(GDM için)

[Service]
ExecStart=/usr/bin/gdm
---> şeklinde değiştirin.Bu şekilde sistem açılışında "gdm"yi aktifleştirebiliyoruz.
  1. Değinebileceğim diğer bir nokta ise açılışta otomatik yüklenmesi istediğiniz modüller ve network ayarları.

Sistem açılışında otomatik yüklenmesi istediğiniz modül ya da  modülleri "/etc/modules-load.d" dizini içerisine isterseniz ayrı ayrı,istediğiniz sekilde isimlendirdiğiniz dosyaların içerisine ilk satıra ve ya tek bir dosya içerisinde her modül tek satırda olacak şekilde yazabilirsiniz.Örnek:

( /etc/modules-load.d/modullerim.conf )

bridge

tun

şeklinde ekleyebilirsiniz.

Network Ayarları kısmında ise ,kablolu ve otomatik ip alan bir networkte bulunuyorsanız, açılışta dhcpcd servisini aktif etmeniz yeterli.

# systemctl enable dhcpcd.service
Eğer network-manager kullanıyorsanız , sistem açılışında aktif etmek için;
# systemctl enable NetworkManager.service
Ya da farklı bir network modelinde çalışıp kendiniz oluşturmak için kolayca systemd servis dosyası yazabiliriz."/etc/systemd/system" dizini içerisine kendi istediğimiz modelde bir script yazarak açılışta aktif edebiliriz.Örnek olarak;

( /etc/systemd/system/mynetwork.service )

[Unit]
Description=network ayarlarim
After=network.target

[Service] Type=oneshot RemainAfterExit=yes

EnvironmentFile=/etc/conf.d/bridge.conf

ExecStart=/bin/ifconfig eth0 up ExecStart=/bin/ifconfig eth1 up ExecStart=/usr/bin/tunctl -b -u rico -t tap0 ExecStart=/bin/ifconfig tap0 up promisc ExecStart=/sbin/brctl addbr br0 ExecStart=/sbin/brctl addif br0 eth0 ExecStart=/sbin/brctl addif br0 eth1 ExecStart=/sbin/brctl addif br0 tap0 ExecStart=/sbin/dhcpcd br0

ExecStop=/usr/bin/killall dhcpcd ExecStop=/bin/ifconfig eth0 down ExecStop=/bin/ifconfig eth1 down ExecStop=/bin/ifconfig tap0 down ExecStop=/sbin/brctl delif br0 tap0 ExecStop=/usr/bin/tunctl -d tap0 ExecStop=/sbin/brctl delif br0 eth0 ExecStop=/sbin/brctl delif br0 eth1 ExecStop=/bin/ifconfig br0 down ExexStop=/sbin/brctl delbr br0

[Install] WantedBy=multi-user.target

Systemd ile iyi keyifler :)