Ovirt/RHEV 4.2 Engine SSL Yapılandırma – Bölüm 8

Selfsign ssl kullanan oVirt, aşağıdaki görselden de anlaşılacağı üzere trusted değil.

Bunun yerine doğrulanmış, satın alınmış ssl’inizle değiştirebilirsiniz. Bunun için aşağıdaki adımları takip etmeniz yeterli. Trusted ssl’lerimizi “/tmp/ssl/” (ca, crt, key)dizini altına attık.

Satın alınmış ssl ca yı “/etc/pki/ca-trust/source/anchors/” dizine kopyalayalım ve update certificate edelim.

> cp /tmp/ssl/certificate.ca certificate.pem

> update-ca-trust

Aşağıdaki pem dosyasını silebiliriz.

> rm /etc/pki/ovirt-engine/apache-ca.pem

Satın alınmış ssl ca yı “/etc/pki/ovirt-engine/” dizinine de kopyalayalım.

> cp /tmp/ssl/certificate.ca /etc/pki/ovirt-engine/apache-ca.pem

Eski selfsign sertifikalarının yedeğini alalım.

> cp /etc/pki/ovirt-engine/keys/apache.key.nopass /etc/pki/ovirt-engine/keys/apache.key.nopass.bak

> cp /etc/pki/ovirt-engine/certs/apache.cer /etc/pki/ovirt-engine/certs/apache.cer.bak

Satın alınmış ssl key sertifikasını “/etc/pki/ovirt-engine/keys/” dizinine atalım.

> cp /tmp/ssl/certificate.key /etc/pki/ovirt-engine/keys/apache.key.nopass

Aynı şekilde satın alınmış ssl crt dosyamızıda “/etc/pki/ovirt-engine/certs/” dizinine atalım.

> cp /tmp/ssl/certificate.crt /etc/pki/ovirt-engine/certs/apache.cer

Apache servisini yeniden başlatalım.

> systemctl restart httpd.service

Şimdi aşağıdaki dosyaların içeriğine ilgili satırları ekleyin.

vi /etc/ovirt-engine/engine.conf.d/99-custom-truststore.confedit‘leyin ve aşağıdaki satırları ekleyin.

– ENGINE_HTTPS_PKI_TRUST_STORE=”/etc/pki/java/cacerts”

– ENGINE_HTTPS_PKI_TRUST_STORE_PASSWORD=””

vi /etc/ovirt-engine/ovirt-websocket-proxy.conf.d/10-setup.conf” dosyasını da edit‘leyin ve aşağıdaki satırları ekleyin.

– PROXY_PORT=6100

– SSL_CERTIFICATE=/etc/pki/ovirt-engine/certs/apache.cer

– SSL_KEY=/etc/pki/ovirt-engine/keys/apache.key.nopass

– #SSL_CERTIFICATE=/etc/pki/ovirt-engine/certs/websocket-proxy.cer

– #SSL_KEY=/etc/pki/ovirt-engine/keys/websocket-proxy.key.nopass

– CERT_FOR_DATA_VERIFICATION=/etc/pki/ovirt-engine/certs/engine.cer

– SSL_ONLY=True

Son olarak aşağıdaki servisleri yeniden başlatın.

> systemctl restart ovirt-provider-ovn.service

> systemctl restart ovirt-engine.service

Ve görünüm aşağıdaki gibidir.

UFW – Uncomplicated Firewall

UFW(Uncomplicated Firewall) Ubuntu Linux’lar için varsayılan olarak gelen güvenlik duvarı aracıdır.

Ufw (Uncomplicated Firewall)’nun iptables’a alternatif olmasında ki en büyük etken güvenlik duvarı olarak kullanıcıya kolay kullanım sağlamasıdır. Bu yüzden Linux topluluğu tarafından kısa zamanda desteklenip, popüler hale gelmiştir ve birçok dağıtımda gömülü bir şekilde gelmektedir.

Ufw sistemde inactive olarak gelmektedir. Çalışır vaziyete getirmek için active hale getirilmelidir. Bunun için aşağıdaki komutu kullanılabilir.

Ufw’yu active hale getirmek için,

> sudo ufw enable

Tekrar inactive mode’ye getirmek için,

> sudo ufw disable

Aslında her güvenlik duvarı yönetiminde işleri kolaylaştıracak ve güvenliği sağlayacak ilk hareket içerden dışarı çıkışları serbest hale getirmek, dışardan içeri girişleri ise engellemektir.

NoT : Hatta içerden dışarı ağ akışını daha sıkı hale getirebilirsiniz, yani lokaldeki kullanıcıları içerden dışarı çıkışta da sınırlandırılabilir. Yalnızca ve gerekmedikçe varsayılan olarak 80 ve 443 portlarını açık bırakıbilir. Bunun için “sudo ufw default deny outgoing” komutunu çalıştırdıktan sonra 80 ve 443’e izin vermek için kural girilmelidir (ilgili kuralları aşağıda gösterilecektir). Tabi bu durum beraberinde yönetim zorluğuyla beraber kural sıklığını da getirecektir.

Dışardan içeri gelen paketleri engellemek için,

> sudo ufw default deny incoming

İçerden dışarı çıkan paketlere izin vermek için,

> sudo ufw default allow outgoing

Servis bazında; ssh servisine izin vermek için,

> sudo ufw allow ssh

 

Servis bazında; ssh servisine engellemek için,

> sudo ufw deny ssh

 

Port bazında izin vermek için,

> sudo ufw alllow 22/tcp

> sudo ufw allow 53/udp

 

Port bazında engellemek için,

> sudo ufw deny 22/tcp

 

Port aralığına izin vermek için,

> sudo ufw allow 1500:2500/tcp

> sudo ufw allow 1500:2500/udp

 

Port aralığını engellemek için,

> sudo ufw deny 1500:2500/tcp

> sudo ufw deny 1500:2500/udp

 

İp’ye izin vermek için,

> sudo ufw allow from 192.168.0.25

 

İp’yi engellemek için,

> sudo ufw deny from 192.168.0.25

 

Var olan, izin verilmiş kuralı silmek için,

> sudo ufw delete allow ssh

> sudo ufw delete allow 80/tcp

> sudo ufw delete allow 1500:2500/tcp

 

Var olan, engellenmiş kuralı silmek için,

> sudo ufw delete deny ssh

> sudo ufw delete deny 80/tcp

> sudo ufw delete deny 1500:2500/tcp

 

Şimdi “sudo ufw status numbered” komutu ile yapılan kurallar listelenecektir.

Yukarıda numbered parametresi ile görüntülenen kurallar aşağıdaki gibi sıra numarasına göre de silinebilir.

> sudo ufw delete [number]

Tüm kuralları “sudo ufw status” ile beraber verbose parametresini ekleyerek de her ayrıntı görüntülenebilir.

> sudo ufw status verbose

Tüm kuralları sıfırlamak yani ufw’yu varsayılana, default(fabrika çıkışına)’a çekmek için aşağıdaki komutu kullanılabilir.

> sudo ufw reset

Ayrıca ufw güvenlik duvarı için log‘lamayı aktif/pasif etmek için aşağıdaki komutu kullanabilirsiniz. Log takibini ise “/var/log/syslog” dosyası üzerinden yapabilirsiniz.

> sudo ufw logging ON/OFF

Ovirt/RHEV 4.2 Engine LDAP Yapılandırma – Bölüm 7

Engine login olduktan sonra, aşağıdaki komutla ilgili yapılandırma paketin varlığını kontrol edelim.

> rpm -qa | egrep -i ovirt-engine-extension-aaa-ldap-setup

Eğer paket yoksa aşağıdaki komut ile kurulumu gerçekleştirelim.

> yum install ovirt-engine-extension-aaa-ldap-setup

Şimdi aşağıdaki komut ile yapılandırmaya başlayaşlım.

> ovirt-engine-extension-aaa-ldap-setup

Komutu girdikten sonra aşağıdaki gibi sizden belirtilen çeşitlerdeki LDAP‘lardan bağlantı sağlayacağınız LDAP‘ın ilgili numarasını girmenizi beklemektedir. Ben FreeIPA kullandığım için 6 numarayı seçip devam ediyorum.

Ardından DNS sunucu kullanacakmısınız diye soruyor, single server(1) seçip devam ediyorum. Eğer sizin ortamınızda birden fazla varsa diğer DNS sunucularınızı da belirtebilirsiniz.

startTLS ve Insecure seçip devam ediyorum.

LDAP bağlantısı için belirlediğim kullanıcı ile beraber search user DN bilgilerini EKSİKSİZ ve DOĞRU bir şekilde girip, base DN(fatlan.com gibi)’ide girdikten sonra, yes diyerek tekrar devam ediyorum.

