Linux Iptables Nedir?

Konu

#1
Iptables Rehberi – Linux Güvenlik Duvarı ile Ubuntu VPS Güvenliği
Giriş
İstenmeyen kişilerin sisteme erişmesini öncelemek için kullanıcı tarafından belirlenen kurallarla sunucuya gelen ve giden trafiğin izlenmesi ve filtrelenmesinde Iptables Linux güvenlik duvarı kullanılır. Iptables kullanarak yalnızca seçili trafiği sunucunuza izin verecek kurallar belirleyebilirsiniz. Bu Iptables rehberinde web uygulamanızı nası Iptables ile güvene alabileceğinizi öğreneceksiniz.
Not: RHEL / CentOS işletim sistemlerinde firewallD adı verilen bir sistem zaten kuruludur. Eğer Iptables kullanmak istiyorsanız, öncelikle bunu devre dışı bırakmalısınız.
Nelere ihtiyacınız olacak?

Iptables rehberine başlamadan önce aşağıdakilere ihtiyacınız vardır:
Ubuntu 16.04 çalıştıran VPS

Iptables Temelleri


İnternet üzerinde tüm veri paketler halinde gönderilir. Linux kernel’i hem gelen hem de giden trafiğin paketlerini paket filtresi tablosu kullanarak filtrelemenize olanak veren bir arayüze sahiptir. Iptables bu tabloları kurmak, yönetmek ve incelemek için bir komut satırı uygulaması ve Linux güvenlik duvarıdır. Birden fazla tablo belirlenebilir. Her tablo birden fazla zincir içerebilir. Zincir kuralların bütünüdür. Her kural bir paketin paket kuralı ile uyduğunda o paketle ne yapılması gerektiğini içerir. Bir paket eşleştiğinde, ona bir TARGET (HEDEF) verilir. Target eşlenmesi için başka bir zincir veya aşağıdaki bazı özel değerler olabilir.
ACCEPT (KABUL ET): Paketin geçmesine izin verileceği anlamına gelir.
DROP (REDDET): Paketin geçmesine izin verilmeyeceği anlamına gelir.
RETURN (GERİ ÇEVİR): Şimdiki zincirin pas geçilmesi ve çağrıldığı zincirde bir sonraki kurala geçilmesi gerektiği anlamına gelir.
Bu rehberde varsayılan tablolardan biri olan filter ile çalışacağız. Filtreler tablosu üç zincire (kural gurubuna) sahiptir.
INPUT – Bu zincir sunucuya gelen paketleri kontrol etmek için kullanılır. Bağlantıları port, protokol ve kaynak IP adresi bazında engelleyebilir veya izin verebilirsiniz.
FORWARD – Bu zincir sunucuya gelen ama başka bir yere yönlendirilecek paketleri filtrelemek için kullanılır.
OUTPUT – Bu zincir sunucudan giden paketleri filtrelemek için kullanılır.

ds-iptables-150
Adım 1 – Iptables Linux Güvenlik Duvarı Kurulumuz
1. Iptables kurulumu
Iptables neredeyse tüm Linux dağıtımlarında varsayılan olarak kurulu gelir. Ancak eğer Debian veya Ubuntu sisteminizde kurulu değilse, aşağıdaki satırları çalıştırarak kurabilirsiniz.
sudo apt-get update
sudo apt-get install iptables

2. Mevcut Iptables durumunu kontrol etmek
Bu komut ile mevcut Iptables yapılandırmanızın drumunu kontrol edebilirsiniz. Burada -L seçeneği tüm kuralları göstermek için ve -v seçeneği ise daha geniş bir liste almak için kullanılıyor. Lütfen bu seçeneklerin büyük/küçük harf duyarlı olduğunu not ediniz.
iptables -L -v


Örnek çıktı:

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)

pkts bytes target    prot opt in    out    source            destination       

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target    prot opt in    out    source            destination       

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target    prot opt in    out    source            destination

Bu yukarıdaki komutun çıktısıdır. Burada, tüm zincirler (chain) varsayılan ACCEPT politikasına ayarlıdır. Şu anda zincirlerde herhangi bir kural bulunmamaktadır.
Bu rehberi daha öğretici kılmak için INPUT zincirini gelen trafiği filtrelemek için düzenleyeceğiz.


Adım 2 – Zincir Kuralları Belirlemek

Kural belirlemek onu zincire (listeye) eklemek demektir. Olağan seçeneklerle düzenlenmiş Iptables komutu şu şekildedir:

iptables -A -i <interface> -p <protocol (tcp/udp) > -s <source> --dport <port no.> -j <target>

Burada -A sona eklemeyi(append) temsil ediyor. Zincir hangi zincire kurallarımızı eklemek istediğimizi gösteriyor. Interface ise hangi ağ arayüzündeki trafiği filtrelemek istediğimizi belirtiyor. Protocol de paketleri ağ protokolüne göre filtreleyecek kuralı belirtiyor. Aynı zamanda üzerinde trafiği filtrelemek için port, port numarası da belirtebilirsiniz

1. Localhost üzerinde trafiğe izin vermek


Sunucu üzerindeki uygulamaların ve veritabanlarının aynı şekilde iletişim kurmasına devam etmesini istiyoruz.
iptables -A INPUT -i lo -j ACCEPT
Örnek çıktı:
Chain INPUT (policy ACCEPT 7 packets, 488 bytes)

pkts bytes target    prot opt in    out    source              destination       
0    0 ACCEPT    all  --  lo    any    anywhere            anywhere

