it-swarm-tr.com

Port Knocking iyi bir fikir mi?

Normalde bir sunucu için SSH'yi ve diğer kamuya açık olmayan hizmetleri yalnızca belirli IP adresleri tarafından erişilebilmesi için kilitlemeyi seviyorum. Ancak, işletmenin statik IP adresleri yoksa veya dış geliştiricilerin erişime ihtiyacı varsa bu her zaman pratik değildir.

Port Knocking'i bir süre önce duydum ve sonunda yukarıdaki soruna bir çözüm olarak bakma şansım oldu. Bunun sonucunda insanların bana yardımcı olabileceğini umduğum bir sürü sorum var.

  • Herkes kendi İş/Organizasyon içinde dağıttı ve herhangi bir tavsiye sunabilir?
  • Linux altında çalışacak en iyi vurucu Daemon nedir?
  • Linux, Windows ve OSX için en iyi istemciler nelerdir?
  • Vuruntu sırası için önerilen uzunluk nedir ve TCP, UDP veya İkisini kullanmak en iyisidir?
  • İlişkili olumsuz yanları ve kullanımıyla ilgili sorunlar nelerdir?
  • Sadece Belirsizlik Yoluyla Güvenlik mi?
  • Liman vurma yaklaşımına alternatif var mı?
41
Mark Davidson

Henüz konuşlandırmasam da, konuşlandırmış birçok insan tanıyorum. Her biri, sonuç olarak SSH kaba kuvvet saldırıları gibi şeylerin tükettiği bant genişliği miktarında önemli bir azalma kaydetti.

Ancak bu, olumsuzlukların olmadığı anlamına gelmez. AFAIK, benim için gerçek anahtar olacak çekirdek tabanlı liman vuruntu uygulamaları mevcut değil. Bağlantı noktası vurma cinleri, bir güvenlik duvarı sisteminden gelen başarısız (ve filtrelenmiş/yasaklanmış) günlük dosyası girişlerini kullanıyor. Hepsi iyi ve züppe ama dosya sistemi dolarsa ne olur? Sistemin RAM ve değiş tokuşunu tüketen kaçak işlemlerden dolayı daemon öldürüldüğünde ne olur?)) Bu iki şeyden herhangi birinin bağlı olduğu ve çalışmayı bıraktığı başka bir şey olursa ne olur? Muhtemelen fiziksel olarak erişmeniz gereken bir sunucu ile sonuçlanır.Bu, özellikle sunucudan birkaç on milden daha uzaktaysanız ve arayabileceğiniz kimseniz yoksa, makul olandan daha pahalıya mal olabilir. acele edin.

Söyleyebileceğim tek şey, bunun "muğlaklık yoluyla güvenlik" olmaması. Bağlantı noktası vurma bir kimlik doğrulama biçimidir ve herhangi bir kimlik doğrulama sistemi gibi, istenildiği kadar basit veya karmaşık hale getirilebilir. "10.000 + realPortNumber bağlantı noktasını vurmak" kadar basit bir şey yapılabilir, bu önemsiz bir kopma anlamına gelir veya bağlantı noktası vuruşu, bir tür gerçek kimlik doğrulaması iletmek için kullanılabilir (örneğin, AES kodlu 1 blok veri anahtar başka bir yöntemle türetilmiş). Bununla birlikte, büyük miktarda veri iletmek için bağlantı noktası vuruşu kullanmak mümkün olmaz, çünkü yalnızca tek bir paket göndermekten çok daha uzun sürer ve paket TCP en azından başarılı bir şekilde alınıp alınmadığı veya bir tür hatayla karşılaşılıp karşılaşılmadığı biliniyor.

Bununla birlikte, bunun getirdiği ilginç bir soru, günlük dosyalarının nasıl yönetileceğidir --- kullanıcı alanı uygulamaları, bir vuruşun başarılı bir şekilde gönderilip gönderilmediğini belirlemek için çoğunlukla günlük dosyalarını gerektirir ve bu günlükler sızdırılırsa ne olur? Kimlik doğrulama verileri bilinir ve bu çok iyi bir şey değildir.