Ardından GUI de görünecek name‘yi (fatlan.com gibi) girip devam ediyorum.

İsterseniz burda test için belirlediğiniz user ile test edebilirsiniz.

Daha sonra Done diyerek işlemleri sonlandırıyorum.

En son olarak Engine servisini restart etmeniz gerekiyor.

> systemctl restart ovirt-engine.service

Ardında Engine GUI de giriş yapabiliriz. Aşağıdaki gibi kullanıcı yetkili değil diye uyarı veriyor, aslında login olabildiniz fakat daha önceden kullanıcıya herhangi bir role atanmadığı için bu uyarıyı veriyor. Local admin ile ilglil kullanıcıya role tanımladığınızda GUI ona göre açılacaktır.

Bölüm 8: http://www.fatlan.com/ovirt-rhev-4-2-engine-ssl-yapilandirma-bolum-8/

Selinux (Security Enhanced Linux) nedir.?

Selinux C dilinde, 1999 yılında NSA tarafından ordu için geliştirilmiş ve daha sonrasında Linux çekirdeğine eklenmiş ek bir güvenlik protokolü modülüdür. Selinux başta RedHat olmak üzere, özellikle türevi Linux dağıtımlarında entegre olarak gelmektedir fakat buna rağmen hepsi bu modülü entegre olarak içinde barındırmamaktadır. Ubuntu buna örnek olarak verilebilir ancak sonradan kurulum gerçekleştirilebilir.

Selinux kullanıcı programlarına, sistem servislerine, dosyalarına ve ağ kaynaklarına erişimi kısıtlayan zorunlu erişim kontrolü protokolüdür desek yanlış olmaz. Temel olarak iki modelde çalışır. DAC (Discretionary Access Control-İsteğe Bağlı Erişim Kontrolü) ve MAC (Mandatory Access Control-Zorunlu Erişim Kontrolü) mekanizmalarıdır. Temel çalışma prensibi kullanıcı ve sistem servislerinde yapılması gereken işlemleri en az yetki ile sınırlandırmayı amaçlar. DAC, kullanıcının ya da sürecin kaynaklara erişimini kullanıcı sahipliğine veya izinlerine bakarak belirler. MAC, kullanıcıların oluşturdukları nesnelerin üzerindeki denetim düzeyini, tüm dosya sistemi nesneleri için ek etiket ekleyerek kısıtlar. Dolayısıyla kullanıcı ya da süreçlerin bu dosyalara erişebilmesi için etiketlere uygun erişim haklarının olması gerekiyor. Bu arada MAC DAC’a müdahele etmemektedir yani onu ezmemektedir.

Konunun daha iyi anlaşılması için etiketler incelenerek detaylandırılacaktır. ls’in Z parametresini kullanarak kullanıcı, servislerin ya da portların etiketlerini görüntülenebilir.

/etc/passwd dosyası incelendiğinde,

> ls -Z /etc/passwd

Çıktı aşağıdaki gibidir.

-rw-r–r–. root root system_u:object_r:passwd_file_t:s0 /etc/passwd

Selinux şartların takibini “user:role:type:level” göre yapar, yani yukarıdaki örneği baz alırsak “system_u:object_r:passwd_file_t:s0” olarak yetki politikası belirler.

Şimdi “touch” komutu ile kök dizine (/) (dosya istenilen dizinde de oluşturabilir) bir dosya oluşturup onun etiketlerini kontrol edildiğinde,

> touch fatihaslan

Şimdi etiketleri “ls -Z” ile kontrol edildiğinde,

> ls -Z /fatihaslan

Çıktı aşağıdaki gibidir.

-rw-r–r–. root root unconfined_u:object_r:etc_runtime_t:s0 /fatihaslan

Http servisi için etiketi görüntülendiğinde.

> ls -Zd /etc/httpd/

Alt klasörlerle beraber listelemek,

> ls -Z /etc/httpd/

NoT : Her dosyanın etiketi, üstündeki klasörün etiketi neyse onu çekmektedir.

Şimdi “/var/www/html/” dizinin içine index.html dosyası oluşturulup, içine de Fatih ASLAN yazılacaktır ve alacağı etiket “httpd_sys_content_t” olacaktır çünkü “/var/www/html/” dizininin etiketi “httpd_sys_content_t”dir.

> ls -Zd /var/www/html/index.html

NoT : “cp” komutu ile kopyalanan dosyanın etiketi hedef dizininin etiketi olacaktır fakat “mv” komutu ile dosya taşınırsa kaynak dizinin etiketi kalmaya devam edecektir. Aşağıdaki görüntüden de anlaşılabilir.

Bu bilgiler ışığında sistem de anormal sorunlar çıktığında ve kullanıcı, dosya izinlerinde de sorun yoksa Selinux kısmını da bakılmalıdır ki etiket kısmında sorun olabileceğinden Selinux erişim sorunu çıkaracaktır.

Hazır yeri gelmişken bir konudan daha bahsetmek gerekmektedir. Yukarıdan da anlaşılacağı üzere herhangi sebepten ya da dosyanın taşınmasından ötürü etiketi bozulmuş olan dosyaları bulunduğu dizindeki etikete taşımamak için “restorecon” komutunu kullanılabilir. Aşağıda örnek gösterilmiştir.

> restorecon -Rv /var/www/html/

Ayrıca “semanage” komutu ile kullanıcı tarafında ki etiketler de görüntülenebilir.

> semanage user -l

Çıktı aşağıdaki gibidir.

Hatta tüm portlara atanan Selinux etiketlerini de “semanage” komutu ile görüntülenebilir. Fakat aşağıdaki örnekte sadece httpd servisi için atanan portlardaki etiketler görüntülenecektir.

> semanage port -l | egrep ^http_port_t

Süreçlere(process) ait etiketleri aşağıdaki komut ile elde edilebilir.

> ps -eZ

Özel olarak kullanıcıya ait etiketi görmek için aşağıdaki komutu kullanılabilir.

> id -Z

Bu aşamadan sonra Selinux’un çalışma mod’larına bakıp, yukarıdaki teknik bilgiler ışığında hangi çalışma durumunda kalmasını da aktardıktan sonra Selinux kısmı noktalanacaktır. Öncesinde “/etc/selinux/configcat ile okutalım, ardından SELINUX ve SELINUXTYPE parametlerinden rahatlıkla bahsedebilelim.

SELINUX=enforcing, Selinux ilkelerine dayalı kurallarının geçerli olduğu yani aktif çalıştığı mod’dur.

SELINUX=permissive, Selinux politikası uygulanmaz fakat log tuttuğu mod’dur.

SELINUX=disabled, Selinux’un devredışı olduğu mod’dur. Sadece DAC kuralları geçerlidir.

SELINUXTYPE=targeted, hedeflenen ilkelerde uygulanan varsayılan politikadır.

SELINUXTYPE=mls, çok seviyeli güvenlik politikasıdır.

Şimdi hangi mod’da çalıştığı görüntülenecektir.

> getenforce

Daha ayrıntılı görmek için aşağıdaki komut kullanılabilir.

> sestatus

Mod’lar arsında geçişi direk “/etc/selinux/config” dosyasından düzenleyerek yapabilir ya da “setenforce” komutu kullanabilir. Aşağıdaki görselde durum daha net anlaşılacaktır.

IP Tables

IPTables netfilter takımı ve birçok destekleyici tarafından geliştirilen güvenlik duvarı yazılımıdır.

Komutlar için kullanılan kavramlar,

            ACCEPT : Gelen paketleri kabul eder.

            DROP : Gelen paketleri düşürür. Kullanıcıya bilgi vermez.

            REJECT : Gelen paketleri reddeder ve kullanıcıya bilgi verir.

            FORWARD : Gelen paketleri yönlendirir.

            INPUT : Gelen paketleri temsil eder.

            OUTPUT : Giden paketleri temsil eder.

Aşağıdaki komut ile iptables detaylarını görüntüleyebilirsiniz. Henüz yapılandırılmamış iptables görüntüsü aşağıdaki gibidir.

> iptables -L

Fakat komutu “iptables -L –line-numbers” olarak kullanmanız önerilir çünkü kurallar satır numarasıyla görülür. Bu komut kuralları silmek için gerekecektir.

Aşağıdaki komut ile yerel makineden 192.168.1.25 ip’sine çıkışı engelleyen kural girilebilir. “Iinput kural girmek manasına gelmektedir, “OUTPUT” dışarı çıkarken, “ddestination hedef, “jjump kurala uyan paketler manasındadır.

> iptables -I OUTPUT -d 192.168.1.25 -j DROP

Ya da domaine,

> iptables -I OUTPUT -d fatlan.com -j DROP

