red-hat 7 yeni güvenlik duvarı : firewalld

50
Ön Söz FirewallD Nedir ? FirewallD ve İptables Karşılaştırmaları Zone Kavramı Nedir ? Varsayılan Zone Tanımları Başlangıç Zone Yönetimi Kaynak Yönetimi Servis Yönetimi Güvenlik Duvarı Servis Konfigurasyonu Port Yönetimi Port Yönlendirme Güvenlik Duvarı Kural Yönetimi Grafik Arabirim (GUI) ile Güvenlik Duvarı Konfigurasyonu Örnek Uygulamalar Grafik Arayüz Programı ile Port Engellemek Grafik Arayüz Programı ile Port Yönlendirmek Grafik Arayüz Programı ile Varsayılan Zone Belirtmek Ağ Arabirimlere Bağlı Zone ‘ları Görüntülemek/Değiştirmek Güncel Hayattan Pratik Örnekler FirewallD Log Mekanizması FirewallD Log Seçenekleri FirewallD Log Kural Sözdizimi Syslog Auditd FirewallD Hata Numaraları FirewallD Konfigurasyon Yedekleme İşlemleri Yedek Alma Düzenli Full Konfigurasyon Yedekleme Crontab ‘a Kural Girdisi Eklemek Değişiklik Oldukça Düzenli Yedekleme Yedekten Geri Dönme

Upload: ibrahim-ucar

Post on 11-Apr-2017

414 views

Category:

Internet


1 download

TRANSCRIPT

Page 1: Red-Hat 7 Yeni Güvenlik Duvarı : firewalld

Ön Söz

FirewallD Nedir ?

FirewallD ve İptables Karşılaştırmaları

Zone Kavramı Nedir ?

Varsayılan Zone Tanımları

Başlangıç

Zone Yönetimi

Kaynak Yönetimi

Servis Yönetimi

Güvenlik Duvarı Servis Konfigurasyonu

Port Yönetimi

Port Yönlendirme

Güvenlik Duvarı Kural Yönetimi

Grafik Arabirim (GUI) ile Güvenlik Duvarı Konfigurasyonu

Örnek Uygulamalar

Grafik Arayüz Programı ile Port Engellemek

Grafik Arayüz Programı ile Port Yönlendirmek

Grafik Arayüz Programı ile Varsayılan Zone Belirtmek

Ağ Arabirimlere Bağlı Zone ‘ları Görüntülemek/Değiştirmek

Güncel Hayattan Pratik Örnekler

FirewallD Log Mekanizması

FirewallD Log Seçenekleri

FirewallD Log Kural Sözdizimi

Syslog

Auditd

FirewallD Hata Numaraları

FirewallD Konfigurasyon Yedekleme İşlemleri

Yedek Alma

Düzenli Full Konfigurasyon Yedekleme

Crontab ‘a Kural Girdisi Eklemek

Değişiklik Oldukça Düzenli Yedekleme

Yedekten Geri Dönme

Page 2: Red-Hat 7 Yeni Güvenlik Duvarı : firewalld

Ön Söz Bu yazı RHEL 7 ile gelen FirewallD hakkında detay bilgi içermektedir.

Bu makale v1 formatında ilk olarak 15.09.2015 tarihinde yayımlanmıştır.

Güncel sürümlerin slideshare.net/ibrahimucar39545464 adresinden

ulaşabilirsiniz.

Makale ile ilgili önerilerinizi, düzeltmemi istediğiniz hususları benimle

paylaşmanız ve katkıda bulunmanız beni çok mutlu eder. İletişim kurmaktan

lütfen çekinmeyiniz.

İbrahim UÇAR

[email protected]

twitter.com/ucribrahim

Network teknolojilerini öğrenirken, araştırma yapmamda ve yazdıklarımı

derleyip bu makaleyi hazırlamamda katkı sunan Ozan UÇAR ‘a teşekkürlerimi

sunarım.

Page 3: Red-Hat 7 Yeni Güvenlik Duvarı : firewalld

FirewallD Nedir ? Rhel 7 ile beraber Iptables firewall yerini alan FirewallD yada diğer bilinen adı

ile Dynamic Firewall bir çok yenilik sunuyor.

Dynamic firewall servisi olan Firewalld, güvenli tutulması gereken ağları ve

onların tanımladığı ağ arabirimlerini “zone” desteği ile dinamik ve esnek bir

şekilde yönetebilir kılar.

IPv4 ve IPv6 konfigurasyon desteği sağlamaktadır. FirewallD, Bridge Ethernet

kartlarını destekler ve kalıcı konfigurasyon seçenekleri vardır. Servisler ve

uygulamaların doğrudan firewall kuralı eklemesi için bir arabirim sunmaktadır.

Page 4: Red-Hat 7 Yeni Güvenlik Duvarı : firewalld

FirewallD ve İptables Karşılaştırmaları

Iptables ve FirewallD için gerekli başlıca farklılıklar şu şekildedir,

Iptables servisi konfigurasyon dosyasını /etc/sysconfig/iptables dizini

altında saklamaktadır buna istinaden firewalld bir çok konfigurasyon

dosyasını XML formatında /usr/lib/firewalld/ dizini altında

saklamaktadır. Not: Red Hat Enterprise Linux sistemlerde varsayılan

olarak firewalld kurulu ise /etc/sysconfig/iptables dizini

bulunmamaktadır.

Iptables servisi ile her yeni değişiklik diğer tüm kuralların temizlenip

/etc/sysconfig/iptables dosyasından yeniden yüklenmesi anlamına

gelmektedir, buna karşın firewalld eski kuralların tamamını yeniden

yüklemez, sadece değişiklikleri yükler ve uygular. Bu şu demek oluyor

ki, firewalld çalışma anında bir değişiklik yaptığınızda varolan

bağlantıları asla koparmaz. Bu durum bir statefull firewall’dan beklenen

en şık hareket olur.

Page 5: Red-Hat 7 Yeni Güvenlik Duvarı : firewalld

Her ikiside ıptables araçlarını kullanarak kernel packet filter ile konuşur.

Aşağıdaki şema bunu göstermektedir.

Page 6: Red-Hat 7 Yeni Güvenlik Duvarı : firewalld

Zone Kavramı Nedir ? Dilimize “bölge” olarak çevirebileceğimiz zone tanımı, ağ bağlantıları için

güven düzeyini tanımlar. Bu bağlantı yalnızca bir zone‘a dahil olabiliyor, ancak

bir zone için birçok ağ bağlantısı kullanılabilir. Bunu örnekleri ile

açıklayacağım ve yazının devamında zone ifadesini kullanmayı tercih

ediyorum (daha teknolojik)

Varsayılan Zone Tanımları drop : Tüm gelen ağ paketlerini engeller. Yalnızca giden ağ bağlantıları için

izin verilir.

block : Tüm gelen ağ bağlantılarını engeller ve IPv4 için

icmp­host­prohibited mesajı döndürür, IPv6 için ise icmp6­adm­prohibited

döndürür.

