Docker Container’a erişim için Host’un Nic portu üzerinden erişim izni – Firewalld port açma / Docker Container’ın İnternete Yönlendirme işlemi

  • How to configure firewalld to allow docker containers free access to the host’s network ports.?

Burada dikkat etmeniz gereken container için host’ta match ettiğiniz portu güvenlik duvarı rule’sinde belirtmelisiniz. Ben 8080 portunu host’ta eşleştirdiğim için onu rule’de tanımlayacağım. Yani tarayıcıdan 8080 üzerinden contaniner’a erişeceğim.

Sırasıyla aşağıdaki komutları çalıştırmanız yeterlidir.

firewall-cmd –permanent –zone=trusted –change-interface=docker0
firewall-cmd –permanent –zone=trusted –add-port=8080/tcp
firewall-cmd –reload

  • Enable forwarding from docker containers to the outside world.?

Docker Container’ınızın internete çıkabilmesi için aşağıdaki işlemleri yapmanız yeterlidir.

systctl komutu ile net.ipv4.conf.all.forwarding değerini 1 yapmalısınız. Ardından iptables yada firewalld forward rule’sini tanımlamanız yeterli.

sysctl net.ipv4.conf.all.forwarding=1
sudo iptables -P FORWARD ACCEPT

ya da

firewall-cmd –direct –add-rule ipv4 filter FORWARD 0 -i docker0 -o ens3 -j ACCEPT
firewall-cmd –reload

Docker Compose Kurulum/Kaldırma ve Custom Bridge ile Çalıştırma İşlemleri

İlgili sunucuda Docker kurulumunun yapıldığını var sayarak konuya giriş yapalım. Docker Compose up edildiğinde kendisi için farklı bir bridge oluşturup network yapılandırmalarını o bridge üzerinden yapmaktadır. Fakat biz Docker kururken varsayılan olarak gelen ya da custom olarak bizim oluşturuduğumuz subnet‘teki network bridge‘yi kullanarak Docker Compose uygulamalarını up yapmak istiyoruz. Bunun için aşağıdaki yönergeleri takip etmeniz yeterlidir.

İlk önce aşağıdaki komut ile Docker Network çıktımıza bakalım(biz bridge sanal aygıtını kullanacağız).

  • sudo docker network ls

Docker Compose kurulum işlemi için aşağıdaki komutları sırasıyla çalıştırmanız yeterlidir;

  • sudo curl -L “https://github.com/docker/compose/releases/download/1.23.1/docker-compose-$(uname -s)-$(uname -m)” -o /usr/local/bin/docker-compose
  • sudo chmod +x /usr/local/bin/docker-compose
  • sudo docker-compose –version

Custom bridge ile Docker Compese yml çalıştırma(örnek wordpress yml dosyası – docker-compose up -d);

version: ‘3.3’
services:
db:
image: mysql:5.7
restart: always
volumes:
– db_data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: wordpress
network_mode: bridge

wordpress:
image: wordpress
restart: always
volumes:
– ./wp_data:/var/www/html
ports:
– “8080:80”
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_NAME: wordpress
WORDPRESS_DB_USER: root
WORDPRESS_DB_PASSWORD: password
network_mode: bridge
depends_on:
– db

volumes:
db_data:
wp_data:

networks:
default:
external:
name: bridge

Docker Compose kaldırma işlemi;

  • sudo rm /usr/local/bin/docker-compose

oVirt Debian/Ubuntu Guest Agent Kurulumu ve Yapılandırması – Sorun Çözüldü

oVirt ortamına kurduğunuz Debian/Ubuntu makineler için aşağıdaki komutu çalıştırarak ovirt-guest-agent servisini kurabilirsiniz.

> sudo apt install ovirt-guest-agent -y

Fakat servis durumunu kontrol ettiğinizde aşağıdaki gibi hata aldığınızı göreceksiniz.

Aşağıdaki yönergeleri izleyerek hataları giderip, servisi sağlıklı bir şekilde çalıştırabilirsiniz.

İlk önce “ovirt-guest-agent.service” servis dosyasını edit edip, “User=root” olarak değiştirelim(servisin root haklarında çalışmasının, güvenlik tarafındaki oluşturabileceği sıkıntılara şimdilik değinmiyorum).

