“Çok açık” kabul edilen iptables içindeki tüm kaynaklar için İLGİLİ, KURULUŞ kabul ediliyor mu?


9

Kuralın -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPTuygulandığını sık sık gördüm . Ben uzman olmasam da, o hat beni ilgilendiriyor. Kuralın , bağlantının kurulması veya kurulan bir bağlantıyla ilgili olması dışında tüm trafiğe izin verdiği oldukça açıktır .

senaryo

  • Alt 22ağdaki sunucular LAN'ından 192.168.0.0/16veya başka bir şekilde varsayılan SSH bağlantı noktasına bağlantılara izin vereceğim .
  • SuperInsecureApp®limanda zincirime 1337eklediğim bir şey ortaya koyuyor INPUT.
  • Ben ekledim conntrackkabul kural ESTABLISHEDve RELATEDgelen tüm kaynaklardan
  • Zincir politikası DROP

Temel olarak, yapılandırma ağı yalnızca LAN'dan SSH bağlantılarına izin verirken, dünyadan 1337 numaralı bağlantı noktasında gelen trafiğe izin verir.

Bu benim karışıklığımın çiçek açtığı yer. Misiniz conntrackherhangi bir şekilde kimse bir almasına olanak sağlar bir güvenlik açığı ortaya kurulan bağlantı 1337 tarihinde (It dünya açıkken beri) ve ardından SSH bağlantı noktasına kazanç erişimi bağlantıyı (veya bu konuda başka bir port) kullanmaktadır?

Yanıtlar:


8

KURULDU ve İLİŞKİLİ trafiği çok açık kabul etmem. İLGİLİ'yi atlayabilirsiniz, ancak kesinlikle KURULMAYA izin vermelisiniz. Bu trafik kategorilerinin her ikisi de bağlantı durumlarını kullanır.

KURULAN bağlantılar başka bir kural tarafından zaten doğrulanmış. Bu, tek yönlü kuralların uygulanmasını çok daha basit hale getirir. Bu, yalnızca aynı bağlantı noktasındaki işlemlere devam etmenizi sağlar.

RELATED bağları başka bir kural tarafından da doğrulanır. Birçok protokole uygulanmazlar. Yine kuralları yapılandırmayı çok daha kolaylaştırırlar. Ayrıca, uygulandıkları yerde bağlantıların düzgün sıralanmasını sağlarlar. Bu aslında kurallarınızı daha güvenli hale getirir. Bu, farklı bir bağlantı noktasına bağlanmayı mümkün kılabilirken, bu bağlantı noktası yalnızca bir FTP veri bağlantısı gibi ilgili bir işlemin parçası olmalıdır. Hangi portlara izin verilir, protokole özgü bağlantı modülleri tarafından kontrol edilir.

KURULAN ve İLGİLİ bağlantılara izin vererek, güvenlik duvarının hangi yeni bağlantıların kabul etmesini istediğinize konsantre olabilirsiniz. Ayrıca, dönüş trafiğine izin veren, ancak yeni bağlantılara izin veren kırık kurallardan kaçınır.

Programı 1337 numaralı bağlantı noktasındaki güvensiz olarak sınıflandırdığınız göz önüne alındığında, program kök olmayan bir kullanıcı kimliği kullanılarak başlatılmalıdır. Bu, bir kişinin başvurusunu kırmayı ve gelişmiş erişim elde etmeyi başarırsa yapabileceği hasarı sınırlayacaktır.

Bağlantı noktası 22'ye uzaktan erişim için 1337 numaralı bağlantı noktasındaki bir bağlantının kullanılabilmesi pek olası değildir, ancak bağlantı noktası 22'ye yapılan bir bağlantıyı proxy yapmak için 1337 numaralı bağlantı noktasına bir bağlantının kullanılması mümkündür.

SSH'nin derinlemesine sabitlendiğinden emin olmak isteyebilirsiniz:

  • Güvenlik duvarı kısıtlamalarına ek olarak erişimi sınırlamak için hosts.allow komutunu kullanın.
  • Kök erişimini önleyin veya en azından anahtarların kullanımını gerektirin ve yetkili_anahtarlar dosyasında erişimini sınırlayın.
  • Oturum açma hatalarını denetleyin. Bir günlük tarayıcı size olağandışı etkinliklerle ilgili periyodik raporlar gönderebilir.
  • Tekrarlanan erişim hatalarında erişimi otomatik olarak engellemek için fail2ban gibi bir araç kullanmayı düşünün.

