Iptables Örnekleri

Iptables kullanımı hakkında güzel örneklerin olduğu bir site

Iptables Örnekleri

Iptables komutunun kullanımda temel kavramlar şunlardır:

INPUT bilgisayarımıza gelen paketler için uygulanacak kuralları içeren zincirdir.
OUTPUT bilgisayarımızdan dışarı giden paketler için uygulanacak kuralları içeren zincirdir.
FORWARD bilgisayarımızdan geçen yönlendirilecek paketler için uygulanacak kuralları içeren zincirdir.
ACCEPT paket kabul edilir.
DROP paket engellenir ve paketi gönderen kişi paketin engellendiğinden haberdar edilmez.
REJECT paketi engeller fakat paketi gönderen kişiye paketin gönderilemediği haber edilir.
Kavramları kısaca öğrendiğimize göre gelelim iptablesda nasıl ayar yapılır. Bunu yapmak kavramları bildikten sonra oldukça kolay olacaktır. Ana komutlar şunlardır:


-A –append : Belirli bir zincirin sonuna bir kural eklemek için;

Code:
iptables -A INPUT ...
iptables -A OUTPUT ...

-D –delete : Zinciri silmek için kullanılan komut; Silme işlemi için ya zincir numarası belirtilir ya da kuralın kendisi.

Code:
iptables -D INPUT 1
iptables -D INPUT --dport 80 -j DROP

-R –replace : Mevcut zinciri değiştirmek için;

Code:
iptables -R INPUT 1 -s 192.168.0.1 -j DROP

-I — insert : Genel zincir içinde belirlenmiş bir alana bir zincir daha eklemek için;

Code:
iptables -I INPUT 1 --dport 80 -j ACCEPT

-L –list : Kuralları listeler;

Code:
iptables -L # zincirdeki tüm kuralları listeler
iptables -L INPUT # Sadece INPUT kurallarını listeler

-F –flush : Zincirdeki tüm kuralları siler;

Code:
iptables -F INPUT # INPUT zincirindeki tüm kuralları siler
iptables -F # Tüm kuralları siler

-N –new-chain : Yeni bir zincir oluşturur

Code:
iptables -N LOG_DROP

-X –delete-chain : Bir zinciri siler.

Code:
iptables -X LOG_DROP # Sadece LOG_DROP zincirini siler
iptables -X # Tüm zincirleri siler

-P –policy : Kernelin bir zincirdeki kurala karşılık hangi hareket tarzını göstermesi gerektiğini söyler ACCEPT, REJECT, DROP … ;

Code:
iptables -P INPUT DROP

! karakteri ile belirli bir kural içerinde ayrıcalık oluşturabilir; Örneğin tüm gelen tcp bağlantılarını engellemek ama 10.42.42.42 IP’ye ayrıcalık tanımak istiyoruz;

Code:
iptables -A INPUT -p tcp --source ! 10.42.42.42 -j DROP

-p –protocol : Kuralda kullanılacak protokol tipini belirtir: tcp, udp, icmp, all. Örneğin tüm icmp trafiğini engellemek için.

Code:
iptables -A INPUT -p icmp -j DROP

-s –source : Kaynak adresini belirtmek için kullanılır; Örneğin 192.168.42.42 no’lu ipden gelen tüm tcp trafiğini kabul etmek için.

Code:
iptables -A INPUT -p tcp -s 192.168.42.42 -j ACCEPT

-d –destination : Varış adresini belirler. Örneğin 10.1.0.1 no’lu ipye tcp trafiği için port yönlendirmesi yapılacaksa

Code:
iptables -A FORWARD -p tcp -d 10.1.0.1 -j ACCEPT

-i –in-interface : Belirli bir ağ arayüzünün gelen bağlantıları için belirli bir kuralı uygulama (Sadece INPUT, FORWARD ve PREROUTING). Örneğin eth0 aygıtında tüm gelen icmp trafiğini engellemek için

Code:
iptables -A INPUT -p icmp -i eth0 -j DROP

-o –out-interface : Belirli bir ağ arayüzünün giden bağlantıları için belirli bir kuralı uygulama (Sadece OUTPUT, FORWARD ve PREROUTING). Örneğin eth0 aygıtında tüm giden icmp trafiğini engellemek için

Code:
iptables -A OUTPUT -p icmp -o eth0 -j DROP

–sport –source-port : Kaynak portu ya da sıra halindeki portları [1024:2042] belirlemek için kullanılır. Birden fazla port belirtilcekse -m multiport parametresi kullanılır.