Ddelete, silme manasındadır ama öncesinde “iptables -L –line-numbers” komutunu çalıştırılır ki oluşturulan kurallarının satır numarası görüntülenir ve o satır numarasına göre silme işlemi yapılır. İp’li kural 2.satırda, domainli kural 1.satırda.

> iptables -D OUTPUT 1

Ya da

> iptables -D OUTPUT 2

Şimdi dışardan bize doğru gelen istekleri engelleyen bir kural yazılacaktır. Şöyle 192.168.1.25 ip’sinden gelen paketler engellenir.

> iptables -I INPUT -s 192.168.1.25 -j REJECT

Tüm istekleri değil de sadece 80 portundan çıkan istekler engellenir. “–dport” yerine “sport” da kullanabilirsiniz.

> iptables -I OUTPUT -p tcp –dport 80 -j DROP

Sadece dışardan gelen isteklerde 80 portu açılacaktır.

> iptables -I INPUT -p tcp –dport 80 -j ACCEPT

Şimdi bize doğru gelen ping paketleri engellenecektir.

> iptables -I INPUT -p icmp –icmp-type echo-reply -j DROP

Local makinenin ping atmasını engellenecektir.

> iptables -I OUTPUT -p icmp –icmp-type echo-request -j DROP

Şimdi bütün kurallar girildikten sonra tekrar listelenecektir.

> iptables -L –line-numbers

INPUT ya da OUTPUT girdilerini komple temizlemek için aşağıdaki komut.

> iptables -F INPUT ya da OUTPUT

Tüm kuralları temizlemek için de aşağıdaki komut kullanılır ve komutu çalıştırdıktan sonraki görüntü aşağıdaki gibidir.

> iptables -F

Ovirt/RHEV 4.2 Engine Network(NIC) Infrastructure Ekleme ve Yapılandırma – Bölüm 6

İlk bölümdeki görselde, ağ alt yapısını tasarlamıştık ve bu tasarımda network alt yapısını da belirtmiştik. O bölümü hatırlatarak işlemlere devam edelim.

Tasarımda 4 ayrı NIC kullandık;

1. Network interface “management

2. Network interface “storage

3. Network interface “hostnet

4. Network interface “migration

managemetinterface’sini sunucuları kurarken, yönetmek için atamıştık zaten. Ardından sunucuların storage erişmesi, iscsi ve nfs kullanacağımız için nic’in birini de host’ta “storageinterface’sini tanımlayıp erişimlerini yaptık ve storage diskleri ekledik. Yapımızda iscsi ve nfs vlan ağında olduğundan fiziksel interface’ye “storage_iscsi” ve “storage_nfs” adından iki mantıksal vlan interface’yi oluşturduk. Aslında nfs’i vlan olarak Engine tarafında da yapabilirdik fakat iscsi kısmı yapmak zorundayız ki storage’deki lun‘ları host’lara disk olarak ekleyebilelim ve Engine’yi kurabilelim. Engine host üzerinde yapılandırılan networkler üzerinden de erişim sağlayabilir. Bu arada host tarafında nic’leri bonding, vlan ve bridge olarak’ta tanımlayıp kullanabilirsiniz. Aynı şekilde Hosted Engine’de de bonding, vlan yapabiliriz.

hostnet” ve “migrationnic‘lerini Hosted Engine tarafında şimdi beraber yapılandıracağız. “hostnetVM’lerin internete çıkışı ve birbiriyle iletişimi için, “migration”da Vm makineleri hostlar arasında taşıma/göç ettirme için kullanacağız.

Önemli NOT : Bonding hakkında. Bonding yapılandırması host/sunucu tarafında ayrı, Hosted Engine tarafında ayrı fiziksel NIC’ler için yapılandırmalıdır. Çünkü host tarafında yapılandırılan bonding’i Engine görebiliyor ve gösterebiliyor fakat eklediğiniz mantıksal interface’leri atama yaptığınızda kullanmanıza izin vermeyip, eklerken hata veriyor. Kısaca ilgili NIC’ler için host tarafında yapılandırma olduğu için kullanmanıza izin vermiyor. Bu yüzden Engine’de bonding kullanacaksanız ki Engine’de sağ klik ile çok basit bir şekilde eklenebiliyor, ilgili fiziksel nic’lere host tarafında herhangi bir yapılandırma yapılmamış olması gerekiyor. Ben başka bir yapılandırma için iki fiziksel nic’i Engine tarafında XOR protokolü kullanarak çok basit bir şekilde yapılandırarak, esnek bir yapı elde ettim.

Şimdi “hostnet” ve “migrationnic‘lerini Hosted Engine tarafında tek tek yapılandırıp kullanıma hazırlayalım.

Önce mantıksal nic’lerimizi ekleyelim. Biz ilk önce “hostnet”i ekleyip, aktif edeceğiz. Sonra “migration” interfacesini ekleyip, aktif edeceğiz. Bunun için Engine login olduktan sonra “Network/Networks/New” diyerek ekleme işlemine başlıyoruz.

Ardından ilgili Data Center’ı seçip “Name” kısmına interface ismini verin. Network Parameters kısmında yer alan bilgilerde size uygun olan bilgileri de girmeniz gerekiyor. Biz “hostnet”i VM’lerin çıkış interface’si olarak kullanacağımızdan “VM network” parametresini enable ettik. Belirlediğimiz subnet herhangi bir Vlan’a dahil olmadığı için Vlan tag’ini enable işaretlemedik. Sizin belirlediğiniz subnet switch’leriniz de vlan dahilinde ise bu kısımda vlan numarasını belirlemelisiniz. Son olarak OK tıklayıp, ekleme işlemini bitirin.

Ve oluşturduğunu aşağıdaki gibi görelim. Henüz var olan tüm host‘larımıza tanıtmadığımız için aktif değil ve bu yüzden kırmızı görünüyor.

Şimdi sırasıyla “hostnet”i var olan host’larımıza tanıtalım ve aktif etmiş olalım.

Compute/Hosts” sekmesine geldikten sonra ilk host’umuzun üzerine tıklayıp ayrıntılar kısmına girelim. Oradan “Network Interfaces” sekmesine gelip “Setup Host Networks” butonuna tıklayın.

Ardından aşağıdaki ss’den de anlaşılacağı üzere sağdaki Logical Networks’te görünen “hostnetnic’ini sürükleyip, belirlediğiniz ilgili fiziksel nic’e bağlayın.

Yukarıdaki siyah kutucukta görünen kalem işaretini tıkayın ve aşağıdaki gibi ip yapılandırma penceresine gelin, ip yapılandırdıktan sonra,

DNS Configuration sekmesine gelin ve dns ip’sini verdikten sonra OK tıklayın.

Şimdi aynı işlemi ikinci host’umuza yapalım, bizde toplamda iki host vardı siz bütün hostlarınızda yapmalısınız. Şimdi ikinci host’umuzda da “Setup Host Networks” butonuna tıklayın.

Aynı şekilde fiziksel nic’e, logical nic’i bağlayın.

Kalem işaretini tıklayıp ikinci host için ip yapılandırmasını yapalım.

DNS yapılandırmasını yapıp, OK tıklayalım.

Ve “Compute/Cluster/Default/Logical Network” bölümünden mantıksal nic’lerimizi listelediğimizde “hostnet”in yeşil yandığını yani aktif olduğunu görebiliyoruz.

Şimdi sıra geldi ikinci mantıksal interface’miz olan “migrationnic’ine. Aynı şekilde “Network/Networks/New” diyerek aşağıdaki gibi nic’i oluşturalım. Bu kısımda “VM networkenable sekmesini tıklamıyorum çünkü bu interface’yi VM’ler çıkış için kullanmayacak. Tabanda Engine VM’leri migration yapmak için bu nic’i kullancağı için “Name” belirleyip OK tıklıyorum.

Tekrar “Compute/Cluster/Default/Logical Network” listelediğimizde “migrationnic’inin geldiğini fakat kırmızı yani aktif olmadığını görelim.

Yukarıdaki ss’lerde gösterdiğimiz gibi yapınızdaki tüm host’ların tek tek “Setup Host Networks” bölümünden, “migrationinterface’sini fiziksel interface’ye bağladıktan sonra aşağıdaki gibi aktif olacaktır.

NoT2 :migrationinterface’si için ip yapılandırması YAPMIYORUZ yani ip vermiyoruz.

Aslında şu anda nic ekleme işleminiz tamamlandı fakat bu nic’ler için roller atayacağız. Bu roller ilgili logical nic’lere belirli özel iş yükleri atayacak. Şöyle ki “Compute/Cluster/Default” bölümünden “Logical Networks” sekmesine gelin ve aşağıdaki görselden de anlaşılacağı üzere ”Manage Networks” tıklayın.