> sudo vi /lib/systemd/system/ovirt-guest-agent.service

User=root

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

> systemctl daemon-reload

Akabinde aşağıdaki komutla device’leri listeleyebilirsiniz. Çünkü “ovirt-guest.agent.0” aygıtını kullanacağız.

> ll /dev/virtio-ports/

Şimdi “ovirt-guest-agent.conf” dosyasını aşağıdaki gibi yapılandıralım.

> sudo vi /etc/ovirt-guest-agent.conf

[virtio]
# device = /dev/virtio-ports/com.redhat.rhevm.vdsm
device = /dev/virtio-ports/ovirt-guest-agent.0

Son olarak aşağıdaki komutları sırasıyla çalıştırın. İşlem bu kadar.

> sudo systemctl enable ovirt-guest-agent.service

> sudo systemctl start ovirt-guest-agent.service

> sudo systemctl status ovirt-guest-agent.service

Ovirt Internal Admin Şifresini değiştirme – Changing the Password for admin@internal(ovirt admin@internal password change)

Aşağıdaki komut ile internal admin kullanıcısının detaylarını görebilirsiniz. Yukarıdaki ss’de de durumu gözlemleyebilirsiniz.

> ovirt-aaa-jdbc-tool user show admin

Şifreyi reset’lemek için ise aşağıdaki komutu kullanabilirsiniz. Sorun olması durumunda (–force) parametresini kullanabilirsiniz.

> ovirt-aaa-jdbc-tool user password-reset admin

Ardından Engine servisini yeniden başlatmalısınız.

> systemctl restart ovirt-engine.service

Fiziksel HP Gen9 Sunucuda OS Boot Ekleme – Kaybolan OS GRUB Ekleme on Linux

HP sunucularda genelde fiziksel board değişiminden sonra işletim sistemi disk üzerinden açılmaz. Bunun nedeni sunucu başlangıç diski olarak MBR’ı görmemesidir. Bu işlemi göstereceğimi şekilde işletim sisteminin kurulu olduğu diski manuel olarak göstererek grub’ın boot olmasını sağlayacağız.

1. Sunucu başladıktan sonra F9’a basılarak System Utilities gidilir.

2. System Configuration seçilir.

3. BIOS/Platform Configuration seçilir.

 Boot Options seçilir.

5. Advanced UEFI Boot Maintenance seçilir.

6. Add Boot Option seçilir.

7. Bu kısında işletim sisteminin yüklü olduğu disk otomatik olarak gelecektir, seçip devam edelim.

8. EFI seçilir.

9. Bizde Linux Ubuntu yüklüydü geldi, seçilip devam edilir.

10. grub64.efi seçip devam ediyoruz.

11. Burda yüklü işletim sistminin adını yazmak mantıklı,

12. Enter ile menüye girilir.

13. Bizde ubuntu yüklü olduğu için ubuntu yazıp devam ediyoruz.

14. F10 ile işlem kaydedilir.

15. Boot Options seçeneğine tekrar gidilir ve en altta geldiği görülür.

16. Burda + ve – ile listenin en üstüne ubuntu sekmesi getirilir ki işletim sistemi direk açılsın.

17. F10’a basarak yapılandırmalar kaydedilir ve sunucu yeniden başlatılarak, sunucunun diskteki OS’den başlaması sağlanmış olur.

Linux Sistemlerde Açık Portların Kontrolü – netstat – lsof

İşletim sisteminde hizmet veren her servis bir port üzerinden hizmet verir. Bu nedenle sistem yöneticisinin sistem üzerinde bu portlara hakim olması gerekiyor. Farkında olunmadığı ya da gizli kalmış açık bir port bulunmamalıdır. Çünkü bu portlar aracılığı ile dış dünyaya yani internete servis sunulmaktadır. Bu nedenle internete açık bağlantıların belirlenmesi kritik bir görevdir ve öneme sahiptir. İşletim sisteminizde tcp ve udp olarak açık olan port ve servisler “netstat” ve “lsof” yardımıyla tespit edilebilir.

> netstat -plntua

> lsof -i -n | egrep -i listen

HAProxy ve Nginx x-forwarded-for (Client ip lerin loglanmasını sağlamak)