Code:
iptables -A INPUT -p tcp --sport 80 -j ACCEPT
iptables -A INPUT -p udp --sport 80 -j DROP
iptables -A INPUT -p tcp -m multiport --sport 3128,21,1000 -j DROP
iptables -A INPUT -p tcp --sport 1024:2042 -j ACCEPT

–dport –destination-port : Sıra halindeki varış portlarını belirtmek için kullanılır. Birden fazla port belirtilcekse -m multiport parametresi kullanılır.

Code:
iptables -A OUPUT -p tcp --dport 110 -j DROP
iptables -A OUPUT -p udp --dport 110 -j DROP
iptables -A OUPUT -p tcp -m multiport --dport 110,4242,119 -j DROP
iptables -A OUPUT -p tcp --dport 4925:4633 -j ACCEPT

–mac-source : MAC adresini belirtmek için kullanılır. Örneğin 42:AA:42:AA MAC adresinden gelen tüm trafiği engellemek için

Code:
iptables -A INPUT --mac-source 42:42:AA:42:42:AA -j DROP

–state : Belirli bir paket durumunun karşılaştırması için kullanılır. (ESTABLISHED, NEW, INVALID, RELATED)

Code:
iptables -A INPUT -i eth0 -p tcp --sport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --dport 80 -m state --state ESTABLISHED -j ACCEPT

4.1. Bazı Örnekler:

(Örneklerde ağ arayüzü eth0 kabul edilmiştir.)
Ön ayarlı kuralların yüklenmesi: (Tüm ağ trafiğini engeller)

Code:
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

Loopback için izin ver:

Code:
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

Web trafiğine izin ver:

Code:
iptables -A INPUT -i eth0 -p tcp -m tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp -m tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT

DNS’ye izin ver:

Code:
iptables -A INPUT -i eth0 -p udp -m udp --sport 53 -j ACCEPT
iptables -A OUTPUT -o eth0 -p udp -m udp --dport 53 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp -m tcp --sport 53 -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp -m tcp --dport 53 -j ACCEPT

FTP’ye izin ver:

Code:
iptables -A INPUT -i eth0 -p tcp -m tcp --sport 21 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp -m tcp --sport 20 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp -m tcp --sport 1024:65535 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp -m tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp -m tcp --dport 20 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp -m tcp --sport 1024:65535 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT

IRC’ye izin ver:

Code:
iptables -A INPUT -i eth0 -p tcp -m tcp --sport 6667 -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp -m tcp --dport 6667 -j ACCEPT
iptables -A INPUT -i eth0 -p udp -m tcp --sport 133 -j ACCEPT # tanımlama portu
iptables -A OUTPUT -o eth0 -p udp -m tcp --dport 133 -j ACCEPT # tanımlama port

Belirli bir ip için izin ve ya da engelle:

Code:
iptables -A INPUT -s 10.123.452.36 -j ACCEPT
iptables -A INPUT -s 10.123.452.36 -j DROP

4.2. Iptables Kurallarının Belirlenmesi İçin Script Kullanma:

Size nette bulduğum firewall scriptlerinin bir derlemesini vermek istiyorum. Arzu edilirse script ek kurallarla değiştirilebilir. (Tabi biraz iptables çalışmanız gerekecektir )
İlk scriptimiz tüm firewall ayarlarımızı sıfırlamak için:
Gnomeda iseniz gnome-terminal, kdede iseniz konsole’u açıyoruz. Ben gnome-terminal üzerinden gedit ile scripti anlatıcam. Kde için gedit yerine kwrite kullanabilirsiniz.

Code:
 gedit firewall_reset.bash

Gedit sayfasına şu scripti kopyalıyoruz.

Code:
#!/bin/sh
#
# Ön tanımlı ayarlı kuralları uygula
#
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
#
# NAT tablosu için ön tanımlı ayarları uygula
#
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
#
# Tüm kuralları sil
#
iptables -F
iptables -t nat -F
#
# Tüm zincirleri sil
#
iptables -X
iptables -t nat -X
# Sonuç mesajı
echo " [Resetleme sonu]"

Sonra kaydedip çıkıyoruz ve scriptimizi executable çalıştırılabilir hale getiriyoruz.

Code:
chmod  +x  firewall_reset.bash

Ardından scriptimizi çalıştırıyoruz ve firewall ayarlarımızı resetliyoruz (eğer iptables ile oynamadıysanız zaten önayarlı olarak bu scriptin içeriği gibidir ayarlar).

Code:
sudo sh firewall_reset.bash

Mevcut ayarları kaydetmek için şu komutu girip iptables’ı tekrar başlatıyoruz (Herhangi bir sorunda bu adımları tekrar edin ve ayarları bu şekilde resetleyin).

Code:
 #Ubuntu ve türevi dağıtımlar için