Ardından aşağıdaki ss’den de anlaşılacağı üzere logical nic’lerimize spesifik roller atayalım. Migration Network rolünü “migrationinterface’sine, Default Route olarak ben “hostnet” kullanmak istediğimden ona atıyorum, diğer iki rol management interface‘sinde kalabilir. OK deyip işlemleri bitiriyorum.

Son olarak nic’leri “Compute/Cluster/Default/Logical Network” listelediğimde nic’lere atanmış rolleri de görebiliyorum. İşlem bu kadar.

NoT3 : Evet işlemlerimiz bitti fakat nic’lerimizin tüm host’larda sağlıklı bir şekilde çalıştığından emin olmak yani sync olduğunu görmek için “Network/Networks/hostnet” bölümü Hosts sekmesi ve “Network/Networks/migration” bölümü Hosts sekmesinden aşağıdaki ss’lerde işaretlediğim kırmızı alanda “Out-of-sync” kısmının aşağıdaki gibi tertemiz olması lazım, aksi halde zaten orada kırmızı bir işaretçi çıkıp size bir sorun olduğunu söylecektir. Böyle bir durumda network yapılandırmalarınızı gözden geçirin, eğer bir sorun yoksa “Sync All Networks” butonunu kullanın.

Bölüm 7: http://www.fatlan.com/ovirt-rhev-4-2-engine-ldap-yapilandirma-bolum-7/

HAProxy(LoadBalancer) ve Keepalived(Cluster) Kurulum ve Yapılandırması

HAProxy, yüksek erişilebilirliğe(high availability) sahip yük dengeleyici(load balancing) ile TCP ve HTTP tabanlı uygulamalar için proxy sunucusu hizmeti veren açık kaynak kodlu bir yazılımdır.

Keepalived, IP failover(yük devretme) yeteneğini ikiden daha fazla sunucu için sağlayacak yeteneğe sahip açık kaynak kodlu bir yazılımdır. Keepalived kendi arasında Multicast haberleşme tekniğini kullanmaktadır.

Biz yapımızda HAProxy’i load balancer için, Keepalived’i de IP devretmek yani HAProxy yapımızı Cluster hale getirmek için kullanacağız.

Senaryomuzda 3 adet sunucu bulunmaktadır. Bu 3 sunucuya HAProxy kurarak load balancer hale getireceğiz. Ardından Keepalived servisini kurarak sunuculardan biri kapandığında IP failover yaparak kesinti olmadan diğer sunucuya geçerek load balancer servisimizin çalışmasını sağlıyacağız.

Bunun için 4 adet IP kullanacağız(ip ler tamamen atmasyon).

1. Sunucu : 10.10.5.13

2. Sunucu : 10.10.5.14

3. Sunucu : 10.10.5.15

4. Keepalived Virtual Ip : 10.10.5.5

Şimdi her 3 sunucuya HAProxy ve Keepalived servisini aşağıdaki gibi kuralım.

> sudo apt install haproxy -y

> sudo apt install keepalived -y

NoT1 : Sunucularda “net.ipv4.ip_nonlocal_bind=1” olması gerekiyor. Yoksa HAProxy için kullanılacak yapılandırma üzerinde aynı anda aynı ip yi barındıramayacağı için bind hatası verecek ve servis çalışmayacaktır. Bunun için aşağıdaki yolu izlemeniz gerekiyor.

İlk olarak “vi /etc/sysctl.conf” dosyasının için edit edin ve aşağıdaki parametreyi yapıştırıp kaydedip çıkın.

net.ipv4.ip_nonlocal_bind=1

Daha sonra aşağıdaki komutu çalıştırın.

> sysctl -p

Not2: 443 SSL kulanacaksanız “/etc/ssl/private/” dizini içinde “haproxy.pem” adından SSL’lerinizin Bundle(*.crt,*.ca,*.key) hali bulunması gerekiyor.

Şimdi Örnek olarak aşağıda HAPoxy yapılandırmasına bakalım. Yapınızda her HAProxy için aynı yapılandırmayı kullanacaksınız.

Bunun için “/etc/haproxy/haproxy.cfg” dosyasını edit edeceksiniz.

> vi /etc/haproxy/haproxy.cfg

 

#Aşağıda default değerlerin haricinde değerlerde mevcuttur.

global

log /dev/log local0

log /dev/log local1 notice

chroot /var/lib/haproxy

stats socket /run/haproxy/admin.sock mode 660 level admin expose-fd listeners

stats timeout 30s

user haproxy

group haproxy

daemon

maxconn 1000000

# Default SSL material locations

ca-base /etc/ssl/certs

crt-base /etc/ssl/private

# Default ciphers to use on SSL-enabled listening sockets.

# For more information, see ciphers(1SSL). This list is from:

# https://hynek.me/articles/hardening-your-web-servers-ssl-ciphers/

# An alternative list with additional directives can be obtained from

# https://mozilla.github.io/server-side-tls/ssl-config-generator/?server=haproxy

ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:RSA+AESGCM:RSA+AES:!aNULL:!MD5:!DSS

ssl-default-bind-options no-sslv3

nbproc 1

nbthread 8

tune.maxrewrite 16384
tune.bufsize 32768

 

defaults

log global

mode http

option httplog

option httpclose

option dontlognull

maxconn 1000000

timeout connect 3000000

timeout client 6600000

timeout server 6600000

errorfile 400 /etc/haproxy/errors/400.http

errorfile 403 /etc/haproxy/errors/403.http

errorfile 408 /etc/haproxy/errors/408.http

errorfile 500 /etc/haproxy/errors/500.http

errorfile 502 /etc/haproxy/errors/502.http

 

#HAProxy için Dashboard yapılandırma kısmı

listen stats

bind panel.fatlan.com:8989

mode http

stats enable

stats uri /stats

# stats hide-version

stats realm HAProxy\ Statistics

stats auth admin:admin

 

Aşağıdaki yapılandırmada iki blog’ta ACL kullanıldı. İlk blog, link’in içinde herhangi bir yerde “rest” kelimesi geçerse keypanelfatlan-backend443 bloğu çalışacak, ikincisinde farklı bir domain isteğinde(forum.fatlan.com) backend fatlanforum-backend çalışacak, haricinde tüm istekler panelfatlan-backend bloğunda çalışacak. Diğer port yönlendirmeleri hariç.

 

#80 portunu 443 portuna yönlendirme kısmı

frontend SafirFrontend80

bind panel.fatlan.com:80

mode http

redirect scheme https if !{ ssl_fc }

#443 portu ayar kısmı, SSL offloading burda yapılandırılıyor

frontend PanelFatlan443

bind panel.fatlan.com:443 ssl crt /etc/ssl/private/haproxy.pem ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS

option httplog

option http-keep-alive

option forwardfor except 127.0.0.0/8

#option http-server-close

reqadd X-Forwarded-Proto:\ https

mode http

#ACL örnek yapilandirilmasi(proxypass) linkte herhangi biryerde rest kelimesi geçerse yönlendir

acl keypanelfatlan443 path_beg /rest

use_backend keypanelfatlan-backend443 if keypanelfatlan443

default_backend panelfatlan-backend

 

#ACL farklı host yönlendir

acl host_fatlanforum hdr(host) -i forum.fatlan.com
use_backend fatlanforum-backend if host_fatlanforum

 

#Yönlendirilen kısım, içerde sunucular 80 haberleştirildiği için 80 port yapılandırıldı

backend panelfatlan-backend

mode http

balance roundrobin

stick store-request src

stick-table type ip size 256k expire 30m

option forwardfor

option httplog

option httpchk HEAD /

server frontend_01 10.10.37.12:80 check port 80 inter 1000 rise 2 fall 3

server frontend_02 10.10.37.13:80 check port 80 inter 1000 rise 2 fall 3

 

#ACL gelen, rest yönlendirilen kısım

backend keypanelfatlan-backend443

mode http

balance roundrobin

stick store-request src

stick-table type ip size 256k expire 30m

option forwardfor

option httplog

option httpchk OPTIONS /login HTTP/1.0

http-check expect status 200

reqrep ^([^\ :]*)\ /rest[/]?(.*) \1\ //\2

server restci_01 10.10.37.34:80 check inter 12000 rise 3 fall 3

server restci_02 10.10.37.35:80 check inter 12000 rise 3 fall 3

 

#ACL gelen, rest yönlendirilen kısım

backend fatlanforum-backend
mode http
option forwardfor
option httplog
option httpchk HEAD /

server fatlanforum_01 10.10.37.45:80 check port 80 inter 3000 rise 2 fall 3

 

Harici örnekler aşağıdaki gibi de yapılandırılabilir.

#5000 portuna örnek

frontend PanelStone5000