public : Ortak kullanım için oluşturulmuş bir zone. Sadece seçili gelen

bağlantılar kabul edilir.

external : Bu zone dış ağı yani internet ağını temsil etmektedir.

dmz : Kamuya açık ve iç ağınıza sınırlı erişimi olan bilgisayarlar için

arındırılmış. Yalnızca seçili gelen bağlantılar kabul edilir.

work : Güvenli çalışma için oluşturulmuş çalışma alanı.

home : Ev alanlarında kullanım için oluşturulmuş çalışma alanı.

internal : İç ağda kullanılmak üzere oluşturulmuş çalışma alanı.

trusted : Tüm ağ bağlantıları kabul edilir.

Page 7: Red-Hat 7 Yeni Güvenlik Duvarı : firewalld

Başlangıç

Firewalld servisinin durumunu kontrol etmek isterseniz aşağıdaki komutu

kullanabilirsiniz.

root# systemctl status firewalld

firewalld.service ­ firewalld ­ dynamic firewall daemon

Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled)

Active: active (running) since Wed 2015­07­01 13:10:20 PDT; 42s ago

Main PID: 700 (firewalld)

CGroup: /system.slice/firewalld.service

700 /usr/bin/python ­Es /usr/sbin/firewalld ­­nofork ­­nopid

veya alternatif kullanabileceğiniz başka bir komut ise aşağıdaki gibidir.

root# firewall­cmd ­­stat

running

Firewalld servisini başlatmak/durdurmak veya yeniden başlatmak isterseniz

aşağıdaki komutları kullanabilirsiniz.

root# systemctl stop firewalld

root# systemctl start firewalld

root# systemctl restart firewalld

Page 8: Red-Hat 7 Yeni Güvenlik Duvarı : firewalld

Tamamen firewalld güvenlik duvarını devre dışı bırakmak isterseniz aşağıdaki

komutu kullanabilirsiniz.

root# systemctl disable firewalld

aynı şekilde firewalld güvenlik duvarını yeniden etkinleştirmek için,

root# systemctl enable firewalld

Acil durumlarda tüm ağ trafiğini engellemek isterseniz aşağıdaki komutu

kullanabilirsiniz.

root# firewall­cmd ­­panic­on

kapatmak için,

root# firewall­cmd ­­panic­off

Güvenlik duvarının durumunu kontrol etmek isterseniz aşağıdaki komutu

kullanmanız yeterli olacaktır.

root# firewall­cmd ­­state

running

Page 9: Red-Hat 7 Yeni Güvenlik Duvarı : firewalld

Sistemde birkaç ağ arabirimi var ise, IP paketlerinin bir ağ arabiriminden bir

başka ağ arabirimine yönlendirmek isterseniz aşağıdaki satırı /etc/sysctl.conf

dosyasının içerisine girip en son satıra yapıştırın.

NOT : Routing gibi bir işlem yapılmayacak ise gerekli olan bir durum değildir.

net.ipv4.ip_forward = 1

Daha sonra aşağıdaki komutu kullanılarak ayarlar etkinleştirilir.

root# sysctl ­p /etc/sysctl.conf

NOT: Bir ayarın kalıcı olarak ayarlanmasını istiyorsanız ­­permament parametresini

kullanabilirsiniz. Aksi takdirde yapılan ayarlar sistem yeniden başlatılana kadar

sürecektir.

NOT: Yapılan ayarların hemen aktif olmasını istiyorsanız ­­reload parametresini

kullanabilirsiniz.

Page 10: Red-Hat 7 Yeni Güvenlik Duvarı : firewalld

Zone Yönetimi Sistemde varsayılan hangi zone kullanıldığını öğrenmek isterseniz aşağıdaki

komutu kullanabilirsiniz.

root# firewall­cmd ­­get­default­zone

public

Sistem ağ arayüzleri, zone ‘lara atanmış kaynakları veya onlar hakkında bilgi

almak isterseniz aşağıdaki komut kullanılabilir.

root# firewall­cmd ­­get­active­zones

public

interfaces: eth0

sources: 10.0.0.254/24

test

sources: 192.168.100.0/24

public

interfaces: eth1

sources: 172.16.16.0/24

Tüm kullanılabilir zone ‘ların listesini almak isterseniz aşağıdaki komutu

kullanabilirsiniz.

root# firewall­cmd ­­get­zones

block dmz drop external home internal public trusted work

Page 11: Red-Hat 7 Yeni Güvenlik Duvarı : firewalld

Varsayılan olarak kullandığınız bir zone alanını başka bir zone ile değiştirmek

isterseniz aşağıdaki komutu kullanabilirsiniz. Varsayılan zone artık home

ismindeki zone olacaktır.

root# firewall­cmd ­­set­default­zone=home

success

NOT : Varsayılan zone ayrıca /etc/firewalld/firewalld.conf dosyasından

değiştirilebilir.

Sistem ağ arabirimleri geçici yada kalıcı bir şekilde herhangi bir zone’a

atanabilir. Geçici olarak internal zone ‘unu eth0 ağ arayüzüne atamak için

aşağıdaki komutu kullanmanız yeterli olacaktır.

root# firewall­cmd ­­zone=internal ­­change­interface=eth0

success

Yukarıdaki komutun aynısı sadece kalıcı olarak internal zone ‘unu eth0 ağ

arayüzüne atamak için aşağıdaki komut kullanılabilir.

root# firewall­cmd ­­permanent ­­zone=internal ­­change­interface=eth0

success

Page 12: Red-Hat 7 Yeni Güvenlik Duvarı : firewalld

Bir zone’a eklediğiniz ağ arabirimini geçici olarak kaldırmak isterseniz

aşağıdaki komutu kullanabilirsiniz. Kalıcı olarak kaldırmak için ­­permanent

parametresini ekleyebilirsiniz.

root# firewall­cmd ­­zone=internal ­­remove­interface=eth0

success

Sistem eth0 ağ arabiriminin hangi zone ile ilişkili olduğunu öğrenmek

isterseniz aşağıdaki komutu kullanabilirsiniz. Aşağıdaki çıktıda eth0 ağ

arabiriminin internal zone ile ilişkili olduğunu görmekteyiz.

root# firewall­cmd ­­get­zone­of­interface=eth0

internal

Belirtilen network aralığı ile ilişkili olan zone ‘ları listelemek isterseniz

aşağıdaki komutu kullanabilirsiniz.

root# firewall­cmd ­­get­zone­of­source=192.168.100.0/24

no zone

Page 13: Red-Hat 7 Yeni Güvenlik Duvarı : firewalld

Genel geçerli zone yapılandırmasını görmek istersek aşağıdaki komutu

kullanabiliriz.

root# firewall­cmd ­­zone=public ­­list­all

public (default, active)

interfaces: eth0

sources:

services: dhcpv6­client ipp­client mdns samba­client ssh

ports:

masquerade: no

forward­ports:

icmp­blocks:

Kalıcı olarak bir zone oluşturmak isterseniz aşağıdaki komutu kullanabilirsiniz.

Örneğin, test adlı bir zone oluşturmak için,