sudo /etc/init.d/iptables save
sudo /etc/init.d/iptables restart
Code:
#Archlinux türevi dağıtımlar için
 sudo /etc/rc.d/iptables save
 sudo /etc/rc.d/iptables restart

Ardından firewall kuralları için gerekli scripti yazalım.
Yine gnome-terminalden şu komutları girip gedit penceresine scripti yapıştırıp kaydediyoruz ve scripti çalıştırılabilir hale getiriyoruz.

Code:
gedit firewall_settings.bash
Code:
#!/bin/bash
# Kendi ağınızdaki ipler için ayarlayın
LAN=192.168.0.1/24
# Kendi ip'nizi belirtin
OWNIP=192.168.1.2

# Tüm ayarları sil
iptables -F
iptables -X
# Ön tanımlı ayarları geri yükle. Tüm bağlantıları kabul et
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT

# Yeni iki zincir oluştur
iptables -N FIREWALL
iptables -N TRUSTED

# ESTABLISHED ve RELATED gelen bağlantılara izin ver
iptables -A FIREWALL -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

# Loopback trafiğine izin ver
iptables -A FIREWALL -i lo -j ACCEPT

# Gönderilen tüm paketleri TRUSTED zincirine yolla
iptables -A FIREWALL -j TRUSTED

# Diğer tüm paketleri engelle
iptables -A FIREWALL -j DROP

# Tüm gelen INPUT paketleri FIREWALL zincirine yolla
iptables -A INPUT -j FIREWALL

# Tüm forward edilmiş paketleri engelle DROP, internet paylaşmadığımız farzediliyor.
iptables -A FORWARD -j DROP

# amule portları
iptables -A TRUSTED -i eth0 -p udp -m udp --dport 5349 -j ACCEPT
iptables -A TRUSTED -i eth0 -p udp -m udp --dport 5351 -j ACCEPT
iptables -A TRUSTED -i eth0 -p tcp -m tcp --dport 5348 -j ACCEPT

# bittorrent portları
iptables -A TRUSTED -i eth0 -p tcp -m tcp --dport 6881:6889 -j ACCEPT

# samba (Netbios'suz)
iptables -A TRUSTED -i eth1 -p tcp -m tcp -s $LAN --dport 445 -j ACCEPT

# Samba (Netbios)
iptables -A TRUSTED -i eth1 -p udp -m udp -s $LAN --dport 137:139 -j ACCEPT
iptables -A TRUSTED -i eth1 -p udp -m udp --sport 137:138 -j ACCEPT

# Sonuç mesajı
echo " [Iptables kuralları uygulandı] "
Code:
chmod +x firewall_settings.bash
Code:
sudo sh firewall_settings.bash
Code:
#Ubuntu ve türevi dağıtımlar için
sudo /etc/init.d/iptables save
sudo /etc/init.d/iptables restart
Code:
#Archlinux ve türevi dağıtımlar için
sudo /etc/rc.d/iptables save
sudo /etc/rc.d/iptables restart

5. Sonuç

Artık güvenlik duvarımız gayet temiz bir şekilde kullanıma hazır ve çalışıyor .
Şayet tcp için port açma ihtiyacı duyarsanız ;

Code:
iptables -A TRUSTED -i eth0 -p tcp -m tcp --dport port_numarası -j ACCEPT

udp için port açacaksanız;

Code:
iptables -A TRUSTED -i eth0 -p udp -m udp --dport port_numarası -j ACCEPT

Yeni bir iptables kuralı girdiğinizde aşağıdaki adımları tekrarlamanız gerekmektedir.

Code:
#Ubuntu ve türevi dağıtımlar için
sudo /etc/init.d/iptables save
sudo /etc/init.d/iptables restart
Code:
#Archlinux ve türevi dağıtımlar için
sudo /etc/rc.d/iptables save
sudo /etc/rc.d/iptables restart

Gördüğünüz gibi gayet kolay bir şekilde iptables yapılandırması yaparak güvenlik duvarımızı kişiselleştirebiliriz. Iptables ayarlaması için yazılmış GTK ve QT arayüzleri de mevcut. Örneğin GTK ile yazılmış firestarter kullanımı gayet kolay bir arayüzdür.

 

iptables ile belirli bir portu belirli bir ip aralığına yasaklamak için:

iptables -I FORWARD -m tcp -p tcp --dport 443 -m iprange --src-range  192.168.0.100-192.168.0.254 -j REJECT
iptables -I FORWARD -m udp -p udp --dport 443 -m iprange --src-range  192.168.0.100-192.168.0.254 -j REJECT

 

Kaynak

 

 

Yorumunuzu Ekleyin


Yükleniyor...
    Yükleniyor...