Iptables'ın bakımını kolaylaştırır


14

Beyaz listeye eklenen birkaç site dışında ağım tamamen kilitlendi. Bu, iptables yoluyla yapılır, bu böyle bir şey gibi görünür:

# Allow traffic to google.com
iptables -A zone_lan_forward -p tcp -d 1.2.3.0/24 -j ACCEPT
iptables -A zone_lan_forward -p udp -d 1.2.3.0/24 -j ACCEPT
iptables -A zone_lan_forward -p tcp -d 11.12.13.0/24 -j ACCEPT
iptables -A zone_lan_forward -p udp -d 11.12.13.0/24 -j ACCEPT
iptables -A zone_lan_forward -p tcp -d 101.102.103.0/24 -j ACCEPT
iptables -A zone_lan_forward -p udp -d 101.102.103.0/24 -j ACCEPT
...

Açıkçası bu adresler varsayımsaldır, ama fikri anlarsınız. Güvenlik duvarım muazzam bir hal alıyor. Bunu yapabilseydim sürdürmek çok daha kolay olurdu:

# Allow traffic to google.com
iptables -A zone_lan_forward -p tcp -d google.com -j ACCEPT
iptables -A zone_lan_forward -p udp -d google.com -j ACCEPT

Bunun mümkün olduğuna inanıyorum, çünkü man iptablesdiyor ki:

Adres, bir ağ adı, ana bilgisayar adı (DNS gibi uzak bir sorgu ile çözümlenecek herhangi bir ad belirtmenin gerçekten kötü bir fikir olduğunu), bir ağ IP adresi (/ mask ile) veya düz bir IP adresi olabilir.

Ama endişelendiğim şey, "çözülmesi gereken herhangi bir isim belirtmek ... DNS gerçekten kötü bir fikir" diyen kısım. Bu neden kötü bir fikir? Her şeyi yavaşlatıyor mu?

Ana bilgisayar adlarını iptables kurallarında gerçekten kullanmamam gerekiyorsa, güvenlik duvarımı basitleştirmek için ne yapmalıyım?


Security.stackexchange.com
Jim B

Bu sorunun bu siteye ait olması doğru olabilir, ancak kabul edilen cevapla ilgili bir sorununuz varsa lütfen nedenini açıklayın.
Büyük McLargeHuge

Ağınızı kilitleme ve nasıl yapılacağını bilmek istiyorsanız, güvenlik sormak, iptables (IPtables kullanan aksine) kullanmak istiyorsanız, o zaman bu yer.
Jim B

Yanıtlar:


28
  • DNS Adları, paketler işaretlendiğinde değil, kurallar eklendiğinde çözümlenir. Bu, çoğu insanın beklentilerini ihlal ediyor.
    • Kural, değiştirilen DNS sonuçlarını yansıtacak şekilde güncellenmez. Eklendiğinde çözülür ve işte budur. Kuralları düzenli olarak yeniden yüklemeniz gerekir, aksi takdirde bazı siteler bozulabilir.
  • Temel olarak güvenlik duvarı kurallarınızın kontrolünü harici bir varlığa devrettiğiniz için bir güvenlik sorunu var.
    • Üst DNS sunucunuzun güvenliği ihlal edilirse ve yanlış veriler döndürülürse ne olur?

Amacınız HTTP erişimini engellemekse, o düzeyde filtrelemek için tasarlanmış bir yazılım (genellikle kalamar + squidquard) kurmaktan çok daha iyidir.


