Register Now

Login

Lost Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Login

Register Now

Canyoupwn.me ~

TR | IPTables

IPTables Nedir?

Kernel bazında çalışan ağ paketlerini inceleyebileceğimiz müdahalede bulunabileceğimiz,Linux üzerinde çalışan bir güvenlik duvarı( ateş duvarı (firewall))dır.Oldukça kullanışlı bir araçtır kendisi.Linux üzerinde ki hangi tool/yazılım değil ki ?

iptables

Bilinmesi Gereken Komutlar & Kavramlar.

  • ACCEPT : Gelen giden paketleri kabul etmek için kullanılır.
  • DROP : Gelen giden paketleri düşürmek için kullanılır.
  • REJECT : Gelen giden paketleri reddetmek için kullanılır.Drop’dan farkı kullanıcıya bunun hakkında bilgi verilir.
  • FORWARD : Gelen giden paketleri yönlendirmek için kullanılır.
  • INPUT : Gelen paketler için kullanılır.
  • OUTPUT : Giden paketler için kullanılır.

 

Biraz Pratik

Sıfır bir iptables ayarlarına bir göz atalım isterseniz.

iptables -L -n --line-numbers

iptables2

Tam halini görmek için : defaultrules.txt on github

  1. -L :  Kuralları listeler.
  2. -n : Burada ip ve portlarını bize göstermesini istediğimizi belirtiyoruz.DNS isim çözümlemesi kullanmaz bu yüzden hızlı bir şekilde listeleme yapar.
  3. –line-numbers : Kuralları kural tipine göre satır numaralarıyla birlikte gösterir.

Bir ip adresini drop edelim isterseniz.Şuan elimde web for pentesterın imajı var.Hemen ip almasını sağlayalım.

resim4

Gördüğünüz gibi 192.168.1.42 ip’sini almış.

 

resim5

iptables -I OUTPUT -d 192.168.1.42 -j DROP

Bu kodu şimdi aşama aşama görelim.

  • -I : Insert kelimesinin ilk harfi yani burada kural eklemek istediğimizi söylüyoruz.
  • OUTPUT : Verdiğimiz ip adresine veri gönderimini engellesin.
  • -d : Destination kelimesinin ilk harfidir.Yani hedefi 192.168.1.42 olan paketleri engelle.
  • -j : Jump kelimesinin kısaltması olarak kullanılmış.Kural için hedef gösteriliyor burda.Yani bu kurala uyan paket drop edilsin şeklinde hikayeleştirilebilir sanırım.

Şimdide bir domain engelleyelim isterseniz.

iptables -I OUTPUT -d https://www.canyoupwn.me -j DROP

 

resim6

 

İyi hoş güzel biz engelliyoruz ama lazım oldu bunu kaldırmak istedik o zaman nasıl yapacağız ?

O zaman ilk önce şöyle komut gireceğiz.

iptables -L -n --line-number | grep “ipadresi”

 

Şaka şaka evet bu yöntemi de kullanabilirsiniz ama kurallarınız çoğaldığın da bu bir sorun olacak.

Iptables -L OUTPUT -n --line-number

Bu şekilde eklediğiniz kuralları görebiliyorsunuz.”–line-number” komutunu verdik ki silerken satır satır silmemizde bize kolaylık sağlasın diye.

Silmek için aşağıda ki komut yeterlidir.

iptables -D OUTPUT 1

Kodumuza daha yakından bakalım.

 

  • -D : Delete’in ilk harfi.Yani silmek istediğimizi belirtiyoruz.
  • OUTPUT : Çıkış yapan paketleri engellemek istediğimizi belirtiyoruz.
  • 1 : 1.Numaralı satır demektir.

  resim7

Şu ana kadar hep engellerken -d parametresini kullandık.İsterseniz source’un ilk harfi olan -s i kullanabilirsiniz.Bu da şu anlama gelir.Şöyle örnekle açıklayalım.