bind panel.fatlan.com:5000

option httplog

option forwardfor except 127.0.0.0/8

#option http-server-close

reqadd X-Forwarded-Proto:\ https

mode http

default_backend panelstone-backend5000

 

#Yönlendirilen kısım

backend panelstone-backend5000

mode http

balance roundrobin

stick store-request src

stick-table type ip size 256k expire 30m

option forwardfor

option httplog

option httpchk HEAD /

server ftstone_01 10.10.37.43:5000 check port 5000 inter 12000 rise 3 fall 3

server ftstone_02 10.10.37.44:5000 check port 5000 inter 12000 rise 3 fall 3

 

#3306 mysql örnek

frontend FatlanMysql

bind panel.fatlan.com:3306

mode tcp

default_backend fatlanmysql-backend3306

 

#Yönlendirilen kısım

backend fatlanmysql-backend3306

mode tcp

server mysql_01 10.10.37.60:3306 check

server mysql_02 10.10.37.61:3306 check backup

server mysql_03 10.10.37.62:3306 check backup

 

Yukarıda örnek HAProxy yapılandırmalarından bahsettim, ben kendi yapılandırmamı yaptım ve 3 sunucuda aynı yapılandırmaları yapıştırdım.

Şimdi Keepalived yapılandrımasını yapalım. Keepalived için 3 sunucuda da kısmi olarak farklı parametrik ayarlar mecvut olacak. Bunun için “/etc/keepalived/keepalived.conf” dosyasını oluşturup, yapılandıracağız. Bu arada “priority” yüksek olan önceliklidir.

1. Sunucu(HAProxy+Keepalived)

vrrp_sync_group haproxy {

group {

VI_01

}

}

vrrp_script haproxy_check_script {

script “kill -0 `cat /var/run/haproxy.pid`”

interval 5 # checking every 5 seconds (default: 5 seconds)

fall 3 # require 3 failures for KO (default: 3)

rise 6 # require 6 successes for OK (default: 6)

}

#Virtual interface

vrrp_instance VI_01 {

state MASTER

interface ens3

virtual_router_id 61

priority 103

authentication {

auth_type PASS

auth_pass 123456

}

# Virtual ip address – floating ip

virtual_ipaddress {

10.10.5.5

}

track_script {

haproxy_check_script

}

}

 

2. Sunucu(HAProxy+Keepalived) #Sadece farkları yazıyorum.

state BACKUP

priority 102

 

3. Sunucu(HAProxy+Keepalived) #Sadece farkları yazıyorum.

state BACKUP

priority 101

 

Yapılandırmalar bu kadar, tüm suncularda HAProxy sorunsuz çalışır vaziyette olmalı aynı zaman keepalived servisi de. Sunucularda yada servislerde herhangi bir kesintide çalışan diğer sunucudan loadbalancer hizmet vermeye devam edecektir.

ÖNEMLİ

HAProxy ve Linux kernel yüksek yükler için ayarlama

1. sudo vi /etc/security/limits.conf

         * soft nofile 1000000

         * hard nofile 1000000

         root soft nofile 1000000

         root hard nofile 1000000

2. sudo vi /etc/default/haproxy

         ulimit 1000000

3. sudo vi /lib/systemd/system/haproxy.service

         LimitNOFILE=1000000

4. sudo vi /etc/sysctl.conf

        net.ipv4.ip_local_port_range=1024 65535

        net.ipv4.tcp_max_syn_backlog = 100000

        net.core.somaxconn = 100000

        net.core.netdev_max_backlog = 100000

5. sudo vi /etc/haproxy/haproxy.cfg

        global

         nbproc 1

         nbthread 8

         tune.maxrewrite 16384

         tune.bufsize 32768

         maxconn 1000000

         tune.ssl.cachesize 1000000

      defaults

        maxconn 1000000

 

Ardından reboot, eğer reboot hemen mümkün değilse

sudo systemctl daemon-reload

sudo systemctl restart haproxy.service

Kaynak : https://medium.com/@pawilon/tuning-your-linux-kernel-and-haproxy-instance-for-high-loads-1a2105ea553e

FreeIPA Komut Satırı Üzerinden DNS A kaydı Oluşturma

Şimdi DNS’e A kaydı gireceğiz. Bu işlemi GUI’de basit bir şekilde de yapabilirsiniz ki ilerde bir makale ile bu konuya da değinebiliriz, şimdi ise aşağıdaki komut yardımıyla bu işlemi komut satırıcı üzerinden gerçekleştirebiliriz.

İlk önce kinit admine login olun(GUI ekranında login olduğunuz admin ve şifresi).

> kinit admin

Ardından aşağıdaki komutu çalıştırın.

# ipa dnsrecord-add [domain name] [record name] [record type] [ip adress]

> ipa dnsrecord-add fatlan.local dc02 –a-rec 192.168.2.160

Ovirt/RHEV 4.2 Kurulumu Hostlara NFS Iso/Export Ekleme – Bölüm 5

Ovirt/RHEV yapısında ISO ve EXPORT olarak NFS alan istemektedir.

ISO alanı sanal makinaları kurmak için kullanılacak olan *.iso dosyalarının barındırılacağı alandır.

EXPORT alanı ise sanal makineleri yedekleme, taşıma, kopyalama ya da dışarı aktarma amaçlı kullanılan alandır.

Konuyu daha fazla uzatmadan nasıl yapacağımıza bakalım.

Herşeyden evvel şunu belirtmem gerekir ki NFS alanlarını eklemeden önce Storage’den açtığınız NFS alanlara yetkilendirmeyi doğru bir şekilde yapmalısınız, aksi takdirde NFS alanını eklerken “permission denied” uyarısını alırsınız. Örnek yetkilendirmeyi aşağıdaki ss’de gösterdim.

Şimdi ilk olarak “Storage/Domains” sekmesinden “New Domain” butonuna tıklayın.

Ardından “Domain Function”ı “ISO” olarak, “Storage Type”ı “NFS” olarak aşağıdaki gibi seçip yolu “ip_adresi/dizin_yolu” şeklinde girip “OK” butonuna basın. İşlem bu kadar.

EXPORT alanını da aynı şekilde belirtip “OK” tıklayın. Bu kısımda da işlem tamam.

NoT : Storage alanlarını sıfırdan ekler iseniz “New Domain” butonunu kullanmalısınız. Fakat daha önce eklemiş ve sistemden kaldırmış yada başka bir uygulama tarafından daha önce kullanılmış ise “Import Domain” sekmesini kullanmalısınız. Aksi takdirde hata mesajı alıp, alanı ekleyemeyeceksiniz.

Bölüm 6 : http://www.fatlan.com/ovirt-rhev-4-2-engine-networknic-infrastructure-ekleme-ve-yapilandirma-bolum-6/

FreeIPA(LDAP, DNS) – iDM(identity management) Replica Kurulumu

Daha önceki makalemizde FreeIPA server kurulumunu ele almıştık.

İlgili makaleye http://www.fatlan.com/freeipa-idm-identity-management-kurulum-ve-yapilandirmasi/ linkinden ulaşabilirsiniz.

Tabi bu bizler her yapıda olduğu gibi FreeIPA sistemimizde de yedekli çalışıp HA yapısını sağlayacağız. Kısaca FreeIPA Replica işlemi ile kesintisiz ve yedekli bir yapı sağlamış olacağız.

Master FreeIPA : dc01.fatlan.local

Replica FreeIPA : dc02.fatlan.local

Master sunucumuz(dc01.fatlan.local) daha öncesinde kurulmuştu. Şimdi adım adım Replica FreeIPA(dc02.fatlan.local) kurulumunu ele alalım.

Hostname, Hosts, Resolv, NIC dosya’larını yapılandırdıktan sonra firewalld yapılandırmasını yapmalısınız. Aşağıdaki komut ile gerekli servislere izin verelim ve servisi reload edelim.

> firewall-cmd –add-service={http,https,ssh,ntp,dns,freeipa-ldap,freeipa-ldaps,kerberos,kpasswd,ldap,ldaps,freeipa-replication} –permanent

> firewall-cmd –reload

Hemen akabinde aşağıdaki paketleri dc02 replica sunucumuza kuralım.

> yum install ipa-server bind-dyndb-ldap ipa-server-dns -y

Ardından aşağıdaki komutu gene dc02 replica sunucusunda çalıştırın ve aşağıdaki yönergeler ile ipa client kurulumunu bitirin.

> ipa-client-install –domain=fatlan.local –realm=FATLAN.LOCAL –server=dc01.fatlan.local

yes

yes

admin

admin şifresi

Şimdi Master dc01.fatlan.local sunucusunda aşağıdaki komutu çalıştırın. Böylelikle dc02 sunucusu “ipaservers” grubuna dahil etmiş olacağız.