root# firewall­cmd ­­permanent ­­new­zone=test

success

root# firewall­cmd ­­reload

success

Tamamen bir zone silmek isterseniz aşağıdaki komutu kullanabilirsiniz.

Örneğin, oluşturmuş olduğumuz test adlı zone ‘u silmek için,

root# firewall­cmd ­­permanent ­­delete­zone=test

success

Page 14: Red-Hat 7 Yeni Güvenlik Duvarı : firewalld

Önceden tanımlanmış servisleri görüntülemek istersek aşağıdaki komutu

kullanabiliriz.

root# firewall­cmd ­­get­services

RH­Satellite­6 amanda­client bacula bacula­client dhcp dhcpv6 dhcpv6­client dns

ftp high­availability http https imaps ipp ipp­client ipsec kerberos kpasswd ldap ldaps libvirt libvirt­tls mdns

mountd ms­wbt mysql nfs ntp openvpn pmcd

pmproxy pmwebapi pmwebapis pop3s postgresql proxy­dhcp radius rpc­bind

samba samba­client smtp ssh telnet tftp tftp­client transmission­client vnc­server wbem­https

Aşağıdaki komut tüm zone’ların etkin listesini ve zone‘lar hakkında detaylı bilgi

verir.

root# firewall­cmd ­­list­all­zones

block

interfaces:

sources:

services:

ports:

masquerade: no

forward­ports:

icmp­blocks:

rich rules:

dmz

interfaces:

sources:

services: ssh

Page 15: Red-Hat 7 Yeni Güvenlik Duvarı : firewalld

ports:

masquerade: no

forward­ports:

icmp­blocks:

rich rules:

drop

interfaces:

sources:

services:

ports:

masquerade: no

forward­ports:

icmp­blocks:

rich rules:

external

interfaces:

sources:

services: ssh

ports:

masquerade: yes

forward­ports:

icmp­blocks:

rich rules:

home

interfaces:

sources:

services: dhcpv6­client ipp­client mdns samba­client ssh

ports:

Page 16: Red-Hat 7 Yeni Güvenlik Duvarı : firewalld

Kaynak Yönetimi Bir zone’a kalıcı olarak network aralığı eklemek isterseniz aşağıdaki komutu

kullanabilirsiniz. Örneğin, test adlı zone’a network aralığı eklemek için,

root# firewall­cmd ­­permanent ­­zone=test ­­add­source=192.168.100.0/24

success

root# firewall­cmd ­­reload

success

root# firewall­cmd ­­zone=test ­­list­all

home

interfaces:

sources: 192.168.100.0/24

services: dhcpv6­client ipp­client mdns samba­client ssh

ports:

masquerade: no

forward­ports:

icmp­blocks:

rich rules:

Bir zone içerisindeki kaynağı silmek isterseniz aşağıdaki komut kullanılabilir.

Örneğin, test adlı zone içerisindeki ( 192.168.100.0/24 ) kaynağını silmek için,

root# firewall­cmd ­­permanent ­­zone=test ­­remove­source=192.168.100.0/24

success

Page 17: Red-Hat 7 Yeni Güvenlik Duvarı : firewalld

Bir zone’a bağlı ağ arabirimleri listelemek isterseniz aşağıdaki komutu

kullanabilirsiniz. Herhangi bir zone belirtilmezse, varsayılan zone kullanılır.

root# firewall­cmd ­­zone=test ­­list­interfaces

eth0

Bir zone ‘a ağ arabirimi eklemek isterseniz aşağıdaki komutu kullanabilirsiniz.

Örneğin, eth0 a eth0 adlı ağ arabirimi test adlı zone’a eklemek için aşağıdaki

birinci komut kullanabilir. Kalıcı olarak ayarlamak isterseniz ikinci komutu

kullanabilirsiniz.

root# firewall­cmd ­­zone=test ­­add­interface=eth0

success

root# firewall­cmd ­­permanent ­­zone=test ­­add­interface=eth0

success

NOT: NetworkManager ağ arabirimleri otomatik olarak zone’lara eklemektedir.

Page 18: Red-Hat 7 Yeni Güvenlik Duvarı : firewalld

Bir zone içerisindeki kaynağı kalıcı olarak değiştirmek istersek aşağıdaki

komutu kullanabiliriz. Örneğin, (192.168.100.0/24) kaynağını

(172.16.16.0/24) kaynağı ile değiştirmek için aşağıdaki komutu kullanmamız

yeterli olacaktır. Eğer kalıcı olarak ayarlamak istemezsek ­­permanent

parametresini kaldırabiliriz.

root# firewall­cmd ­­permanent ­­zone=test ­­change­source=172.16.16.0/24

success

Bir zone alanına ait port numaralarını listelemek istersek aşağıdaki komutu

kullanabiliriz.

root# firewall­cmd ­­zone=test ­­list­ports

443/tcp 22/tcp 80/udp

Bir zone alanına bağlı kaynakları listelemek isterseniz aşağıdaki komutu

kullanabilirsiniz. Eğer herhangi bir zone belirtilmezse, varsayılan zone için

uygulanacaktır.

root# firewall­cmd ­­zone=test ­­list­sources

192.168.100.0/24

Bir zone için yönlendirilmiş port ’ların listesini görmek için aşağıdaki komut

kullanılabilir. Eğer herhangi bir zone belirtilmez ise varsayılan zone

kullanılacaktır.

root# firewall­cmd ­­zone=test ­­list­forward­ports

Page 19: Red-Hat 7 Yeni Güvenlik Duvarı : firewalld

Servis Yönetimi Örneğin, HTTP servisini sürekli belirtilen zone için izin vermek isterseniz

aşağıdaki komutu kullanabilirsiniz. Daha sonra yaptığınız değişikliği hemen

aktif olmasını isterseniz ikinci komutu kullanabilirsiniz. Bu seçenek birden çok

kez belirtilebilir.

root# firewall­cmd ­­permanent ­­zone=test ­­add­service=http

success

root# firewall­cmd ­­reload

success

root# firewall­cmd ­­zone=test ­­list­all

test

interfaces: eth0

sources: 192.168.100.0/24

services: dhcpv6­client ipp­client mdns samba­client ssh http

ports:

masquerade: no

forward­ports:

Page 20: Red-Hat 7 Yeni Güvenlik Duvarı : firewalld

Belirtilen zone için mesela, HTTP servisini yasaklamak isterseniz aşağıdaki

komutu kullanabilirsiniz. Yasaklamaktan kastım belirtilen HTTP servisi bu

zone için kaldırıldığı zaman zaten bu servise kimse erişemeyecek, dolayısıyla

yasaklanmış olacaktır.

root# firewall­cmd ­­permanent ­­zone=test ­­remove­service=http

success

Varsayılan olarak kullanılan zone içerisindeki servisleri listelemek istersek

aşağıdaki komutu kullanabiliriz.

root# firewall­cmd ­­list­services

dhcpv6­client ssh

Yukarıdaki komut varsayılan zone içerisindeki servisleri gösterir demiştik.