iptables -I INPUT -s 192.168.1.42 -j REJECT

 

Burada kaynağı yani bize paket gönderen 192.168.1.42 olur ise onu reddet diyoruz.

 

IPTables ile istersek belirli portalara gelen istekleri veya giden istekleri de engelleyebiliyoruz.Mesela bir şirkette çalıştığımızı düşünelim ve 80 portunun çıkışını engelleyelim ama girişi olsun.

iptables -I OUTPUT -p tcp --dport 80 -j DROP

Bu şekilde engelleyebiliyoruz.Ama bilirsiniz uzak bir ülkede telekom firması da bu şekilde 3 ay boyunca borcunuzu ödemediğiniz takdirde 80 portunu kapatıyordu fakat bir sorun vardı https üzerinden internete ( yavaşda olsa ) çıkabiliyorduk.İşte yukarıda yazdığımız kod ile biz de böyle bir artık açık mı  dersiniz ne dersiniz ona sebebiyet verdik :).Burada –dport yerine –sport da kullanarak source port ( kaynak port ) engelleyebilirsiniz.

Aslında bu şekilde kişisel bilgisayarınızda bir kod ile bunu sağlar iseniz ssl sertifikası olmayan siteye girmemiş olursunuz.

İsterseniz şimdide bize ping atanları engelleyelim ne dersiniz ? Yani sadece ping atmalarını engelleyeceğiz diğer her işlevi yapabilicekler.( Fişi çekmekten iyidir 😛 )

iptables -I INPUT -p icmp --icmp-type echo-reply -j DROP


Eğer bizden bir ping çıkmasın istiyorsanız.

iptables -I OUTPUT -p icmp --icmp-type echo-request -j DROP

 

resim8

 

Genel anlamda aslında iptables ın tüm argümanlarına değindik.Değişek tek şey ip’ler ve protokoller ( tcp / udp ) . Bahsetmediğimiz birkaç şey kaldı bunlarda interface seçmek,load-balancing,time limit ve port yönlendirme.

 

İnterface seçimi :
INPUT interface:

iptables -I OUTPUT -d 192.168.1.43 -i wlan1 -j DROP

 

Kod tamamen örnek amaçlıdır.Burada -i input interface(Paketin alındığı arayüz) anlamına gelir.

OUTPUT interface

iptables -I OUTPUT -d 192.168.1.43 -o wlan1 -j ACCEPT

 

Burada -o output interface ( Paketin gönderildiği arayüz )  anlamına geliyor.

Time-limit:

Bu kodumuzda ise paketlerin alınma veya yollanma sıklığını belirleyebiliyoruz.

Kodumuza şöyle birşey eklerisek yeterli gelicektir.

iptables -m limit --limit sıklık/zaman(Hour veya Second cinsinden )
iptables -m limit --limit 10/5s -j DROP

 

Load-Balancing ( yük dengeleme ) :

Bazı sistemlerde yük dengelemeye ihtiyaç duyulabilir ki duyulması da gerekir aksi takdirde yük dağıtımı olmadığı zaman sistemin çalışmasında sıkıntılar meydana gelecektir.İşte bu gibi durumlar içinde iptables da argümanlarımız bulunuyor.

iptables -I PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.1.1 

iptables -I PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.1.2

Burada hedefi 80 olan tüm paketleri iki sunucu arasında paylaştırdık.

Port yönlendirme :

iptables -t NAT -I PREROUTING -p tcp -d 192.168.1.5 --dport 500 -j DNAT --to 192.168.1.100:300

Burada -t argümanı table ( tablo ) dan gelmektedir.Yani nat tablosuna ekliyoruz bu kuralı.

Burada hedefi 192.168.1.5:500 olan bir isteği 192.168.1.100:300 e yönlendirdik.



Herhangi bir yerde hata görürseniz bildirmekten çekinmeyiniz teşekkür ederim.