Burada -A seçeneği INPUT zincirinin sonuna eklenmek, lo arayüzünde tüm bağlantılara izin vermek için kullanılmıştır. lo loopback interface anlamına gelir. Aynı makinedeki veritabanı veya web uygulaması arasındaki gibi localhost üzerindeki tüm iletişim için kullanılır.

2. HTTP, SSH ve SSL portuna bağlantılara izin vermek
Olağan HTTP (port 80), https (port 443) ve ssh (port 22) bağlantılarının aynen normalde olduğu gibi çalışmaya devam etmesini isteriz. Bu portlara izin vermek için aşağıdaki komutları çalıştırın. Aşağıdaki komutlarda protokolü -p seçeneği ile ve her protokolün ilgili olduğu portu -dport (destination port – hedef port) ile gösterdik.


iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

Şimdi belirlenen port numaralarından gelen tüm TCP protokol bağlantıları kabul edilecek.


3. Kaynağına göre paketleri filtrelemek
Eğer kaynak IP adresine veya adres aralığına göre gelen trafiği kabul etmek veya reddetmek istiyorsanız, bunu -s seçeneği ile belirtebilirsiniz. Örneğin, 192.168.1.3 adresinden gelen paketleri kabul etmek için:

iptables -A INPUT -s 192.168.1.3 -j ACCEPT

Benzer şekilde aynı IP adresinden gelen paketleri reddetmek için:

iptables -A INPUT -s 192.168.1.3 -j DROP

Eğer gelen paketleri reddetmek için IP aralığı belirtmek isterseniz,-m seçeneğini ve IP aralığını -src-range ile belirterek Iprange modülünü kullanabilirsiniz.

iptables -A INPUT -m iprange --src-range 192.168.1.100-192.168.1.200 -j DROP

4. Diğer tüm trafiği reddetmek


Note: Kurallarınızı belirledikten sonra gelen diğer trafiğin tamamını reddetmek (DROP) önemlidir. Aksi durumda diğer tüm açık portlardan izin verilmemiş erişim kurulabilir.

iptables -A INPUT -j DROP

Bu komut yukarıda belirtilen komutlarda belirlenen portlar dışındaki tüm trafiği reddeder.
Şimdi ayarladığınız kendi kurallarınızın tamamını şu komut ile kontrol edebilirsiniz:
iptables -L -v
5. Kuralları silmek


Eğer tüm kuralları silmek ve yeniden temiz bir sayfa açmak isterseniz, bu komutu kullanabilirsiniz:

iptables -F
Bu komut mevcut tüm kuralları siler. Eğer belirli bir kuralı silmek isterseniz bunu -D seçeneği ile yapabilirsiniz. Çncelikle kuralları numaralarıyla görmek için şu komutu girin:
iptables -L --line-numbers
Ardından kuralları numaralarıyla göreceksiniz.

Chain INPUT (policy ACCEPT)

num  target    prot opt source              destination       

1    ACCEPT    all  --  192.168.0.4          anywhere           

2    ACCEPT    tcp  --  anywhere            anywhere            tcp dpt:https

3    ACCEPT    tcp  --  anywhere            anywhere            tcp dpt:http
4    ACCEPT    tcp  --  anywhere            anywhere            tcp dpt:ssh

Adım 3 – Değişiklikleri kalıcı hale getirmek
Oluşturduğumuz Iptables kuralları hafızada saklanır. Bu da her tekrar başlatma (reboot) sonrasında tekrar tanımlamamız anlamına gelir. Reboot sonrasında kuralların kalmasını sağlamak için Ubuntu/Debian sistemlerinde şu komutu kullanabilirsiniz:
/sbin/iptables-save
Veya 
sudo /sbin/iptables-save

Bu komut kuralları sistem yapılandırma dosyasına kaydeder ve her tekrar başlatmadan sonra sistem bu yapılandırma dosyasından Iptables kurallarını tekrar devreye alır. Kurallarda her değişiklik yaptığınızda bu komutu çalıştırmalısınız.

Koruma duvarını sıfırlamak için tüm kuralları silin ve değişiklikleri kaydedin:
sudo iptables -F
sudo /sbin/iptables-save
Veya
/sbin/iptables-save

Sonuç

Bu Iptables rehberinde yalnızca belirli port numaralarından gelen trafiğe izin vermek için Iptables Linux koruma duvarını kullandık. Kurallarımızın tekrar başlatma sonrasında kalıcı olmaları için kaydetmeyi de öğrendik. Bu Linux koruma duvarı istenmeyen paketleri reddedecek ancak dikkat etmelisiniz ki Iptables yalnızca IPv4 trafiğini kontrol edebilir. Eğer VPS planınızda IPv6 ağ yapısı aktifse, bu trafik için ip6tables ile kuralları tanımlamalısınız.
Son Düzenleme: 05-10-2020, 21:21, Düzenleyen: 21 KEJ.
Cevapla
#2
Anlatım için teşekkürler konuda bazı yazım hataları var düzeltmeniz gerek.
Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da

Benzer Konular

24
Yorum
20.506
Okunma
03-11-2020, 05:57
4
Yorum
11.461
Okunma
10-10-2020, 07:31
1
Yorum
19.248
Okunma
27-08-2020, 20:31
0
Yorum
11.720
Okunma
18-05-2020, 05:23
2
Yorum
11.677
Okunma
15-05-2020, 01:56
2
Yorum
11.373
Okunma
03-05-2020, 03:29
Task
Kayıt Ol