Bu keyfi bir örnek olmasına rağmen, yeni sunucularda yaptığım ilk şey her zaman sshd'de root erişimini ve düz metin kimlik doğrulamasını devre dışı bırakmaktır - bu çok iyi bir ipucu. Ayrıca fail2ban aslında örneğin ilham aldığı gerçek hayat kurulumuna zaten kurulmuştur. "KURULAN bağlantılar başka bir kural tarafından zaten doğrulandı" emin olduğum şeydi ve sorumu mükemmel bir şekilde cevapladı. Çok net cevabınız için teşekkürler!
Dencker

Yan soru: Performans açısından, conntrackkural zincirin başında veya sonundaysa hiçbir şeyi değiştirmez mi? Anladığım kadarıyla iptables, eğer sonunda olsaydı, kurulan bağlantılar üzerindeki tüm kuralları ve başlangıçta yerleştirilmişse sadece bu tek kuralı işlemek gerekirdi?
Dencker

@Dencker Önce ESTABLISHED, RELATED kuralını istiyorsunuz. En fazla trafiği kabul edecektir. Bunun ötesinde, en fazla trafiği kabul eden kurallara sahip olmak isteyebilirsiniz, ancak okunabilirliğe ağır bir şekilde ağırlık vermek en iyisidir. Kurallarım gruplandırılmış, gecikmeye duyarlı, yüksek trafik (türe göre gruplandırılmış), diğerleri. Iptables, her kuralın ne kadar trafik çektiğini görmenizi sağlayan sayaçlara sahiptir. Bazı yararlı varsayılanlar ekleyen ve güvenlik duvarlarımı oluşturmak için okunması kolay kurallar dosyası olan Shorewall kullanıyorum.
BillThor

2

KURULAN ve İLGİLİ, filtrelemenin yalnızca statik bir kural kümesine değil aynı zamanda paketlerin dikkate alındığı bağlama da bağlı olduğu "durumlu" paket filtrelemenin özellikleridir. Bağlantıların çalışmasına izin vermek için KURULMALI ve ilgili ICMP mesajları için İLGİLİ olmanız gerekir. Durumsal filtreleme, statik "durumsuz" kurallara kıyasla daha hassas bir şekilde filtrelemeye olanak tanır.

Önce KURULDU'ya bakalım. Örneğin, port 22. başlatıcı (istemci) bir gönderir üzerinde TCP dikkate SYNiçin serverIPaddr:22. Sunucu SYN+ACKistemciye geri döner . Şimdi müşterinin bir gönderme sırası ACK. Sunucudaki filtreleme kuralı, "eşleşme" ACKkabul edilecek şekilde nasıl görünmelidir ? Genel bir vatansız kural şöyle görünecektir

-A INPUT --proto tcp --port 22 -j ACCEPT

ki bu duruma göre kuraldan daha liberal. Durum bilgisi olmayan kural, örneğin önce bir bağlantı kurmadan ACKveya FINbir bağlantı kurmadan rastgele TCP segmentlerine izin verir . Bağlantı noktası tarayıcıları, OS parmak izi için bu tür davranışlardan yararlanabilir.

Şimdi İLGİLİ bir göz atalım. Bu, çoğunlukla hata mesajları olmak üzere ICMP mesajları için kullanılır. Örneğin, sunucudan istemciye bir paket bırakılırsa, sunucuya bir hata iletisi gönderilir. Bu hata iletisi önceden kurulmuş bağlantıyla "ilişkilidir". İLGİLİ kural olmadan, ya genel olarak (bağlamsız) gelen hata mesajlarına izin verilmesi veya birçok site için özel olarak ICMP'yi tamamen bırakıp taşıma katmanında zaman aşımlarını beklemesi gerekir. (Bunun IPv6 için kötü bir fikir olduğunu unutmayın; ICMPv6, IP eski için ICMP'den daha IPv6 için daha önemli bir rol oynar.)

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.