NoT : Bu komutu master freeipa da çalıştırabilmek için, sunucuya login olduktan sonra “kinit admin” ile servise bağlantı kurmanız gerekmektedir. Aksi taktirde “ipa: ERROR: did not receive Kerberos credentials” hatasını alırsınız. Hatayı görmeniz için aşağıdaki ss’de paylaştım.

> ipa hostgroup-add-member ipaservers –hosts dc02.fatlan.local

Şimdi son komutumuzu Replica FreeIPA(dc02.fatlan.local) da çalıştırarak kurulumu tamamlayalım.

> ipa-replica-install

yes

İşlem bu kadar. Artık her iki, yani dc01 ve dc02 FreeIPA sunucuları aktif-aktif çalışcaktır. Herhangi birinde yaptığınız bir işlem diğerine de yansıyacaktır. Böylelikle hem yedeklilik hemde HA sağlamış oldunuz.

Son durumu aşağıdaki komut ile de kontrol edebilirsiniz.

> ipa-replica-manage list

Ovirt/RHEV 4.2 Kurulumu Hostlara ISCSI LUN Ekleme – Bölüm 4

Engine login olduktan sonra “Storage” sekmesinden “Domains” bölümüne gidin ve “New Domain” butonuna tıklayın.

NoT : Bu kısımda bizim oluşturduğumuz iscsi lun’lar yeni oluşturulmuş olup, daha önce herhangi bir uygulama tarafından kullanılmamıştır. Biz bu lab ortamı için sıfır lun oluşturduk ve bu yüzden “New Domain” butonunu kullanarak lun ekleme işlemini yapacağız.

Fakat bu lun daha önce herhangi bir uygulama tarafından kullanılmış olsaydı ya da bizim bu Ovirt uygulamamız tarafından da kullanılmış olup herhangi bir nedenle lun silinmiş olsaydı “Import Domain” kısmını kullanarak ekleme işlemini yapacaktık. Çünkü lun daha önce kullanıldığı içinde veri barındırmasa dahi daha önce kullanıldığına dair bilgi saklıyorsa yada sakladığından Ovirt daha önce kullanıldığına dair bilgi verecek yada db den sildim gibi uyarılar verip lun’u eklemeyecektir. Bu nedenle bu tarz durumlarda “Import Domain” kullanılmalıdır, eğer lun sıfır değil ise.

Ardından eklemek istediğiniz lun’lara, bizde bir tane kaldı, “Name” kısmını belirttikten sonra “Add” diyerek aktif edin. Daha sonra “OK” diyerek ekleme işlemini tamamlayın.

Ve “Storage” bölümünden lun’larımızı görüntülediğimizde, geldiğini görebiliyoruz.

Bölüm 5 : http://www.fatlan.com/ovirt-rhev-4-2-kurulumu-hostlara-nfs-iso-export-ekleme-bolum-5/

Ovirt/RHEV 4.2 Kurulumu Hostların Power Management Yapılandırması – Bölüm 3

Hostları ekleme sırasında son kısımlarda aldığımız power management uyarısını bu bölümde ele alacağız. Power management yapılandırması hostlar için ilo ekranına yada host’un konsol ekranına düşmeden kapatıp, açma ve yeniden başlatma gibi özellikleri kazandıracak agent’ı(fences agent) aktif edeceğiz.

Aşağıda görüldüğü üzere hostları listelediğimizde üzerlerinde ünlem(!) işareti var ve power management’ın yapılandırılmadığı uyarısını veriyor.

Şimdi hostları tek tek seçip “Edit” tıklıyoruz. Ardından “Enable Power Managementcheck ettikten sonra, “Add Fence Agent” kısmındaki artı işaretine tıklıyoruz.

Daha sonra sunucuların (ilo, idrac, BMC vs.) ip adresi, kullanıcı ve şifre bilgisini yazıyoruz. Ben “Type” olarak “ipmilan” ile yapılandırıyorum, “option” kısmına da “lanplus=1key value’sini verip, bağlantıyı “Test” ediyorum ve başarılı olduğunu görüyorum. OK ile işlemi tamamlıyorum.

 

Son durum aşağıdaki gibi, OK diyerek tamamlıyorum.

İşlem bu kadar. Artık hostları listelediğinizde ünlem işareti olmayacak ve host için power seçenekleri aktif olacak.

Bölüm 4 : http://www.fatlan.com/ovirt-rhev-4-2-kurulumu-hostlara-iscsi-lun-ekleme-bolum-4/

JXplorer – LDAP Browser ve Editor

LDAP ile alakalı olarak DN “uid=username,dc=example,dc=com” , base DN gibi bir çok niteliğe atanan değerleri elde etmek ve LDAP için daha bir çok parametreyi elde edip, yönetmenizi sağlayan browser ve editör uygulaması olan JXplorer gayet kullanışlıdır.

Uygulamayı http://jxplorer.org/downloads/users.html adresinden indirdikten sonra, çalıştırma yetkisi vermelisiniz.

> chmod +x jxplorer-3.3.1.2-linux-installer.run

Ardından çalıştırın ve kurulumunu yapın.

> ./jxplorer-3.3.1.2-linux-installer.run

Şimdi uygulamayı çalıştırdıktan ve aşağıdaki şekilde bağlandıktan sonra LDAP bilgilerini elde edeceksiniz.

OVİRT(RHEV) 4.2 Kurulum ve Yapılandırması – Host Ekleme – Bölüm 2

Makalemizin ikinci bölümüyle beraber artık tüm işlemlerimizi hosted engine üzerinden yapacağımızı adım adım göreceğiz. Şimdi sırada ortama hypervisor olarak host ekleme var. Host ekleme işleminin sırasıyla nasıl yapılacağına bakacağız.

İlk olarak engine login olun.

Ardından “Compute – Hosts” kısmına gelin ve “New” butonunu tıklayın.

Daha sonra “General” sekmesinde;

– “Host Cluster”ı seçin, genelde Default olur. Fakat ismini siz daha sonra özelleştirebilirsiniz.

– “Name” ve “Hostname” kısmına host için verdiğiniz domain name’yi girin.

– “SSH Port” bölümüne port numarasını yazın.

– Authentication kısmındaki “Password” kısmına sunucuya login olduğunuz user’ın şifre bilgisini yazın.

Son olarak “Hosted Engine” sekmesine gelin ve “Choose hosted engine deployment action” seçeneğini “Deploy” olarak belirledikten sonra “OK” tıklayın.

Bu kısımda “Power Management” yapılandırılmadığına dair uyarı verecek, “OK” diyerek işlemi başlatın daha sonra nasıl yapılandırılacağına bakacağız. Bu arada “Power Management” yapılandırması Engine üzerinden sunucuyu kapatma, açma ve yeniden başlatma gibi yetenekler kazandırmasına olanak tanıyacak olan bir agent’tir(fences agent).

Kırmızı alanla işaretlediğimiz kısıma tıkladığınızda “Deploy” edildiği sürece tanık olabilirsiniz.

Ve ardından hostları listelediğimizde geldiğini görebiliyoruz. Siz ortamınızdaki tasarımınızda gerekli olan kaynak durumuna göre tüm hostlarınızı aynı yöntemle ortama dahil edebilirsiniz.

Bölüm 3 : http://www.fatlan.com/ovirt-rhev-4-2-kurulumu-hostlarin-powermanagement-yapilandirmasi-bolum-3/

Linux DNS – BİND Versiyon Bilgisini Kapatma yada Özelleştirme

Hacker mantalitesinin ilk adımlarından olan, servis/servisleri keşfetmek, bu keşfi yaparken versiyon bilgisini almaktır. Daha sonra bu versiyonların barındırdıkları zafiyetleri kullanarak içeri sızmaktır.

Doğal olarak Linux üzerinde kullanılacak olan Dns servisi BİND-NAMED servisinin versiyon bilgisini gizlemek ya da özelleştirmek yapılacak olan mantıklı hareketlerden biri olacaktır.

Versiyon bilgisini aşağıdaki 3 yöntem ile elde edebilirsiniz.

1. NMAP

> nmap -sV -p 53 fatlan.com

2. DIG

> dig @fatlan.com version.bind txt chaos

3. NSLOOKUP

> nslookup -type=txt -class=chaos version.bind fatlan.com

Sıra geldi versiyon bilgisini gizlemeye. Bunun için “/etc/named.conf” dosyası içindeki “option” kısmındaki satırlara ek olarak aşağıdaki satırları da ekleyin. Ek olarak iserseniz hostname bilgisini de ekleyebilirsiniz.

options {

         version “DNS SERVER 2018”;

         hostname “DNS SERVER 2018”;

};

 

 