HAProxy için herbir backend yapılandırmanızda aşağıdaki satır bulunmalıdır.

option forwardfor

Nginx için “/etc/nginx/nginx.conf” yapılandırma dosyasını aşağıdaki gibi yapılandırmalısınız.

log_format main ‘$http_x_forwarded_for ($remote_addr) – $remote_user [$time_local] ‘
‘”$request” $status $body_bytes_sent “$http_referer” ‘
‘”$http_user_agent”‘ ;

access_log /var/log/nginx/access.log main;
error_log /var/log/nginx/error.log;

Ardından servisi yeniden başlatın.

> systemctl restart nginx.service (service nginx restart ya da /etc/init.d/nginx restart)

Daha sonra aşağıdaki komut ile son durumu gözden geçirebilirsiniz.

> tail -f /var/log/nginx/access.log

Firewalld

Firewalld’nin IPTables’a göre fark olarak en belirgin özelliği bölgeler(zone) kullanmasıdır. Zone yapılan kurallar geçerlidir. Her bir zone(bölge)’de farklı yapılanmalar kullanabilir. Bu zone(bölge)’leri değiştirerek uyguladığınız tüm kuralları değiştirebilirsiniz.

Firewall-cmd bu iş kullanacağımız en temel komuttur.

Aşağıdaki komutla tüm yapılandırmalara ait detaylar görüntülünebilir. Aktif olup olmadığı, izin verilen port ya da servisler gibi birçok detay mevcuttur.

> firewall-cmd –list-all

Aşağıdaki komut ile de mevcuttaki tüm zone(bölge)’leri listeleyebilirsiniz.

> firewall-cmd –get-zones

Aşağıdaki komutlar ile de default(fabrika ayarı)’ta kullanılan zone(bölge)’yi görüntüleyebilirsiniz.

> firewall-cmd –get-default-zone

ya da

> firewall-cmd –get-active-zones

Aşağıdaki komut ise default zone(fabrika çıkışı bölge)’yi değiştirebilirsiniz.

NoT1 : Firewalld’de kurallar oluşturduktan sonra makineyi yeniden başlatmadan geçerli olması için “firewall-cmd –reload” komutu çalıştırmalısınız.

> firewall-cmd –set-default-zone=home

> firewall-cmd –reload

Alttaki komut ile servise dışarıdan erişim için izin verilebilir.

NoT2 : Permanent(kalıcı) parametresi burada kuralın kalıcı olmasını sağlamaktadır.

> firewall-cmd –zone=public –add-service=http –permanent

> firewall-cmd –reload

Ya da var olan kurallar silinebilir.

> firewall-cmd –zone=public –remove-service=http –permanent

> firewall-cmd –reload

Aşağıdaki komut ile de servis değil de port bazlı erişim izini verilebilir.

> firewall-cmd –zone=public –add-port=443/tcp –permanent

> firewall-cmd –zone=public –add-port=53/udp –permanent

> firewall-cmd –reload

Ya da var olan kurallar silinebilir.

> firewall-cmd –zone=public –remove-port=443/tcp –permanent

> firewall-cmd –zone=public –remove-port=53/udp –permanent

> firewall-cmd –reload

Birde zengin(rich) kurallar vardır. Adında da anlaşılacağı gibi özel, ip bazlı oluşturulabilen kurallar vardır. Bu konuya da değinmek gerekmektedir.

Sadece 192.168.1.25 ip’sinden gelen tüm istekleri kabul eden kural oluşturulur.

> firewall-cmd –zone=public –add-rich-rule=’rule family=”ipv4″ source address=192.168.1.25 accept’

> firewall-cmd –reload

Aşağıda ise 192.168.1.25 ip’sinden gelen 22 isteklerini reddetmektedir.

> firewall-cmd –zone=public –add-rich-rule=‘rule family=”ipv4” source address=”192.168.1.25” port port=22 protocol=tcp reject’

> firewall-cmd –reload

Rich rule(zengin kurallar)’leri aşağıdaki komut ile de görüntülenebilir.

> firewall-cmd –list-rich-rules

Şimdi şu ana kadar yapılan tüm kurallar “firewall-cmd –list-all” komutu ile görüntülenebilir.

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.

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/

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/