Aşağıdaki komut ise belirtilen zone içerisindeki servisleri gösterir.

root# firewall­cmd ­­zone=test ­­list­services

dhcpv6­client http ipp­client mdns samba­client ssh

Varsayılan olarak kullandığınız zone alanına yeni bir servis eklemek isterseniz

aşağıdaki komutu kullanabilirsiniz. Kalıcı olarak eklemek isterseniz

­­permanent parametresi ekleyebilirsiniz.

root# firewall­cmd ­­new­service=ftp

success

Page 21: Red-Hat 7 Yeni Güvenlik Duvarı : firewalld

Örneğin bir servisi sadece 10 saniye için varsayılan zone ‘a eklemek

isterseniz aşağıdaki komutu kullanabilirsiniz. Daha sonra ­­list­all

parametresini kullanarak test edebilirsiniz.

root# firewall­cmd ­­add­service=samba ­­timeout=10

success

Önceden tanımlanmış icmp türlerini görüntülemek istersek aşağıdaki komutu

kullanabiliriz.

root# firewall­cmd ­­get­icmptypes

destination­unreachable echo­reply echo­request parameter­problem redirect

router­advertisement router­solicitation source­quench time­exceeded

Varsayılan olara kullandığınız zone alanına yeni bir icmp türünü eklemek

isterseniz aşağıdaki komutu kullanabilirsiniz.

root# firewall­cmd ­­new­icmptype=echo­reply

success

Önceden tanımlanmış bir icmp türünü silmek istersek aşağıdaki komutu

kullanabiliriz. Kalıcı olarak silmek istersek ­­permanent parametresi

ekleyebiliriz.

root# firewall­cmd ­­delete­icmptype=echo­reply

success

Page 22: Red-Hat 7 Yeni Güvenlik Duvarı : firewalld

Güvenlik Duvarı Servis Konfigurasyonu Firewalld paketi ile birlikte güvenlik duvarı yapılandırma hizmetleri

(ftp,httpd,ssh,) /usr/lib/firewalld/services dizininde tutulmaktadır. Eğer yeni

servisler eklemek isterseniz /etc/firewalld/services dizini içerisine

ekleyebilirsiniz. Eğer dosyalar aynı hizmet için her iki yerde kullanılıyorsa

/etc/firewalld/services dizinindeki dosyalar önceliklidir.

Örneğin, HAProxy servisi.

Aşağıdaki komutu kullanarak haproxy.xml adında bir dosya oluşturun ve

aşağıdaki satırı içerisine yapıştırın. Ayarları kaydetmek için CTRL+O

kombinasyonuna basıktan sonra enter tuşuna basılır ardından CTRL+X

kombinasyonuna basarak dosyadan çıkılır.

root# nano /etc/firewalld/services/haproxy.xml

<?xml version="1.0" encoding="utf­8"?>

<service>

<short>HAProxy</short>

<description>HAProxy load­balancer</description>

<port protocol="tcp" port="80"/>

</service>

Daha sonra aşağıdaki komutlar kullanılarak dosya için gerekli ayarlar yapılır.

root# cd /etc/firewalld/services

root# restorecon haproxy.xml

root# chmod 640 haproxy.xml

Page 23: Red-Hat 7 Yeni Güvenlik Duvarı : firewalld

Varsayılan olarak kullanılan zone alanına oluşturduğumuz servisi eklemek

istersek aşağıdaki komutu kullanabiliriz. Eğer eklemek istediğimiz özel bir

zone varsa ­­zone=zone_ismi parametresini kullanabiliriz.

root# firewall­cmd ­­permanent ­­add­service=haproxy

success

root# firewall­cmd ­­reload

success

Varsayılan olarak kullanılan zone‘a eklediğimiz haproxy servisini kaldırmak

istersek aşağıdaki komutu kullanabiliriz.

root# firewall­cmd ­­permanent ­­remove­service=haproxy

success

root# firewall­cmd ­­reload

success

Page 24: Red-Hat 7 Yeni Güvenlik Duvarı : firewalld

Port Yönetimi Bir zone alanına kalıcı olarak 443/tcp portuna izin vermek isterseniz aşağıdaki

komutu kullanabilirsiniz. Örneğin, test adlı zone ‘a 443/tcp portunu izin

verelim. Kalıcı olarak eklemek istemezseniz ­­permanent parametresini

kaldırabilirsiniz.

root# firewall­cmd ­­permanent ­­zone=test ­­add­port=443/tcp

success

root# firewall­cmd ­­reload

success

root# firewall­cmd ­­zone=test ­­list­all

test

interfaces: eth0

sources: 192.168.100.0/24

services: dhcpv6­client http ipp­client mdns samba­client ssh

ports: 22/tcp 443/tcp

masquerade: no

forward­ports:

Page 25: Red-Hat 7 Yeni Güvenlik Duvarı : firewalld

Bir zone alanına eklediğiniz port numarasını silmek isterseniz aşağıdaki

komutu kullanabilirsiniz. Eğer herhangi bir zone belirtilmezse, varsayılan zone

için uygulanacaktır.

root# firewall­cmd ­­permanent ­­zone=test ­­remove­port=443/tcp

success

Bir zone alanına eklediğimiz port numaralarını görmek istersek aşağıdaki

komutu kullanabiliriz.

root# firewall­cmd ­­zone=test ­­list­ports

443/tcp 22/tcp

Port Yönlendirme Güvenlik duvarında port yönlendirme yapmak isterseniz aşağıdaki adımları

takip edebilirsiniz.

Bir zone için port yönlendirme yapmak istersek aşağıdaki komutu

kullanabiliriz. Aşağıdaki komutun anlamı şudur, test adlı zone için tcp

protokolü ile 22 portuna gelen tüm istekleri 3758 portuna yönlendir.

root# firewall­cmd ­­permanent ­­zone=test ­­add­forward­port=port=22:proto=tcp:toport=3758

success

root# firewall­cmd ­­reload

success

Page 26: Red-Hat 7 Yeni Güvenlik Duvarı : firewalld

root# firewall­cmd ­­zone=test ­­list­all

test

interfaces: eth0

sources: 192.168.100.0/24

services: dhcpv6­client http ipp­client mdns samba­client ssh

ports: 443/tcp 80/udp 22/tcp

masquerade: no

forward­ports: port=22:proto=tcp:toport=4000:toaddr=

Belirtilen zone için tcp protokolü ile 22 portuna gelen tüm istekleri içerideki

192.168.100.50 ip adresinin 3758 portuna yönlendir.

root# firewall­cmd ­­permanent ­­zone=test

­­add­forward­port=port=22:proto=tcp:toport=3758:toadddr=192.168.100.50

success

Belirtilen zone için kaynağı herhangi biri olan 80 portuna gelen tüm istekleri

192.168.100.150 ip adresinin 9999 portuna yönlendir.

root# firewall­cmd ­­permanent ­­zone=test

­­add­forward­port=port=80:proto=tcp:toport=9999:toadddr=192.168.100.50

success