OVİRT(RHEV) 4.2 Kurulum ve Yapılandırması – Bölüm 1

RHEV(Red Hat Enterprise Virtualization) yada Ovirt Açık Kaynak Kodlu KVM temelinde hypervisor olarak kullanılan, ölçeklenebilen sanallaştırma platformudur. İki ürünün temeli aynı fakat Ovirt(https://ovirt.org/) RHEV’in forklanmış hali olup tamamen ücretsizdir.

Konuyu tamamen adım adım ele alan ve bölümlerden oluşan makale serisi ile baştan sona böyle bir sanal bulut ortamını elde edebilmek için Ovirt yapısını inceleyeceğiz. İşlemlere başlamadan önce istediğimiz yapının bir çizgisini yukarıda paylaşıyorum. Kafanızda durum şekillenmesi için çizgiyi paylaştım, siz daha basit yapıda da kurabilirsiniz. Örneğin tek nic yada internal disk gibi.

Node1: 192.168.22.10

Node2: 192.168.22.20

HostedEngine: 192.168.22.15

gibi, engine için ayrı management ip vermek gerekiyor. Çünkü yönetimi engine aracılığı ile yapacağız, bir nevi vcenter gibi düşünebilirsiniz.

İstediğimiz ortamın yukarıdaki gibi olmasını planlıyoruz.

Ovirt’i iki şekilde kurabiliriz.

1. Manuel olarak terminal üzerinden ilk önce CentOS kurup, ardından gerekli paketleri indirip daha sonra da barematel üzerine engine setup ederek yapabilirsiniz.

Manual kurulum linkleri : https://ovirt.org/download/

https://www.ovirt.org/documentation/install-guide/Installation_Guide/

https://www.ovirt.org/documentation/install-guide/chap-Installing_oVirt/

2. Ovirt için hazırlanmış özelleştirilmiş iso paketi ile kurulum gerçekleştirebilirsiniz ki CentOS sunucunun özelleştirilmiş halidir ve repoları ona göre otomatik yapılandırılmış gelir, ayrıca hosted engine vm olarak kurulup yönetim sağlanmaktadır. Biz bu yöntemi kullanarak kurulum gerçekleştireceğiz.

İso paket linki : https://resources.ovirt.org/pub/ovirt-4.2/iso/ovirt-node-ng-installer-ovirt/4.2-2018100407/

İso dosyasını host’lara mount ettikten sonra aşağıdaki karşılama ekranından “Install oVirt Node” diyerek işleme devam edelim.

Aşağıda görüldüğü üzere normal CentOS kurulum gibi Anaconda ekranı, o yüzden buranın üzerinde fazla durmayacağım. Bu bölümün kurulumunu yapıp sunucuyu reboot edin.

NoT1 : Kurulum bittikten sonra gerekli erişimler için hostların network yapılandırmasını yapmalısınız. Update’ni geçebilirsiniz. Bu arada “yum” ile paket kurmak istediğinizde hata alabilirsiniz. Çünkü repolar Ovirt için özelliştirilmiş olacaktır. Onun dışındaki repolar disable gelecektir. Bu yüzden paketlerde kurulum yapamazsanız “yum” komutunu aşağıdaki gibi kullanabilirsiniz. Tek seferlik paket kurulumu için enable modu.

Ayrıca “/etc/hosts” ve “/etc/resolv.conf” dosyalarını yapılandırıp, search domain.com ibaresinide ekleyin. DNS, SSH Keypair ve NTP(ntp olarak chrony servisi kullanılmaktadır, yapılandırma dosyasına ilgili ntp server’ı girdikten sonra servisi yeniden başlatmak yeterlidir) yapılandırmalarının yapılmış olması gerekmektedir.

> yum install –enablerepo=”base” CentOS-Base.repo “paketadı” -y

> yum install –enablerepo=”epel” epel.repo “paketadı” -y

NoT2 : Hosted Engine kurulumunu terminal ekranından da yapabilirsiniz. Fakat biz GUI kullanarak yapacağız. Bu arada HostedEngine storage üzerine kurmak zorundasınız.

Komut satırından kurulum linki : https://ovirt.org/documentation/how-to/hosted-engine/

Devam edelim. Sunucu reboot olduktan sonra aşağıdaki paketi terminal ekranından kurun. Daha sonra GUI ekranında fazlaca beklememiş olursunuz.

> yum install ovirt-engine-appliance -y

Hosted Engine kurulumuna geçmeden önce storage ayarlarını yapmamız gerekiyor. Host’ta saklayacağımız vm ler için iscsi protokolünü kullarak data01 ve data02 adında iki adet lun bağlayacağız, daha sonra HostedEngine bağlanacak. Ovirt’in istediği, nfs protokolü ile de iso ve export adında iki adet volume HostedEngine bağlayacağız. Nfs’leri host’a bağlamak zorunda değilsiniz. Hatta bağlamayın çünkü Nfs’ler HostedEngine bağlanacak. Dikkat etmeniz gereken Nfs’ler için yazma ve okuma haklarının unix için tam olması gerekiyor yoksa HostedEngine bağlanma sırasında “permission” hatası alırsınız.

Konu ile alakalı cause linki : https://support.hpe.com/hpsc/doc/public/display?docId=mmr_kc-0108935

ISCSI’leri terminal üzerinden bağlayacağız çünkü UI tarafında bu işlem yapılamıyor ama daha sonra node’lerin gui’sinde görüntülüyebileceksiniz. Aslında bu protokollerin dışında FC(fiber channel) yada Gluster storage protokolleri de kullanılabilir ama şuan için bizim konumuz dışında.

İscsi yapılandırması:

Storage tarafında ilgili SVMs, LUNs, Volumes ve network ayarlarını yapıp data01, data02, iso ve export bölümlerini açtıktan sonra iscsi’nin hostlara erişimi için “Initiators” ve “Initiator Group” erişimlerini vermelisiniz. Storage tarafına detaylıca girmiyorum konu genişleyip, dağılmaya başlar.

Not3 : Sunucunun “InitiatorName” elde etmek için aşağıdaki komutu kullanabilirsiniz.

> cat /etc/iscsi/initiatorname.iscsi

İscsi hedef tespiti için aşağıdaki komut ile discover işlemini yapalım. İlgili ip’lere bağlı erişimi olan tüm hedefleri listeleyecektir.

> iscsiadm -m discovery -t st -p 10.10.30.5

Çıktı: 10.10.30.5:3260,1030 iqn.1992-08.com.netapp:sn.2626a89cce1111e66c5200a098d9e8ba:vs.18

Şimdi var olan tüm iscsi hedeflerine login olmak için aşağıdaki komutu çalıştırın.

> iscsiadm -m node -l

Ayrıca http://www.fatlan.com/linux-sunucular-uzerinde-iscsi-yapilandirmasi/ adresinden iscsi yapılandırma komutlarına bakabilirsiniz.

Ardından “fdisk -l” ile bağlanan diskleri görüntüleyebilirsiniz.

Daha sonra da “multipath -l” ile de iscsi ile takılan disklerin multipath bağlantısını görüntüleyebilirsiniz.

Not4 : Host tarafında ISCSI bağlantıları için yaptığınız bond, vlan ve diğer network yapılandırmalarından sonra, NetworkManager’ı kapatmanız gerekmektedir. Aksi halde Engine tarafında hatalar alıp, nic kopmalarıyla beraber, ip’nizin kaybolması gibi durumlarla karşılaşabilirsiniz.

Host’ta Datastorage’de işlemleri tamamladıktan sonra HostedEngine kuruluma geçelim, bunun için tabi ilk önce Ovirt host’a login olalım.

Kurulum ekranında network kısmında management için verdiğiniz ip’yi tarayıca da 9090 ile çağırıp işlemlere devam edelim. Örnek olarak 192.168.22.10:9090 yada domain name gibi…

Bu ekran hostun yönetimi için açılan web panelidir. Sunucuyu konsol yerine burdan UI üzerinden rahatça yönetebilirsiniz. Biz HostedEngine kurulumunu bu ekrandan yapacağız. Bu ekrana sunucuya verilen kullanıcı adı ve şifresi ile login olacaksınız.

Aslında bu GUI ekranında terminalde yaptığınız birçok işlemi gerek kalmadan görsel ekranda da yapabilirsiniz. Iscsi bağlantınızı host’larda gerçekleştirdikten sonra bu ekranda da görünecektir, etkileşimli olarak yapılan işlemler yansıyacaktır.

Ovirt node’ye login olduktan sonra Storage ile çalışacağımız için Virtualization – Hosted Engine sekmesine gidip start veriyoruz. Hyperconverged sekmesi ile şuan ilgilenmiyoruz çünkü bu kısım internal diskler ile glusterfs file sistemi yedekli node’ler ile kullanmaktadır. Gluster için; OS in disklerini Raid 1, Gluster‘ın kullanacağı disklerini Raid 5 olarak iki Raid grup yapabilirsiniz.

Bu kısmda hosted engine için yukarıda belirdediğimiz ip’ye karşılık gelen domaini dns sunucumuzda daha önceden tanımlamıştık. Örnek bulut.fatlan.com gibi.

Engine VM FQDN kısmına o domaini yazıyoruz.

Belirlenen ip’yi dhcp’den ya da static olarak verip, gateway ve dns bilgilerini de giriyoruz.

Manage olacak bridge interface’mizide seçtikten sonra host’un root pass bilgisini giriyoruz.

En son olarak virtual CPU ve Memory kısımların da default’ta bırakıp Next ile devam edelim.

Bu kısımda ki Engine Credentials kısmı önemli. Çünkü Bu kısımdan HostedEngine login olabileceğiniz şifreyi belirliyorsunuz.

Notification kısmı şuan için çok zaruri değil, defaultta bırakabilirsiniz daha sonra da değiştirebilirsiniz.

Ardından config’ler hazır halde Prepare VM demenizi beklemektedir. Tıklayıp devam edin.

NoT4 : HostedEngine atadığınız ip gateway’ine ping atabilmelidir ve network’sel erişimde kısıtlı olmamalıdır aksi halde aşağıdaki ss’lerden belirttiğim hataları alırsınız ve çok sizi çok uğraştırır.

Terminalde;

GUI’de;

Prepare VM dedikten sonra aşağıdaki gibi başarılı bir kurulum uyarısı alacaksınız, Next ile devam edin.

Şimdi Engine’nin barınacağı datastore için iscsi ayarlarını yapmamız gerekiyor. Diğer store’leri engine kurulduktan sonra yapacağız.

Storage type iscsi seçip,

Portal ip address kısmına iscsi hedefimizin ip adresini yazıyoruz, eğer hedefinizde user ve şifre varsa onu da girin bende olmadığı için girmiyorum.

Ardından Retrieve Target List butonuna tıklayın.

Retrieve Target List butonuna bastıktan sonra aşağıdaki gibi hedefleriniz gelecektir. Seçiminizi yapıp Next ile devam edin.

Ardından aşağıdaki gibi yeşil Finish ekranı sizi karşılıyorsa Hosted Engine kurulumu başarılı bir şekilde gerçekleştirildi demektir.

Tekrar Hosted Engine deploy ettiğimiz Ovirt Node ekranına dönecek olursak aşağıdaki gibi deploy işleminin başarılı ve sunucunun çalıştığını anlayabiliriz.

Şimdi kurduğumuz hosted engine login olalım. Default kullanıcı adı “admin”, password de deploy sırasında verdiğiniz şifre olacak.

Artık bundan sonra ki işlemlerimize hosted engine’de devam edeceğiz. Datacenter ekleme, Cluster ekleme, Host ekleme, Storage ekleme, Vm oluşturma gibi vesaire işlemleri bu ekranda yapacağız.

Bölüm 2 : http://www.fatlan.com/ovirtrhev-4-2-kurulum-ve-yapilandirmasi-host-ekleme-bolum-2/

Linux Sunucular Üzerinde ISCSI Yapılandırması

iscsi(Internet Small Computer Systems Interface), ağ(network) üzerinden veri depolama(storage) ünitelerine tcp/ip protokolünü kullanarak blok düzeyinde erişim sağlayan yöntemdir.

Storage tarafında ilgili SVMs, LUNs, Volumes ve network ayarlarını yapıptan sonra iscsi’nin sunuculara erişimi için “Initiators” ve “Initiator Group” erişimlerini vermelisiniz. Storage tarafına girmiyorum konu genişleyip, dağılmaya başlar.

Not : Sunucunun “InitiatorName” elde etmek için aşağıdaki komutu kullanabilirsiniz.

> cat /etc/iscsi/initiatorname.iscsi

İscsi’leri Keşfedelim;

Sunucu üzerinde İscsi hedef tespiti için aşağıdaki komut ile discover işlemini yapalım. İlgili ip’lere bağlı erişimi olan tüm hedefleri listeleyecektir.

> iscsiadm -m discovery -t st -p 10.10.30.5

Çıktı: 10.10.30.5:3260,1030 iqn.1992-08.com.netapp:sn.2626a89cce1111e66c5200a098d9e8ba:vs.18

İscsi’lere login olalım;

Şimdi var olan tüm iscsi hedeflerine login olmak için aşağıdaki komutu çalıştırın.

> iscsiadm -m node -l

Ya da tek tek login olmak için aşağıdaki komutu da kullanabilirsiniz.

> iscsiadm -m node -T -l iqn.1992-08.com.netapp:sn.2626a89cce1111e66c5200a098d9e8ba:vs.18 -p 10.10.30.5:3260

İscsi’lere logout olmak için;

İscsi den tümüyle birden logout olmak için,

> iscsiadm -m node -u

Ya da tek tek logout olmak için,

> iscsiadm -m node -T -u iqn.1992-08.com.netapp:sn.2626a89cce1111e66c5200a098d9e8ba:vs.18 -p 10.10.30.5:3260

İscsi diskleri genişletme;

İscsi ile çalışan stroge’de alan genişlettikten sonra aşağıdaki komut ile de sunucuya yansımasını sağlayabilirsiniz.

> iscsiadm -m session –rescan

İscsi genişletmesinden sonra eğer hedefleri multipath olarak kullanıyorsanız aşağıdaki komutu da çalıştırmanız gerekebilir.

> multipathd resize map “multipath alias ya da wwid_numarası”

Ardından “fdisk -l” ve “multipath -l” komutları ile işlemin doğruluğunu kontrol edebilirsiniz.

Güvenli Yerel Docker Registry Kurulumu

Docker registry docker images’larının depolandığı sistemdir. Docker images’larını pull ile çekip, push ile de gönderip paylaştığımız sistemdir. Hali hazırda docker resmi olarak https://hub.docker.com/ dan binlerce özel yada genel, kullanıma açtığı images’lar bulunmaktadır. Bizlerde bu sistemi kullanmaktayız.

Docker hub gibi sadece yerel ağınızda kullanıma açmak isteyebileceğiniz bu sistemi aşağıdaki yöntem ile kurup kullanabilirsiniz.

Registry için biz ubuntu kullanacağız ve docker kurulumun yapılmış olduğunu farz ederek registry kurulumuna geçiyoruz.

Örnek domain olarak “fatlan.com” kullanılmıştır.

Kuruluma geçmeden önce güvenli kurulum olduğu için ssl sertifikalarınız(domain.crt, domain.key) mevcut olmalıdır. Bu sertifika authority confirmed olabilir yada self sign olabilir. Burada önemli olan kısım domain.crt dosyasının içinde ilk olarak domain sertifika key’i akabinde kök sertifika key’i olmalıdır. Yoksa registry’e images push ettiğinizde “x509: certificate signed by unknown authority” hatası alırsınız.

Sertifikalarınızı “/certs” klasörünün altına taşıyın.

> sudo mkdir /certs

Ardından “mkdir” komutu ile “/mnt/registry-repo” klasörünü oluşturun. Biz registry için images store olarak bu directory kullanacağız. Sizler bu kısımda “/mnt/registry-repo” dizini farklı bir disk yada partition olarak seçip, mount edip daha geniş bir alana olarak kullanabilirsiniz.

> sudo mkdir /mnt/registry-repo

Ardından aşağıdaki komutla docker registry’i kuralım.

> sudo docker run -d –restart=always –name registry -v /certs:/certs -v /mnt/registry-repo:/var/lib/registry -e REGISTRY_HTTP_ADDR=0.0.0.0:443 -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key -p 443:443 registry:2

Registry container’ımızın çalıştığını “sudo docker ps -a” komutu ile kontrol edelim.

Şimdi kurulumu doğrulamak için pull ve push yöntemlerini de dahil ederek test edelim. Ayrıca https://docker.fatlan.com/v2/_catalog adresinden de kontrol edebilirsiniz, tabi siz kendi belirlediğiniz domain name‘i girmelisiniz.

İlk önce hello-world images’ını docker hub’tan pull edelim.

> sudo docker pull hello-world

Ardından bize özel olması için tag atayalım.

> sudo docker tag hello-world docker.fatlan.com/my-hello-world

Şimdi yerel registry’ımıza push ile gönderelim.

> sudo docker push docker.fatlan.com/my-hello-world

Son olarak bu images’ımızı yani kendi yerel registry’ımızdan pull edelim ve bitirelim.

> sudo docker pull docker.fatlan.com:443/my-hello-world