İptables
Iptables Linux ve Unix yada BSD tabanlı sunucularımız üzerinden geçen trafiğin erişim denetimini sağlayan kural tabanlı bir uygulamadır. Iptables günümüzde birçok firewall yazılımının entegresi olarak kullanılmakta olan kural tabanlı bir erişim denetleyicisi olarak adlandırılabilir. Iptables ile erişim denetimi dışında birçok işlem yapılabilmektedir.
Parametreler
İşlem parametreleri hakkında bilgilerden kısaca bahsedelim.
- A : Yeni kural eklemek
- I : Aralıklara kural eklemek
- L : Kuralları Listelemek
- N : İşlem eklemek
- X : İşlem silmek
- D : Kural Silmek
- F : Tüm kuralları silmek
- Z : Sayaçları sıfırlamak
- R : Kuralı Değiştirmek
Örnek iptables komutuna F parametresini eklersek içersindeki tüm kuralları siler.
sudo iptables -F
Prosedürler
İşlem sırasındaki bir sonraki parametre yapılacak işlemin prosedürünü belirtir. Üç adet prosedür mevcuttur. Bunlar, “INPUT , OUTPUT , FORWARD” bu üç temel prosedürün anlamları aşağıdaki şekildedir;
- INPUT : Dışarıdan gelen paketler.
- OUTPUT : Dışarıya çıkan paketler.
- FORWARD: Dışarıdan gelen ve bizim üzerimizden geçip çıkan paketler.
Her bir aşamada örneklemeye devam edelim. Artık iptables komutumuz, parametremizi ve prosedürü tamamladık. Diğer kısma geçelim.
iptables -A INPUT
Protokol
İşlem sırasına göre sonraki iş protokol dür. Protokol denetimin yapılacağı yeri göstermektedir. Bu protokoller “TCP, UDP, SSH, RDP, HTTP, IMAP, POP3” olarak örneklendirilebilir. Protokolleri kullanabilmek için -p parametresini kullanılmalıdır.
iptables -A INPUT -p ssh
Hedef
Diğer bir işlem ise hedef yapılacak denetim işleminin hedefini belirtmemiz gerekir hedef içinde “-d” parametresini kullanıyoruz. Hedef belirtmek için; “ –d 10.0.0.2” yazıldığında 10.0.0.2 ip adresini hedef olarak belirtmiş oluyoruz. Aynı şekilde hedef portu da “--dport” parametresi ile belirtiliyor.
Örnek olarak aşağıdaki şekilde yazıldığında 10.0.0.2 IP adresinin 80 numaralı portu hedef olarak belirtilmiş olur.
–d 10.0.0.2 --dport 80
Kaynak
Sonraki işlem sırasında Kaynak yer almaktadır. Yapılacak işin kaynağı “–s” parametresi ile belirtilir. Kullanımı aynı Hedef işlemi gibidir. Port belirtmek içinde “--sport” parametresi kullanılır.
-s 10.0.0.3 --sport 80
Denetim
Son işlem denetimdir. Yapılacak işin denetimi belirtilmesi gerekir. Yani eklenmek istenen kuralın asıl amacı budur. Denetim yapmak için kullanılan betiklerin bazılarının anlamları şunlardır;
- DROP : Yasaklamak
- ACCEPT : İzin vermek
- REJECT : Yasaklamak ve yasak cevabı göndermek
- LOG : İşlemlerimizin kaydını tutmak
İşlem sırası burada tamamlanmaktadır. Parametreleri belirtildiği şekilde isteğinize uygun olarak değiştirerek kullanım sağlayabilirsiniz.
Örnekler
Örnek 1
Bu komut ile tüm iptables kurallarını listeleyebiliriz.
sudo iptables –L
Bu komut ile var olan tüm kuralları sıfırlayabiliriz.
sudo iptables –F
Örnek 2 http
Sunucunun 80 portunu kapatalım. Sırası ile yapılacak adımları açıklayalım.
- iptables komutumu kullandık.
- –A kullanarak yeni bir kural ekleneceğini,
- INPUT ile dışarıdan sunucumuza gelen istekleri,
- -p tcp ile tcp protokolünü,
- -s 0/0 ile tüm ip adreslerini kaynak olarak belirterek,
- --dport 80 ile 80 portunu hedef gösterip,
- DROP ile yasaklandı.
iptables –A INPUT -p tcp -s 0/0 --dport 80 -j DROP
Sunucumuzda 80 portu kapalı olsaydı DROP yerine ACCEPT yazmamızla 80 portunu açabilirdik.
Örnek 3 ICMP
Sunuculara ping paketlerı ICMP protokolü aracılığı ile gitmektedir, sunucumuza ping paketlerinin gitmesini engelleyelim.
iptables -A INPUT -p ICMP -j DROP
Örnek 4 Blacklist /32
Bu örnekte ise sunumuza erişmemesi için bir ip'yi engelleyelim.
iptables -A INPUT -s 192.168.11.12 -j DROP
Örnek 5 Blacklist /8 | /24
iptables yardımı ile belirli ip aralıklarını sunucumuzdan engelleyebiliriz.
iptables -A INPUT -s 10.0.0.0/8 -j DROP
komutu /8 networku yerine, bunu /16 ve /24 olarakda yapabiliriz. Yani komutu /24 yaptığımız zaman 192.168.1.0 dan 192.168.1.255’e kadar olan ip aralığını sunucumuzdan engellenecektir.
iptables -A INPUT -s 192.168.1.0/24 -j DROP