Page 27: Red-Hat 7 Yeni Güvenlik Duvarı : firewalld

Bu sefer UDP protokolü üzerinden çalışan bir port yönlendirme kuralı girelim.

Belirtilen zone için 53 portuna gelen tüm istekleri 3450 portuna yönlendir.

root# firewall­cmd ­­permanent ­­zone=test

­­add­forward­port=port=53:proto=udp:toport=3450

success

Yukarıdaki komutun aynısı sadece toaddr= parametresini ekleyerek içerideki

istediğimiz bir ip adresine port yönlendirme yapabiliriz. Belirtilen zone için 53

portuna gelen tüm istekleri içerideki 192.168.100.100 ip adresinin 3450

portuna yönlendir.

root# firewall­cmd ­­permanent ­­zone=test

­­add­forward­port=port=53:proto=udp:toport=3450:toadddr=192.168.100.100

success

Bir zone alanına eklediğiniz port yönlendirmeyi silmek isterseniz aşağıdaki

komutu kullanabilirsiniz.

root# firewall­cmd ­­permanent ­­zone=test

­­remove­forward­port=port=53:proto=udp:toport=3450:toadddr=192.168.100.100

success

Page 28: Red-Hat 7 Yeni Güvenlik Duvarı : firewalld

Güvenlik Duvarı Kural Yönetimi FirewallD ile kural yazımı örneklerini ­­direct ve ­­rich­rule parametrelerini

kullanarak anlatacağım.

­­direct : Kulllanıcıların Iptables konseptini temel seviyede öğrenmesi için

gereklidir. Kullanılması pek önerilmez.

­­rich­rule : Bilinen Iptables söz dizimi olmadan, en karmaşık firewall

kurallarını yazmak için yüksek seviyede zengin bir yazım seçeneği sunar.

Aşağıdaki örnekte ­­direct parametresi kullanılarak varsayılan zone için bir

kural girelim. Bu örneğimizde kaynağı herhangi bir ip adresinden gelen

kaynağı herhangi bir ip adresine giden ve hedefi 22. (ssh) portuna erişimine

izin ver.

root# firewall­cmd ­­direct ­­add­rule ipv4 filter INPUT 0 ­p tcp ­­dport 22 ­j ACCEPT

success

Bu örneğimizde ise kaynağı herhangi bir ip adresinden gelen kaynağı

herhangi bir ip adresine giden ve hedefi 9000 portuna erişimini yasakla.

root# firewall­cmd ­­direct ­­add­rule ipv4 filter INPUT 0 ­p tcp ­­dport 9000 ­j DROP

success

Page 29: Red-Hat 7 Yeni Güvenlik Duvarı : firewalld

Eklemiş olduğumuz direkt kullarını görüntülemek istersek aşağıdaki

kullanabiliriz.

root# firewall­cmd ­­zone=test ­­direct ­­get­all­rules

ipv4 filter INPUT 0 ­p tcp ­­dport 22 ­j ACCEPT

ipv4 filter INPUT 0 ­p tcp ­­dport 9000 ­j DROP

Eğer eklemiş olduğumuz direkt kuralını silmek istersek aşağıdaki komutu

kullanabiliriz.

root# firewall­cmd ­­direct ­­remove­rule ipv4 filter INPUT 0 ­p tcp ­­dport 22 ­j ACCEPT

success

Sıra geldi zengin (­­rich) kural yazımı ile ilgili örnek kurallar yazmaya.

Belirli bir network aralığı için örneğin http (80) servisine izin vermek isterseniz

aşağıdaki komut kullanılabilir.

root# firewall­cmd ­­add­rich­rule 'rule family="ipv4" source address="192.168.0.0/24" service name="http" accept'

success

Page 30: Red-Hat 7 Yeni Güvenlik Duvarı : firewalld

Yukarıdaki komutun aynısı sadece bu kuralı kalıcı olarak ayarlamak istersek

­­permanent parametresini ekleyebiliriz.

root# firewall­cmd ­­permanent ­­add­rich­rule 'rule family="ipv4" source address="192.168.0.0/24" service name="http" accept'

success

Bir network aralığı için https (443) servisine izin verelim. Unutmayınız

­­permanent parametresini ekleyerek kuralın kalıcı olmasını sağlayabilirsiniz.

root# firewall­cmd ­­add­rich­rule 'rule family="ipv4" source address="192.168.0.0/24" service name="https" accept'

success

Aynı şekilde bir network aralığı için vnc­server servisine izin vermek istersek

aşağıdaki komutu kullanabiliriz.

root# firewall­cmd ­­add­rich­rule 'rule family="ipv4" source address="192.168.0.0/24" service name="vnc­server" accept'

success

Page 31: Red-Hat 7 Yeni Güvenlik Duvarı : firewalld

Örneğin, test adlı bir zone için kural eklemek istersek aşağıdaki gibi bir komut

kullanabiliriz. Bu örneğimizde test adlı zone içerisindeki network aralığına ssh

(22) servisine izin verilmiş. Unutmayınız ­­permanent parametresini ekleyerek

kuralın kalıcı olmasını sağladık.

root# firewall­cmd ­­permanent ­­zone=test ­­add­rich­rule 'rule family="ipv4" source address="192.168.0.0/24" service name="ssh" accept'

success

Bir ip adresi için ssh (22) servisini kullanmasını engellemek istersek aşağıdaki

gibi bir komut kullanabiliriz. Bu kuralı özel bir zone için eklemek istersek

­­zone=zone_ismi parametresini kullanabiliriz.

root# firewall­cmd ­­permanent ­­zone=test ­­add­rich­rule 'rule family="ipv4" source address="192.168.100.50/24" service name="ssh" drop'

success

veya aşağıdaki gibi komut kullanarak bu ip adresinin ssh (22) servisini

kullanmasını engelle aynı zamanda geri ona hata mesajı döndür diyebiliriz. :)

root# firewall­cmd ­­permanent ­­zone=test ­­add­rich­rule 'rule family="ipv4" source address="192.168.100.50/24" service name="ssh" reject'

success

Page 32: Red-Hat 7 Yeni Güvenlik Duvarı : firewalld

Yukarıdaki kurallarda hep 22 vb.. port numaraları yerine ssh gibi kelimeler

kullanılmış. Siz bunu isterseniz ssh veya karşılığı olan 22 port numarasını

yazın iki seçenek aynı anlamlara geliyor. Hangisi kolayınıza geliyorsa onu

kullanabilirsiniz.

root# firewall­cmd ­­permanent ­­zone=test ­­add­rich­rule 'rule family="ipv4" source address="192.168.100.50/24" service name="22" reject'

success

Varsayılan zone için eklemiş olduğumuz kuralları listelemek istersek aşağıdaki

komutu kullanabiliriz.

root# firewall­cmd ­­list­all

public (default, active)

interfaces: eno16777736

sources:

services: dhcpv6­client ssh

ports: 443/tcp

masquerade: yes

forward­ports:

icmp­blocks:

rich rules:

rule family="ipv4" source address="192.168.0.0/24" service

name="http" accept

