LINUX LAB

CentOS FIREWALL: iptables

firewall-linux

Dikkat: Bu yazıda geçen komutlar hem Linux tabanlı Centos hem de Linux tabanlı  Red Hat (RHEL) işletim sisteminde geçerlidir.

iptables Nedir?

Linux kernel’inde paket filtreleme anlamına gelen “netfilter” vardır. Bu “netfilter”in komut satırı ara yüzü “iptables”dir.

iptables Ne İşe Yarar?

“iptables” ile paket filtreleme kuralları yönetilir.

iptables Nelerden Oluşur?

iptables yapısında tablolar vardır. Tablo içerisinde de zincirler vardır.

Tablolar:

  1. Filter tablosu :
  • Paket filtreleme yapar
  • INPUT, FORWARD ve OUTPUT zincirleri
  1. Nat tablosu :
  • Kaynak/hedef ip ve port bilgilerinin değiştirir (NAT’lar)
  • PREROUTING, POSTROUTING ve OUTPUT zincirleri
  1. Mangle tablosu :
  • tos, ttl, mark değerlerinin değiştirir
  • PREROUTING, INPUT, FORWARD, OUTPUT ve POSTROUTING zincirleri
  1. Raw tablosu :
  • Paket izinin tutulması veya tutulmaması için kullanılır
  • PREROUTING ve OUTPUT zincirleri

Zincirler:

  • INPUT : Hedefi sizin bilgisayarınız olan paketleri inceler. Eğer paket geldiği interface’de kalacaksa kural filter tablosunun INPUT zincirine yazılmalıdır.

Örneğin makinanız üzerindeki web sunucuda bulunan web sayfalarını görüntülemek için diğer bilgisayarlardan gönderilen talepler…

linux centos red hat rhel iptables input
“input Zinciri”
  • OUTPUT : Sizin bilgisayarınız tarafından üretilen paketleri Örneğin internette bir siteye bağlanmak için gönderdiğiniz paketler…
linux centos red hat rhel iptables output
“output Zinciri”
  • FORWARD : Kaynağı ve hedefi farklı bir bilgisayar olan, sizin bilgisayarınız tarafından üretilmemiş, ancak hedefe ulaşması için sizin bilgisayarınızın üzerinden geçmesi gereken paketleri inceler.

Eğer paket bir interface’ye gelip diğer bir interface’den geçerek yoluna devam edip gidecekse kural filter tablosunun FORWARD zincirine yazılmalıdır.

Örneğin makinanızı lokal ağınızda bulunan diğer kullanıcı bilgisayarlarını internete çıkarmak için Gateway/Firewall olarak yapılandırdığınızda, lokal ağınızda bulunan diğer bilgisayarların internetteki herhangi bir web sayfasına bağlanmak için sizin üzerinizden gönderdiği paketler…

linux centos red hat rhel iptables forward
“forward Zinciri”
  • POSTROUTING : Bir paketin kaynak ip adresi veya port numarası değiştirilecekse kural NAT tablosunun POSTROUTING zincirine yazılır. Yani yönlendirmeden hemen sonra kaynak verilerinde değişiklik yapılır.
  • PREROUTING : Hedef adresi veya port numarası değiştirilecekse kural NAT tablosunun PREROUTING zincirine yazılır. Yani yönlendirme işleminden hemen önce hedef verileri değiştirilip sonra paket route edilir.

Kuralların İşleme Mantığı Nedir?

Kurallar sırasıyla işlenmektedir. Bundan dolayı kuralların yazılı sırasına dikkat edilmelidir. Yan paket zincir içerisinden yukardan aşağı doğru kontrol edildiğinde uyduğu ilke kurala göre zincirden çıkar. Aşağıdaki diğer kurallara bakılmaz.

Grafiksel Ekranda Firewall

Bunun için terminal ekranda “system-config-firewall” komutu kullanılabilir. “Root” şifresi ile ayarlara devam edilir ve “ctrl+c” ile de firewall grafiksel ara yüzü kapatılabilir.

linux centos red hat rhel grafiksel ekran GUI ip tables
“Grafiksel Ekranda Firewall”

Veya GUI uyani grafiksel ekranda system > Administration > Firewall şeklinde açılabilir.

linux centos red hat rhel grafiksel ekran GUI ip tables
“Grafiksel Ekranda Firewall”

Trusted Services:

Grafiksel arayüzde “Trusted Services” kısmında yaygın kullanılan portlar ve servisler görünmektedir.

linux centos red hat rhel firewall iptables trusted services
“Trusted Services”

Other Ports:

Eğer izin vereceğimiz servis veya port bu listede yok ise “Other Ports” kısmında port ekleyebiliriz.

linux centos red hat rhel firewall iptables other ports
“Other Ports”

Trusted Interfaces:

Tursted Interface kısmında istediğiniz interface için firewall kapatabilir veya açabilirsiniz. Örneğin eth0 interface’i için firewall kapalı olsun diyebilirsiniz. Bir interface’den gelen tüm paketleri kabul etmek için;

  • iptables -A INPUT -i eth0 -j ACCEPT

komutu da kullanılabilir. Ayrıca “Trusted Interfaces” kısmında sistemde hiç olmayan veya olduğu halde firewall tarafında listelenmeyen interface’ler de “Add” ile eklenebilir.

linux centos red hat rhel firewall iptables trusted interfaces
“Trusted Interfaces”

Masguerading (NAT):

NAT işlemi için Masguerading kısmı kullanılmaktadır. Bu kısımdan seçilen interface NAT yapılacak paketlerin çıkacağı interface’dir. Başka interface’lerden gelen paketler bu seçilen interface’den dışarıya natlanarak gönderilir.

NAT uygulanırken paketler interface değiştirir yani bir interface’den diğerine geçerler. Iptables GUI kullanmıyorsanız yani terminal ekran kullanılıyorsa; interface’ler arası paket forwarding işlemi yapılmaz. Bundan dolayı ilk önce /etc/sysctl.conf dosyası içerisinde bulunan;

  • net.ipv4.ip_forward = 0

satırını aşağıdaki gibi değiştirmek gerekir.

  • net.ipv4.ip_forward = 1

Bu değişikliğin etkili olabilmesi için de;

  • sysctl -p

komutu kullanılır. Iptables GUI kullanıyorsanız yani grafiksel ekranda kullanıyorsanız paket forwarding işlemi NAT yaptığınızda otomatik aktifleştirilir. Burada kullandığımız Masquerade işlemi paketleri iç ve dış networkümüz arasında taşırken routing işlemi yapmaktadır. Ancak biz kernel routing tablosuna herhangi yeni bir değer girmediğimiz için burada yapılan routing işlemi için gerekli network bilgisini interface yapılandırmalarından elde etmektedir.

linux centos red hat rhel firewall iptables masquerading
“Masquerading”

Port Forwarding:

Bir porta gelen trafiğin yönlendirilmesi için kullanılır. Hedef için aynı IP üzerinde bulunan bir port veya başka bir IP adresi üzerinde bulunan herhangi bir port seçilebilir. Port Forwarding, NAT işleminin bir parçasıdır.

Komut satırında aşağıdaki şekilde port forwarding yapılabilir.

  • iptables -A PREROUTING -i eth1 -p tcp –dport 22 \ -j DNAT –to-destination 192.168.122.150:20022
linux centos red hat rhel firewall iptables port forwarding
“Port Forwarding”

ICMP Filter:

ICMP protokolü network testlerinde kullanılmaktadır. Default’ta yani varsayılan olarak sunucu ICMP paketlerine açıktır. Bundan dolayı bilgi çalınmasını engellemek için ICMP paketlerine karşı kısıtlama yapılabilir. Bunun için aşağıdaki seçeneklerden istenilenler

linux centos red hat rhel firewall iptables icmp filter
“ICMP Filter”

Örnek olarak sunucumuza doğru ping başlatalım. Sunucumuzun IP adresi 192.168.93.143’dür.

  • Windows makinadan >> linux sunucumuzaping 192.168.93.143 -t” komutu ile sonsuz ping başlatalım.
linux centos red hat rhel firewall iptables icmp filter örnek
“ICMP Filter Örnek”

Ping devam ederken “Echo Request (ping)” seçeneğini işaretleyip “Apply” dediğimiz anda ping cevap vermeyi kesmektedir. Tekrar tiki kaldırdığımızda ping devam etmektedir.

linux centos red hat rhel firewall iptables icmp filter örnek
“ICMP Filter Örnek”

Custom Rules:

Bu kısma kendi yazdığımız kuralları ekleyebiliriz. Örneğin “/home/nizam/Desktop” yoluna “kural” isimli bir dosya oluşturalım ve aşağıdaki satırları içerisine yazalım.

-I OUTPUT -p udp -m udp –dport 53 -j LOG

-I OUTPUT -p udp -m udp –dport 55 -j LOG

-I INPUT -p udp -m udp –dport 53 -j LOG

linux centos red hat rhel firewall iptables custom rules dosya olusturma
“Custom Rules Dosya Oluşturma”

 

Şimdi bu dosyayı “Custom Rules>Add” şeklinde seçip ekleyelim. Ardından “Apply” diyerek uygulayalım.

linux centos red hat rhel firewall iptables custom rules
“Custom Rules”

Dosyada yapılan her kural değişikliğinden sonra firewall’a uygulanabilmesi için GUI üzerinde Disable & Enable butonlarını kullanmanız gerekecek.

 

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir