Linux'ta paketleri filtrelemek için iptables nasıl kullanılır?

İçindekiler

Bu eğitimde hakkında konuşacağız iptables, Linux'ta sahip olduğumuz güvenlik duvarı veya güvenlik duvarı. Bu araç, paketleri filtrelememize (ki bu öğreticinin ele alacağı), bir günlük kaydı oluşturmamıza, NAT çevirileri yapmamıza izin verecektir.

iptables sayesinde paketleri oldukça basit bir şekilde filtrelemek için kurallar üretebiliyoruz, ilk kullandığınızda biraz kafa karıştırıcı görünse de, birkaç gün kullandığınızda herhangi bir komplikasyon olmadığını göreceksiniz.

Bu aracın kullanımı yüksek ayrıcalıklar gerektirir, yani onu çalıştırmak için süper kullanıcılar olmamız gerekir. iptables içinde birçok özelliğe sahibiz, öğreticinin amacı, örnekler aracılığıyla kullanımının yaklaşık bir değerini görmektir. Öğreticiyi bitirdikten sonra, çok faydalı olduğu için kazmaya devam etmeniz önemlidir.

Ardından, ilgilenilmesi durumunda resmi web sitesinden ayrılıyoruz:

NotIPv6 için elimizde ip6tables.

Eğer iptables hakkında bilgi görmek istiyorsak, bir terminalde aşağıdakileri uygulayacağız:

 adam iptables
Aşağıdaki bilgileri göreceğiz:

Resimde komut tarafından sağlanan bilgilerin bir kısmını görebilirsiniz, hepsini görmek için terminalde aşağı kaydırın. Eğitimin başında gördüğümüz gibi, iptables'ın bize izin vereceği görevlerden biri, kaynak / hedef olarak makinemizi içeren paketlerle ne yapılacağını bilmek için kurallar veya filtreler oluşturmaktır. Bu görev için aşağıdaki kavramları neden kullandığımızı bilmekle ilgileneceğiz:

Panolar
Iptables'ın birkaç tablosu var, ancak öğreticimiz için yalnızca filtre tablosufiltrelemeden sorumlu olan , iptables'ta varsayılan olarak kullanılır.

Zincirler
Buraya koyacağım dizeler daha önce yorum yapılan tabloya ait olanlardır.

  • Giriş: Makinemize yönelik paketler.
  • Çıktı: Sistemimizden kaynaklanan paketler.
  • İleri: Başka bir makineye yönlendirilmek üzere makinemizden geçen paketler.

Tüzük
Eğitimde kullanılacak 2'yi belirteceğiz, ancak daha fazlası var.

  • Kabul etmek: Paketler kabul edilir.
  • Düşürmek: Paketler atılır.

parametreler
Kullanabileceğimiz bazı parametreler aşağıdaki gibidir.

  • -Kural: Kural eklemek için
  • -D kuralı: Belirttiğimiz kuralı silmek için.
  • -L: Kuralları listelememizi sağlar.
  • -F: Mevcut tüm kuralları silin.
  • -j hedef: Kural türünü ayarlayın (Kabul Et, Bırak).
  • -t tablosu: Kullanılan tabloyu gösterecektir (varsayılan olarak filtre tablosu).
  • -p protokolü: Protokolü belirtmek için kullanılır.
  • -i arayüzü: Kural için arayüz oluşturuyoruz.
  • -s: Menşei belirtmek için.
  • -NS: Hedefi belirtmek için.
  • -H: Yardımı görüntüler.

Olabilecekleri gibi daha birçokları var --hedef-port veya --Kaynak portu. Hepsini görmek için yukarıda tartıştığımız komutu çalıştırabilirsiniz:

 adam iptables
Veya şunları da çalıştırabilirsiniz:
 iptables -h
NotAracın sunduğu seçeneklere dikkatlice bakmalısınız, çünkü küçük ve büyük harfleri ayırt eder ve hata yapabiliriz. -P o -P).

Örneklerle başlayalım toplamda 10 tane konulacak yani daha iyi anlaşılacak ve güvenlik duvarı modunda iptables'ın nasıl çalıştığını görebiliyoruz. Sudo görmeyeceğiniz örneklerde root olmanıza gerek kalmayacak, aksi takdirde her örneğin başına sudo kelimesini eklemeniz gerekecektir.

1. Herhangi bir varış noktasına hareket etmeyi yasaklayınBaşlangıç ​​olarak kolay bir örnek vereceğiz, çıkışı hiçbir yerde bırakmayın.

 iptables -A ÇIKIŞ -j DROP
Bu çok kolay, gördüğünüz gibi, bir sonraki daha da kolay.

2. Tüm kuralları temizleÇok basit bir örnekle devam ediyoruz, iptables'ımızı kuralsız bırakıyoruz, bunun için uygulayacağız:

 iptables -F
Peki, bir sonrakinde biraz daha karmaşıklaştıralım.

3. 80 numaralı limandan hareketin yasaklanmasıŞimdi çıktıyı belirli bir bağlantı noktasından kapatmaya özen gösteriyoruz, bu durumda 80'dir, bu nedenle http protokolü üzerinden web taramasına sahip olmayacağız (bir https sayfasına gidersek, aynı şeyi yapabilmemize rağmen gezinebiliriz) 80 olarak).

 iptables -A OUTPUT -p tcp --destination-port 80 -j DROP
NotBir hedef veya kaynak bağlantı noktası kullanırken, protokolü belirtmek için -p parametresini koymamız gerekecek.

Dördüncü örneğe geçiyoruz.
4. Bir sayfada gezinmeyi yasaklayınBu vesileyle sistemimizden X sayfasına erişimi yasaklamakla ilgileniyoruz, bu sayfanın solventtic.com olduğunu düşünelim, bunun için IP'sini öğreniyoruz, bir ping çalıştırarak çok kolay bir şekilde elde edeceğiz.

Ve şimdi yürüteceğiz:

 iptables -A ÇIKIŞ -d 178.33.118.246 -j DROP
Gördüğümüz gibi parametreden sonra IP'nizi belirtmeniz yeterlidir. -NS.

5. Var olan kuralları listeleyinBu örnek, şu anda tanımladığımız filtre kurallarını listelemeye çalışacaktır:

 iptables -L
Bir resim görüyoruz, sadece aşağıda gördüğümüz gibi tanımlanmış iki kuralımız var:

Yine kurallar listesini kullanacağımız altıncı örneğe geçelim.

6. Belirli bir kuralı silinBurada, önceki örnekte sahip olduğumuz kurallardan başlayarak, çıkış kurallarından birini sileceğiz, bu durumda ilk görünen, aşağıdakileri yürütüyoruz:

 iptables -D ÇIKIŞ 1
Etkili bir şekilde silindiğini doğrulamak için örnek 5'i kullanıyoruz:

Daha fazlası ile devam edelim.

7. Pinglenmekten kaçınınBize ping atmalarını istemiyoruz, bunun için ICMP protokolünün girişini engelleyeceğiz.

 iptables -A GİRİŞ -p ICMP -j DROP
Aşağıda, yukarıdaki komutu çalıştırmadan önce ve sonra bir ping görüntüsü bırakıyorum:

ICMP paketlerini reddettiği için makinemizin yanıt vermediğini görebiliriz. Girdi yerine çıktıyı engellersek şunu uygularız:

 iptables -A OUTPUT -p ICMP -j DROP
Önceki resimdekiyle aynı şey tekrar olacaktı. Test etmek için 3 kez ping yaptım, çalıştırırsak paket sayısını görebiliriz:
 iptables -L -v

Bir önceki görselde 3'ü etkili bir şekilde koyduğunu görüyoruz.

8. Bir IP'nin bize veri göndermesini önleyinBir giriş uygulayacağız, belirli bir IP'nin bizi bağlamasını istemiyoruz, bu yüzden yürüteceğiz:

 iptables -A GİRİŞ -s 192.168.66.1 -j DROP
Biraz daha uzun bir örneğe bakalım.

9. Bir dizi IP'ye çıkışlara izin verinYalnızca bir dizi IP adresine giden çıktıları kabul etmek istediğinizi, ancak çıktıların geri kalanını reddetmek istediğinizi hayal edin, şunu yürütmeliyiz:

 Iptables -A OUTPUT -d 192.168.0.0/24 -j KABUL ET Iptables -A OUTPUT -j DROP
NotKuralların uygulanma sırası önemlidir, bu örneği izin vermek istediğiniz ağ ile deneyin ve bağlantı kurun, çalıştığını göreceksiniz, ardından tüm kuralları silip 2 cümleyi tersten yürütün, şimdi bağlantıları reddedecek .

Onuncu ve son örneğe geçelim.

10. 143 numaralı bağlantı noktasını açın (imap)Tüm tcp paketlerinin girişi için bir port açacağız, bu durumda 143 (geri kalanı için aynı olacaktır).

 iptables -A GİRİŞ -m durum --durum YENİ -p tcp --dport 143 -j KABUL
Bu örnekte kullanmak istedik --dport, böylece bunu kullanabileceğimizi görebilirsiniz veya --hedef-port, biz de kullanabiliriz --spor onun yerine --Kaynak portu.

Öğretici burada sona eriyor, şimdi diğer kuralları uygulamaya çalışıyorsunuz, ne kadar çok pratik yaparsanız, kuralları uygularken o kadar hızlı olursunuz ve size maliyeti o kadar az olur. Bitirmek için ilginizi çekebilecek bir eğitim bırakıyoruz, Windows 10'da bağlantı noktalarını açıp kapatıyoruz.

wave wave wave wave wave