rule family="ipv4" source address="192.168.0.0/24" service

name="ssh" accept'

Page 33: Red-Hat 7 Yeni Güvenlik Duvarı : firewalld

Özel bir zone için eklediğimiz kuralları listelemek için aşağıdaki komutu

kullanabiliriz.

root# firewall­cmd ­­zone=test ­­list­all

test (active)

interfaces: eno33554984

sources: 192.168.0.0/24

services: dhcpv6­client ipp­client ssh

ports: 22/tcp

masquerade: yes

forward­ports: port=22:proto=tcp:toport=2222:toaddr=192.168.100.50

icmp­blocks:

rich rules:

rule family="ipv4" source address="192.168.100.253/24" service

name="21" accept

rule family="ipv4" source address="192.168.100.50/24" service

name="ssh" reject

rule family="ipv4" source address="192.168.0.0/24" service

name="http" accept

rule family="ipv4" source address="192.168.0.0/24" service

name="ssh" accept

rule family="ipv4" port port="22" protocol="tcp" accept

rule family="ipv4" source address="192.168.100.50/24" service

name="ssh" drop

Page 34: Red-Hat 7 Yeni Güvenlik Duvarı : firewalld

Peki eklediğimiz bir kuralı nasıl silebiliriz. Aşağıdaki komutu kullanarak

varsayılan zone için belirttiğimiz kuralı silebiliriz.

root# firewall­cmd ­­permanent ­­remove­rich­rule='rule family="ipv4" source

address="192.168.0.0/24" service name="http" accept'

success

root# firewall­cmd list­all

public (default, active)

interfaces: eno16777736

sources: 192.168.0.0/24

services: dhcpv6­client ssh

ports: 443/tcp

masquerade: yes

forward­ports:

icmp­blocks:

rich rules:

rule family="ipv4" source address="192.168.0.0/24" service

name="ssh" accept'

aynı zamanda özel bir zone için bir kural silmek istersek aşağıdaki komutu

kullanabiliriz. Kalıcı olarak silmek isterseniz ­­permanent parametresini

ekleyebilirsiniz.

root# firewall­cmd ­­permanent ­­zone=test ­­remove­rich­rule='rule

family="ipv4" source address="192.168.0.0/24" service name="ssh" accept'

success

Page 35: Red-Hat 7 Yeni Güvenlik Duvarı : firewalld

Grafik Arabirim (GUI) ile Güvenlik Duvarı

Konfigurasyonu

Firewalld güvenlik duvarı komut satırından yönetildiği gibi aynı zamanda grafik

arayüz ile yönetilebilmektedir. Bu araç kullanıcı dostu olup çok kolay bir

şekilde firewalld güvenlik duvarını yönetebilmenize olanak sağlar. Bu grafik

arayüzü programını çalıştırabilmeniz için centos 7 işletim sisteminizde Masa

Üstü ortamının ( Desktop ) olması gerekiyor. Grafik arayüz kurulumunu

yazının ilerleyen konularında değineceğim.

Varsayılan olarak Centos 7 ve üzeri sistemlerde artık kurulu gelecektir fakat

alt sürümlerde olmayabilir. Bu durumda aşağıdaki komutu kullanarak grafik

yönetim aracını indirebilirsiniz.

root# yum update && yum upgrade ­y

root# yum install firewall­config ­y

Kurulum bittikten sonra aşağıdaki komut yardımıyla firewalld grafik arayüz

programını açabilir ve firewalld güvenlik duvarını yönetebilirsiniz.

root# firewall­config

Page 36: Red-Hat 7 Yeni Güvenlik Duvarı : firewalld

Örnek Uygulamalar Firewall yönetiyorsanız sık yapmanız gereken işlemler arasında, port

filtrelemek, port yönlendirmek, ip adresi yada ip gruplarına çeşitli kurallar

tanımlamaktır. Aşağıda bunları grafik arabirim üzerinden yapmanızı

sağlayacak pratik uygulamalar ele aldım.

NOT: Yazının giriş kısmından sonraki bölümlerde komut satırından bu

işlemlerin nasıl yapılacağını açıkladım.

Grafik Arayüz Programı ile Port Engellemek Örneğin, İnternet ağından (yani public zone) 22. porta gelen trafiği engellemek

istiyorum. Bunun için ilk önce (firewall­config) program açılır ve kural

oluşturmak istediğimiz zone seçilir. Zone seçildikten sonra Rich Rules

sekmesine girip Add butonuna tıklayarak bir tane firewall kuralı oluşturuyoruz.

Page 37: Red-Hat 7 Yeni Güvenlik Duvarı : firewalld

ardından yapacağınız işleme göre seçenekleri belirlemeniz gerekir. Benim

örneğimden internetteki herhangi bir ip adresinden, sahip olduğum herhangi

bir ip adresin port tcp 22. porta gelen trafiği engellemek yer alıyor. Bu

doğrultuda aşağıdaki ayarlar yapıldıktan sonra OK butonu ile değişiklikleri

kaydediyoruz.

NOT : Configuration = Permanent seçilerek yapılacak ayarların kalıcı olarak

ayarlanmasını sağlayabilirsiniz. Aksi takdirde sistem yeniden başlatıldıktan

sonra yapılan ayarlar silinecektir.

NOT : Ayarların aktif olması için Options > Reload Firewalld butonuna

tıklayabilirsiniz veya firewall­cmd ­­reload komutunu kullanabilirsiniz.

Page 38: Red-Hat 7 Yeni Güvenlik Duvarı : firewalld

Grafik Arayüz Programı ile Port Yönlendirmek Bu örnekte ise grafik arayüz programı ile port yönlendirme nasıl yapılır bunu

inceleyelim. İlk önce Port Forwarding sekmesine girilir ardından Add

butonuna tıklayarak yeni bir kural oluşturulur. Aşağıdaki kural ile internetteki

herhangi bir ip adresinden, sahip olduğum herhangi bir ip adresinin tcp 22

portuna gelen istekleri iç ağımdaki 192.168.100.50 ip adresinin 2222 portuna

yönlendirmiş oluyoruz.

NOT : Ayarların aktif olması için Options > Reload Firewalld butonuna

tıklayabilirsiniz veya firewall­cmd ­­reload komutunu kullanabilirsiniz.

Page 39: Red-Hat 7 Yeni Güvenlik Duvarı : firewalld

Grafik Arayüz Programı ile Varsayılan Zone

Belirtmek Varsayılan olarak kullanılan herhangi bir zone ‘u başka bir zone ile

değiştirmek isterseniz aşağıdaki adımları takip edebilirsiniz. Bunu hem komut

satırından hemde aşağıdaki gibi grafik program ile yapabilirsiniz.

Grafik arayüzde Options > Change Default Zone > bölümüne girdikten sonra

aşağıdaki gibi istediğiniz bir zone seçerek onu varsayılan zone olarak

kullanabilirsiniz.

NOT : Aynı zamanda /etc/firewalld/firewalld.conf dosyasını açıp varsayılan

zone alanını değiştirebilirsiniz.