1) Bunun nasıl bir sorun olabileceğini görüyorum - google.com bugün 1.2.3.4 olarak çözülebilir, ancak yarın bu adres geçersizdir. Güvenlik duvarını yeniden başlatmak bununla ilgilenir mi? 2) DNS sunucusu iyi biliniyorsa (Google'ın DNS veya OpenDNS gibi) hala bir güvenlik sorunu mu var?
Büyük McLargeHuge

1
Bunu cevap olarak işaretledim, çünkü neden iptables kurallarında ana bilgisayar adlarını kullanmamam gerektiğini açıklıyor ve güvenlik duvarımı basitleştirmek için bana bir hareket yolu sunuyor.
Büyük McLargeHuge

Squid'e desteğimi eklemek istiyorum. Ofisim için Squid'i uyguladım ve bir kez kurulduktan sonra beyaz listeye sahip ana bilgisayarlar için bakımı çok kolay (kara listeye almak için kullanıyorum). Elinizde anıtsal bir girişim var gibi görünüyor; Örneğin Google'ı beyaz listeye nereden başlatacağımı bile bilmiyordum. www.google.com, yalnızca 5 IP'ye karar verir; bu, ssl.gstatic.com ve kimlik doğrulama, G + vb. ile ilgili hiçbir şey söylemeyen ve muhtemelen her biri birden fazla IP'ye çözülen diğer tüm ana makineler için çözülür.
s.co.tt

Anıtsal koymak için iyi bir yoldur. Ancak Google'ı örnek olarak kullanıyordum. Ateş duvarımın temel bir taslağı şöyle: paketin hedefi beyaz listede varsa, kabul et. Aksi takdirde bir proxy sunucu üzerinden gönderin.
Büyük McLargeHuge

Ayrıca yük dengeleme için DNS kullanan sistemlerde sorun var. Böyle bir alan adını üst üste iki kez ararsanız aynı sonuçları alamayabilirsiniz, bu nedenle tek bir arama size alan adının çözebileceği kapsamlı bir IP adresi listesi bile vermeyecektir.
cdhowie

10

Güvenlik duvarınızda ana bilgisayar adları kullanıyorsanız, güvenlik duvarınız artık DNS'ye bağımlıdır. Bu, güvenlik duvarını bir dizi soruna açar:

  • Yüksek hacimlerdeki DNS aramaları gecikmeye neden olabilir.
  • DNS değişiklikleri anında yayılmaz. Yani güvenlik duvarınız önbelleğe alınmış IP kullanıyor olabilir.
  • DNS, sahte, ele geçirilmiş, saldırıya uğramış olabilir.
  • DNS başarısız olabilir - yani güvenlik duvarınız başarısız olur.
  • Güvenlik duvarı kurallarınız artık 3. taraflarca kontrol ediliyor.

Ana bilgisayar adlarını kullanıyorsanız ve DNS'yi kontrol etmiyorsanız, başka biri IPtables kurallarınızı etkili bir şekilde kontrol eder. Hatalar, hatalar veya sonlarındaki güvenlik sorunları sizin için sorun haline gelir.

Ana bilgisayar adlarının iyi kullanıldığını gördüğüm tek şey dahili işlemler içindir. IP'lerin ve ana bilgisayar adlarının DHCP aracılığıyla atandığı bir ofiste çalıştım. Güvenlik duvarları, farklı gruplar arasında engel oluşturmak için ana bilgisayar adlarını kullandı. Tüm bunlar dahili olarak kontrol edildiğinden iyi çalıştı.


2
Bu iyi bir yanıt ama güvenlik duvarını basitleştirmeme yardımcı olacak kısmı eksik.
Büyük McLargeHuge

3

Kurallarınızı korumayı kolaylaştırmak için shorewall gibi iptables etrafında bir sarıcı kullanabilirsiniz.


Bu iyi bir fikir, ancak neden iptables kurallarında ana bilgisayar adlarını kullanmamam gerektiğini söylemedin.
Büyük McLargeHuge

Shorewall hakkında çok şey bilmiyorum, ancak davidkennedy85'in Shorewall yapılandırmalarında izin vermek istediği bir hizmetin her IP adresinin listesini tutması gerektiği izlenimi altındayım. Netfilter [& etc] 'nin yönetimini biraz daha kolaylaştırabilir, ancak büyük bir IP listesi olan temel sorununu çözmezdi.
s.co.tt

2

Diğerlerinin zaten söylediği gibi iptables kurallarında DNS tarafından çözülebilir isimler kullanmamalısınız. Bunlar yanlıştır, üçüncü taraflarca kontrol edilir ve genellikle Kötü Bir Şeydir (tm). Ayrıca iptables servisi başlatıldığında DNS'inizin başarısız olabileceğini veya erişilemeyebileceğini de ekleyeceğim. Bu durumda kural hiç eklenmeyecek ve yepyeni bir sorun ortaya çıkabilir (yeniden başlatmadan sonra ssh erişimini kaybetmek gibi).

Yapabilecekleriniz:

  1. Kuralları mantıksal olarak ayırmak için özel zincirler kullanın
  2. ipsetAdreslerin kurallardan gruplanması ve ayrılması için s kullanın
  3. Kurallara yorum ekleme

Ayrıca kimse vardır hostname hakkında kötü bir şey söz konusu değil DNS tarafından çözümlenir (yani belirtilen hosts. Eğer gerçekten gerekiyorsa bunları kullanabilirsiniz.


Evet, ipsetcevap. Ipset'i güncellemek için crontab'dan bir komut dosyası çalıştırın.
mivk

2

Şahsen ben / etc / hosts içinde bir ip için bir hostname atar ve sonra iptables içinde kullanın.

Bu şekilde sen

  1. Güvenlik Duvarı kurallarınızı harici bir varlığa yüklemeyin
  2. Bakımı kolay iptables
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.