Kurulumunuzda port vuruşu kullanıp kullanmayacağınızı söyleyemem. Henüz değilim ve olacağımdan% 100 emin değilim. Güçlü kriptografiye (PKI altyapısı gibi) dayanan güçlü kimlik doğrulama sistemlerini kullanmak, bağlantı noktasını vurmaktan daha mantıklı. Ayrıca, kritik altyapıya erişmek için bana tek bir hata noktası eklemek zaten, kötü bir fikir gibi görünüyor ve her türlü garantiyle düzgün bir şekilde desteklenmesi daha zor. Yine de, bu, bağlantı noktası vurma yazılımının işletim sistemi çekirdek düzeyinde güvenlik duvarı ile entegre edilmemesi fikrine dayanmaktadır; eğer bu değişirse, onu kullanma hissimi de değiştirebilirim.

34
Michael Trausch

Bağlantı noktası vurma yalnızca başka bir düz metin parolası değildir - en azından TCP SSH gibi bir bağlantı noktasını dinleyen hizmetleri korumak için kullanıldığında.) Bağlantı vurma, nmap ile hizmet bulmanın artık mümkün olmadığı anlamına gelir SSHD'nin uzaktan istismar edilebilir güvenlik açıkları da vardı ve bunların zayıf parolalarla ilgisi yok. Kimsenin nmap'i tetikleyebilmesini ve SSHD dinlediğimi görmesini istemiyorum.

Ayrıca, "Tek Paket Yetkilendirme" olarak adlandırılan daha güçlü bir bağlantı noktası varyantı vardır, ancak aynı zamanda tamamen pasif bir kimlik doğrulama şemasıdır, bu nedenle bağlantı noktası çalmanın faydalarını korur, ancak sınırlamalarını çözer (tekrar saldırıları kolaydır, DoS saldırıları kolaydır, vb. .).

13
Michael Rash

İnternete dönük tüm hizmetlerin nispeten sık güvenlik açıklarına sahip olduğu kolayca doğrulanmış bir gerçektir - SSH, OpenSSL, vb. Hizmetler. Bunlara yapılan saldırılar internette toplu olarak denenerek uygun açık portlara sahip tüm sistemleri hedefler.

Bağlantı noktası vurma, bence, genel güvenlik açıklarını arayan bu rastgele saldırganları internetten uzak tutmak amacına sahiptir. Yani, özel bir saldırgandan uzak durması veya hizmetlerin gerçek güvenliğinin herhangi bir parçasını oluşturması beklenmemektedir. Bağlantı noktası vurmanın yararı, içinde herhangi bir sömürülebilir hata olması muhtemel olmayacak kadar basit olması gerektiğidir.

Bu kullanım, saldırganların çoğunluk uzak kaldığı sürece, bağlantı noktasının vurulmasının olabildiğince gevşek olabileceği anlamına gelir. Bu belki anlaşılmaz bir güvenlik olabilir, ancak daha iyi bir yol, zayıf bir "parola" kimlik doğrulaması biçimine sahip olmaktır.

Bu nedenle "en iyi" port vurma servisi, herhangi bir saldırı hayal etmenin akıl almaz olduğu, ancak herhangi bir meşru kullanıcının herhangi bir istemci makineden kullanması için yeterince önemsiz olan bir hizmet olacaktır.

9
Nakedible

Liman vuruşu anlaşılması belirsiz bir güvenlik değildir. Derinlemesine savunmadır. Arabanızı daha stealable bir arabanın yanına park etmek gibidir - hedefli bir saldırıyı önlemek için fazla bir şey yapmaz, ancak diğer yöne bakan oportünistleri gönderebilir.

8
jl6