Page 40: Red-Hat 7 Yeni Güvenlik Duvarı : firewalld

Ağ Arabirimlere Bağlı Zone ‘ları

Görüntülemek/Değiştirmek Herhangi bir zone alanına eklediğiniz ağ arabirimini görüntülemek veya

değiştirmek isterseniz Options > Change Zone of Connections > bölümüne

girip gerekli ayarları yapabilirsiniz.

Page 41: Red-Hat 7 Yeni Güvenlik Duvarı : firewalld

Güncel Hayattan Pratik Örnekler

1. IPv4 ve IPv6 bağlantırını ftp servisi için her 1 dakika için audit ile loglama

yap.

root# firewall­cmd ­­add­rich­rule='rule service name="ftp" audit limit

value="1/m" accept'

2. IPv4 bağlantıları kaynağı 192.168.0.0/24 adresinden gelen tftp servisi için

syslog ile her 1 dakikada loglama yap.

root# firewall­cmd ­­add­rich­rule='rule family="ipv4" source

address="192.168.0.0/24" service name="tftp" log prefix="tftp" level="info"

limit value="1/m" accept'

3. Kaynağı 192.168.2.2 ip adresinin internete çıkarken geçen tüm

bağlantılarına izin ver.

root# firewall­cmd ­­add­rich­rule='rule family="ipv4" source

address="192.168.2.2" accept'

3. Kaynağı 192.168.2.3 ip adresinin tüm bağlantılarını engelle aynı zamanda

geriye hata mesajı döndür.

root# firewall­cmd ­­add­rich­rule='rule family="ipv4" source

address="192.168.2.3" reject'

Page 42: Red-Hat 7 Yeni Güvenlik Duvarı : firewalld

5. Kaynağı 192.168.2.4 ip adresinin tüm bağlantılarını engelle.

root# firewall­cmd ­­add­rich­rule='rule family="ipv4" source

address="192.168.2.4" drop'

FirewallD Log Mekanizması Loglar sorun çözmede faydalandığımız ilk kaynaklardan biridir. Bir şeylerin

ters gittiğini gördüğünüzde, yada anormallikleri gözlemlemek istediğinizde

loglar hayat kurtarıcı olur.

FirewallD varsayılan olarak firewall kuralları, yönlendirme kuralları için log

tutmamaktadır. Fakat kendi kurallarınız için özel bir log dosyası

oluşturabiliyorsunuz. Bu konuya yazının ilerleyen kısımlarında değineceğim.

FirewallD hata ayıklama çıkışı varsayılan olarak /var/log/firewalld dosyasına

yazılır. Aşağıdaki komutu kullanarak /var/log/firewalld log dosyasının son

satırlarını görebilirsiniz.

root# tail ­f /var/log/firewalld

2015­08­24 12:09:45 DEBUG2: firewall.core.ipXtables.ip6tables: /sbin/ip6tables ­t

mangle ­P FORWARD ACCEPT

2015­08­24 12:09:45 DEBUG1: PanicModeDisabled()

2015­08­24 12:09:49 DEBUG1: zone.getZones()

2015­08­24 12:11:19 DEBUG1: config.getServiceByName('bacula')

2015­08­24 12:11:2 DEBUG1: config.getZoneByName('public')

Page 43: Red-Hat 7 Yeni Güvenlik Duvarı : firewalld

FirewallD Log Seçenekleri

FirewallD iki farklı log mekanizması bulunmaktadır. Bunlardan birisi auditd

diğeri ise syslog mekanizmasıdır. Varsayılan olarak syslog mekanizması

kullanılmaktadır. Fakat auditd ile loglama yapmak isterseniz bunu kuralda

belirtmeniz gerekir.

NOT : Firewalld loglama “s” saniye, “m” dakika, “h” saat, “d” gün olmak

üzere zaman zarfları bulunmaktadır. Bu zaman zarfları bir log dosyasının ne

zamanda bir loglanacağını belirtir.

FirewallD Log Kural Sözdizimi

Firewalld log kural yazımının söz dizimi aşağıdaki gibidir.

log [prefix="<prefix text>"] [level="<log level>"] [limit value="<rate/duration>"]

Page 44: Red-Hat 7 Yeni Güvenlik Duvarı : firewalld

Syslog

Aşağıdaki komutu kullanarak oluşturulacak firewall kuralı için o kurala ait özel

bir log dosyası oluşturulabilir. Örneğin, aşağıdaki kuralda tftp bağlantısı için

izin kuralı tanımlanmış ve her 1 dakika için loglama yap ve logu tftp­log ismi

ile oluştur denmiş.

root# firewall­cmd ­­add­rich­rule='rule family="ipv4" source address="192.168.0.0/24"

service name="tftp" log prefix="tftp" level="info" limit value="1/m" accept'

Aşağıdaki kuralda ise 192.168.100.50 ip adresinin dışarıya 22 portunun

erişimi engellenmiş ve her 1 dakika için loglama yap ve logu ssh­log ismi ile

oluştur denmiş.

root# firewall­cmd ­­add­rich­rule='rule family="ipv4" source address="192.168.100.50"

service name="ssh" log prefix="ssh­log" level="info" limit value="1/m" drop’

Audit Aşağıdaki kuralda ise ftp servisine izin verilmiş ve her 1 dakika için auditd ile

loglama yap denmiş.

root# firewall­cmd ­­add­rich­rule='rule service name="ftp" audit limit value="1/m"

accept'

Page 45: Red-Hat 7 Yeni Güvenlik Duvarı : firewalld

Aşağıdaki kuralda kaynağı 192.168.2.4 ip adresinin 22 (ssh) port erişimini

yasakla ve her 1 dakika için auditd ile loglama yap ve logu ssh­log ismi ile

oluştur denmiş.

root# firewall­cmd ­­add­rich­rule='rule family="ipv4" source address="192.168.2.4"

service name="ssh" audit prefix="ssh­log" level="info" limit value="1/m" drop’

FirewallD Hata Numaraları Bazen log dosyalarını incelerken, karşımıza çıkan hataları kırmızı renkle çizili

olarak görürüz. Bunun gibi bazen hataların yanında kodlar olur veya hatalar

olmadan sadece kodları vardır. Örneğin ( 403 Forbidden vb. ) hata kodları

mevcuttur. Firewalld güvenlik duvarına ait hata mesajları ve karşısında hata

numaraları aşağıdaki gibidir.

Başlık Numara ­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­ ­­­­­­­­­­­­­

ALREADY_ENABLED | 11 |

­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­ ­­­­­­­­­­­­­

NOT_ENABLED | 12 |

­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­ ­­­­­­­­­­­­­

COMMAND_FAILED | 13 |

­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­ ­­­­­­­­­­­­­

NO_IPV6_NAT | 14 |

­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­ ­­­­­­­­­­­­­

PANIC_MODE | 15 |

NOT : Daha fazlası için man sayfasına bakınız.

Page 46: Red-Hat 7 Yeni Güvenlik Duvarı : firewalld

Centos 7 Desktop Kurulumu