Başka bir yerde yorumlarıma göre, vurmaya cevap vermek için her türlü özel hileyi kullanan birçok uygulama olmasına rağmen, bir Linux sisteminde tamamen iptables kullanarak uygulanabilir. yani bu etkili bir şekilde çekirdek tabanlı bir bağlantı noktası vurma uygulamasıdır

Vuruntu ağda görülebildiğinden, 3 vuruştan daha fazla dizinin kullanılması çok az fayda sağlar. TCP - daha yavaş olmasına rağmen, vuruşun teslim edildiğini daha iyi garanti edersiniz.

Bununla birlikte, kullanıcı alanı programlarına dayanmasına rağmen, tercihim fail2ban için bağlantı kurmak için ek bir adım/yazılım gerektirmediğinden, güvenilir bir şekilde çalıştığından ve başarısız olursa sunuculara erişmemi engellemez .

Şifrelenmiş kimliğin çok az benimsenmesi beni şaşırtıyor - RFC1413, sadece nasıl çalışması gerektiğini tanımlamak yerine protokolü kullanarak olası bir yaklaşımdan bahsediyor.

Ancak elbette, bundan bağımsız olarak erişimi olabildiğince kısıtladığınızdan emin olmalısınız (yani kök girişi yok, eğer varsa, atanan gruba erişimi kısıtlayın, anahtar çiftleri gerektirir). SSH güvenli olacak şekilde tasarlanmıştır - ve tarihsel olarak ana akış uygulamalarında nispeten az sayıda güvenlik açığı bulunmaktadır. Saldırıların başarılı olmasının nedeni genellikle tahmin edilebilir kullanıcı adları, basit şifreler ve kaba kuvvet saldırıları veya sosyal mühendislik kombinasyonudur. Karmaşık bir parola doğrulaması (minimum uzunluk dışında) uygulamanızı veya kullanıcıların şifrelerini değiştirmeye devam etmelerini istediğinizi savunmuyorum, daha iyi yaklaşımlar (örneğin iki faktörlü), ancak ne yazık ki çok az uygulama var.

7
symcbean

Birkaç yıl içinde liman vuruşu yapmadım, ancak prensipte önemli ölçüde değişmediğinden şüpheleniyorum. Diğer yorumlar birçok geçerli puan içeriyor ve burada tekrar etmeyeceğim.

Her zaman bir konu olarak uyguladığım port vuruntusunun bir yönü, vuruntu dizisini geçerli tarih ve saat gibi sözde rastgele ama tekrarlanabilir bir değere dayandırmaktır. Bu strateji, toptan satışın bir tekrar saldırı tehlikesini ortadan kaldırmaz, ancak belirli bir vuruntu dizisinin maruz kalmasını sınırlar. Açıkçası bunun başarılı olması için benim örneğimde tutarlılık için kaynak gerekli olacaktır.

4
Tok

Port Knocking sadece bir düz metin şifresidir. Diğer düz metin parolaları gibi kaba zorlamalı, keşfedilebilir, yakalanabilir ve tekrar oynatılabilir. Telnet girişlerini neden yeniden icat ettiniz?

Bir şeye güvenmelisin. Bu nedenle, işletim sistemi ağ yığınınıza güvendiğinizi varsayalım ve gecikmeli sıkıştırma, ayrıcalık ayırma ile çalışırken sshd'ye güveniyorsunuz ve sadece makul bir şekilde iki faktörlü kimlik doğrulamaya izin veriyor (örneğin, anahtar tabanlı).

Daha karmaşık, savunmasız hizmetlerinizi korumak için authpf'yi çağıran sshd gibi "basit" hizmetleri kullanabilirsiniz.

authpf, güvenlik duvarı kural kümelerinizi sshd'ye karşı kimlerin kimliğini doğruladığına bağlı olarak değiştirmenize olanak tanır, bu nedenle yalnızca ssh ağ geçitlerinizde oturum açmayı yöneten IP adreslerinin derleme/hesaplama/veritabanı çiftliğinize bağlanmasına izin verilir.

2
Alex Holst