Centos 7 işletim sistemine desktop kurmak isterseniz aşağıdaki adımları takip

edebilirsiniz. Firewalld güvenlik duvarını grafik arayüz programı ile yönetmek

isterseniz desktop kurmalısınız aksi takdirde program açılmayacaktır.

İlk önce aşağıdaki komutu kullanarak sistem depolarını güncelleyelim.

root# yum ­y update

Daha sonra aşağıdaki komutu kullanarak desktop için gerekli olan paketleri

kuralım. Aşağıdaki komutu duğrudan copy/paste yapıp kullanabilirsiniz.

root# yum groupinstall “GNOME Desktop” “Graphical Administration Tools”

Sıra geldi otomatik olarak desktop ekranın açılmasını sağlamak. Aşağıdaki

komutu kullanarak desktop ekranının otomatik olarak açılmasını

sağlayabilirsiniz. Aksi takdirde aynı komut satırını göreceksiniz.

root# ln ­sf /lib/systemd/system/runlevel5.target /etc/systemd/system/default.target

Sistem yeniden başlatıldıktan sonra aşağıdaki gibi Gnome Desktop masaüstü

ekranı ile karşılaşacaksınız.

Page 47: Red-Hat 7 Yeni Güvenlik Duvarı : firewalld

Firewalld Parametreleri

­­permament : Bu parametre bir şeyi kalıcı olarak ayarlamak için kullanılır.

­­reload : Bu parametre değiştirilen ayarların hemen aktif olmasını sağlar.

/usr/lib/firewalld/services : Bu dizin altında servisler bulunuyor.

/usr/lib/firewalld/zones : Bu dizin içerisine bölgeler bulunuyor.

/usr/lib/firewalld/icmptypes : Bu dizin içerisinde icmp türleri yer alıyor.

/etc/firewalld/services : Bu dizin içerisine yeni servisler eklenebiliyor.

firewall­cmd : Bu araç firewalld güvenlik duvarı komut istemcisi olarak

kullanılıyor.

/etc/firewalld/firewalld.conf : Bu dosya bölgelerin bilgilerini barındırır ve

varsayılan hangi zone kullanılıyor onu gösterir.

firewall­cmd ­­get­zones : Zone’ları listeler ve hakkında bilgi verir.

firewall­cmd ­­get­services : Önceden tanımlanmış servisleri listeler.

firewall­cmd ­­get­icmptype : Önceden tanımlanmış icmp türlerini listeler.

firewall­cmd ­­get­default­zone : Varsayılan olarak kullanılan zone’u

gösterir.

firewall­cmd ­­get­default­zone=test : Test adlı zone’u varsayılan zone

olarak ayarlar.

firewall­cmd ­­get­active­zones : Aktif kullanılan bölgeleri listeler.

firewall­cmd ­­get­zone­of­interface=eth0 : Hangi bölgenin eth0 ağ arabirimi

ile ilişkili olduğunu gösterir.

firewall­cmd ­­list­all­zones : Tüm bölgeleri listeler ve onlar hakkında birçok

bilgi verir.

Page 48: Red-Hat 7 Yeni Güvenlik Duvarı : firewalld

FirewallD Konfigurasyon Yedekleme İşlemleri

Firewall’larımızın kuralları hayati öneme sahiptir, çeşitli felaket senaryolarında

geri dönmek, farklılıkları gözlemlemek için yedek almamız ciddi önem

taşımaktadır.

Yedek Alma Aşağıdaki komut ile genel geçerli olan FirewallD kurallarını yedekleyebilirsiniz.

Daha sonra cat komutu ile içerisindeki kuralları inceleyebilirsiniz.

root# iptables­save > firewalld_rules_ipv4

root# iptables­save > firewalld_rules_ipv6

Düzenli Full Konfigurasyon Yedekleme Bir shell script oluşturup daha sonra o script dosyasına her gün belirli saatler

ile yedekleme yapmasını söylebiliriz. Aşağıdaki örnek script dosyasının

içerisinde tar ile /etc/firewalld, /var/log/firewalld, dizinlerini bugünün tarihi ile

/home dizini altına yedekle demiş oluyoruz. Bunu yapmak için ilk önce içi boş

bir dosya oluşturulur daha sonra dosyanın içerisine nano, ee, vim, vi gibi

araçlar kullanılarak girilir ve dosyanın içerisine aşağıdaki kod eklenir arından

CTRL+O kombinasyonuna basarak kaydedilir ve CTRL+X kombinasyonuna

basarak çıkılır.

root# touch script_dosyam

Page 49: Red-Hat 7 Yeni Güvenlik Duvarı : firewalld

root# nano script_dosyam

#!/bin/bash

NOW=$(date +"%m­%d­%Y")

FILE="firewalld_backup.$NOW.tar.gz"

echo "Biraz bekleyin dosyalar sıkıştırılıyor… :)"

# rest of script

tar cvf /home/firewalld_backup.$NOW.tar.gz /etc/firewalld /var/log/firewalld

root# bash script_dosyam

Biraz bekleyin dosyalar sıkıştırılıyor… :)

tar: Removing leading `/' from member names

/etc/firewalld/

/etc/firewalld/firewalld.conf

/etc/firewalld/icmptypes/

/etc/firewalld/lockdown­whitelist.xml

/etc/firewalld/services/

/etc/firewalld/zones/

/etc/firewalld/zones/public.xml

/etc/firewalld/zones/test.xml.old

/etc/firewalld/zones/public.xml.old

/etc/firewalld/zones/work.xml

/etc/firewalld/zones/work.xml.old

/etc/firewalld/direct.xml

/etc/firewalld/direct.xml.old

/var/log/firewalld

Page 50: Red-Hat 7 Yeni Güvenlik Duvarı : firewalld

Crontab ‘a Kural Girdisi Eklemek

Yapmış olduğumuz bu bash script dosyasını her zaman gidip elle çalıştırmak

istemeyiz. Bunun için crontab’a görev tanımlayıp bizim yapacağımız işi ona

devredebiliriz. Bunu yapmak için ilk önce crontab içerisine girilir ardından

aşağıdaki gibi crontab girdisi eklenir.

NOT : Crontab girdisini dakika, saat, ayın günleri, ay, hafta günlerini

istediğiniz gibi ayarlayabilirsiniz.

Aşağıdaki örnekte her gün her hafta her ay öğlen saat 12 ‘de /bin/bash

/root/script_dosyam adlı komutu çalıştır. Daha sonra dosya kaydedilip çıkılır.

root# cronteb ­e

* 12 * * * /bin/bash /root/script_dosyam

Yedekten Geri Dönme FirewallD kurallarını yedeklediğimiz dosyanın adını aşağıdaki gibi belirterek

yedekten geri dönebiliriz.

root# iptables­restore < firewalld_rules_ipv4

root# iptables­restore < firewalld_rules_ipv6

NOT : Güncel sürümlerin slideshare.net/ibrahimucar39545464 adresinden

aynı zamanda lifeoverlinux.com sitesinden ulaşabilirsiniz.