Güvenlik duvarının arkasındaki Linux makinesine uzaktan erişim


11

Bir Linux makinesini uzak bir yerde bir tür genel terminal olarak dağıtacağım. Bakım için SSH aracılığıyla uzaktan erişmek istiyorum, ancak bu makineye erişmem gereken nadir durumlar için uzak güvenlik duvarında bir bağlantı noktasını açık tutmak istemiyorum. Ben dışarıdan bir makineye bir ters SSH tüneli oluşturmak için basit bir komut dosyası hakkında düşündüm, ama ben erişmek için gerektiğinde bir şey yapmak zorunda bir kullanıcı olması gerekmez. Herhangi bir fikir?

Güncelleme: Ters ssh tüneli oluşturmak için orijinal senaryo planımla gitmeye karar verdim. Bağlantı noktası vurma gibi diğer önerilen çözümler, gerçekten yapmak istediğim şeylerin çizgileri boyunca daha fazla olsa da, bu durumda, yönlendiriciyi yapılandırmak için bir yapılandırma aracılığıyla bir kullanıcıyı yürümek dışında herhangi bir erişimim yok. titreme


Yönlendiriciyi yapılandırmanız gerekmez. Linux, güvenlik duvarı güvenliği için yeterli olan iptables güvenlik duvarına sahiptir. Ve sunucuya her zaman ssh tüneli açmak, bağlandığı ana bilgisayarı atmak için saldırıya karşı savunmasız hale getirir.
Kazimieras Aliulis

1
Linux kutusuna ihtiyaç duyduğum her şeyi iletmek için yönlendiricideki bir bağlantı noktasını açmak zorunda kalacaktım. Ssh tüneli her zaman açık değildir. Makineye erişmem gerektiğinde sona eren bir kullanıcı aat tarafından başlatılacak.
baudtack

Yanıtlar:


5

Bir limanın açık olmasıyla ilgili daha az, bir limanı açma işlemi sırasında bir kullanıcıyı yürümek istememekle daha fazla ilgisi vardır. Ne yazık ki bu yönlendiriciye hiçbir erişimim yok.

Yönlendiriciyi değiştirmek tamamen söz konusu değilse, Hamachi gibi bir P2P veya VPN çözümüne bakmanız gerekebilir . Sistemi başlangıçta VPN bağlantısını otomatik olarak kuracak şekilde ayarlarsanız, ihtiyacınız olduğunda bağlanabilmeniz gerekir. Hamachi sizin için tüm güvenlik duvarı pazarlığını yapar. Tek dezavantajı, bağlamanız gerektiğinde işlevsel ve Hamachi sunucularına güvenmeniz gerektiğidir.

Her zaman açık olan bir sunucunuz varsa , uzak sistemin her zaman bir tüneli açık tutması ve sunucunuza bağlı kalması için autossh ayarlayabilirsiniz . Tek dezavantajı uzak sistem tehlikeye onlar saldırgan ssh oturumu oluşturmak için kullanılan anahtarları alacaksınız. Ssh bağlantısını kabul eden sisteminizin kilitli kalmasını sağlamak çok önemlidir.


Aşağıda benim orijinal cevabım, yönlendiriciyi güncellemenin bir seçenek olduğunu varsaymıştım.

Güvenlik duvarınızın destekleyip desteklemediğini araştırmak isteyebileceğiniz bir çözüm, bağlantı noktası vurmadır . Bazı güvenlik duvarlarında, güvenlik duvarının fark ettiği ve ardından geçici olarak güvenlik duvarı üzerinden delik açtığı özel bir paket kümesi göndermek mümkün olmalıdır.

Bazıları diğerlerinden daha iyi birçok uygulama vardır. Bazıları, doğru anahtarları olmayan bir kişinin doğru vuruşu göndermesini neredeyse imkansız hale getirmek için güçlü kriptografi kullanır.


Bu harika bir fikir gibi geliyor! Ne yazık ki söz konusu güvenlik duvarı sadece basit bir tüketici sınıfı Linksys veya eşdeğeri.
baudtack

1
Eğer dd-wrt kurabilirseniz knockd ( dd-wrt.com/wiki/index.php/Knockd ) kullanabilirsiniz
Zoredache

@Zoredache Doğru, ama bu uzak bir yerde. Bu yönlendiriciye erişimim yok ve bir kullanıcı bir dd-wrt yüklemesi ile yürümeye çalıştığım düşüncesiyle titriyorum.
baudtack

Ben dd-wrt yüklemek için yönlendiriciye fiziksel erişim olması koşuluyla, muhtemelen bu kurmak için doğru yolu olduğunu kabul ediyorum.
baudtack

Hamachi, LogMeIn tarafından satın alındığından beri Linux kullanıcıları için derin bir düşünce göstermiştir. Linux makineleri hamachi ağımın bir parçası olduğunda ürünü güvenilir bulmuyorum.
bmb

6

Bağlantı noktası 22'yi internete erişilebilir bırakmaktan endişe etmem, ancak güvenliğini sağlamak için bazı adımlar atardım.

Öncelikle, klavye etkileşimli kimlik doğrulamasını devre dışı bırakın ve ssh tuşlarına geçin.

İkincisi, böyle bir şey yüklemek fail2ban repeatably makinenizi sonda IP adreslerini blackball için uzak sunucuda. Kurulum ssh anahtarlarınız olduğundan, yetkili kullanıcılar için kimlik doğrulama hatası olmamalıdır.

Alternatif olarak, WerkkreWs tavsiyesini alın ve makinenin önündeki güvenlik duvarını bir vpn bağlantısını sona erdirecek şekilde yapılandırın, ardından yalnızca uzak sunucudaki ssh arka plan programının o vpn üzerinden gelen bağlantıları kabul etmesine izin verin.

Alternatif olarak, güvenlik duvarınız vpn bağlantısını sonlandıramazsa, GRE veya IPSEC paketlerini linux makinenize iletebilir ve orada sonlandırabilirsiniz.


Bir limanın açık olmasıyla daha az ilgisi ve bir limanı açma işlemi sırasında bir kullanıcıyı yürümek istememesi ile daha fazla ilgisi vardır. Ne yazık ki bu yönlendiriciye hiçbir erişimim yok.
baudtack

Acınızı anlıyorum ve sempati duyuyorum.
Dave Cheney

2
Bu çözümdeki ilk adım, sshd'yi standart olmayan bir bağlantı noktasında çalışacak şekilde yapılandırmak olacaktır. Orada port 22 üzerinde çalıyor botlar bir sürü vardır. / Etc / services adresinde görünmeyen ve "nmap HOST" bağlantı noktasını bulamayan bir bağlantı noktası seçin.
hayalci

4

Knockd arıyorsunuz gibi geliyor

Bunu linux sunucusunun kendisine, iptables ile kurabilirsiniz, böylece bir tür 2. seviye güvenlik duvarı gibi. Ön uç güvenlik duvarında 22 numaralı bağlantı noktası açık olsa bile, sunucuda açık olmaz, bu nedenle bağlantı noktaları herhangi bir açık bağlantı noktası görmez. Sonra "gizli vuruşu" gönderdiğinizde, birdenbire 22 numaralı bağlantı noktasına giden açık bir yolunuz olur.

bu mantıklı mı?


Yanılmıyorsam, tüm vuruş portlarını da iletmek zorundayım değil mi? Birisi yönlendiriciyi taradığında bu açık olmaz mı? Siparişi bilmiyorlardı, ancak olası kombinasyonları 6'ya düşürüyorum, permütasyonları doğru şekilde nasıl yapacağımı hatırlarsam, onlara büyük bir başlangıç ​​yapar. Yoksa yanlış mı düşünüyordum?
baudtack

Vuruntu için kullanılan portların iletilmesi gerekecek olsa da, nakavt çalışan ana bilgisayarın vuruntu kaynağına herhangi bir şekilde cevap vermesi gerekmez.
Zoredache

doğru - ilk güvenlik duvarında açık olan bağlantı noktaları 2.'de açık olmaz, bu nedenle tarayıcı için hepsi kapalı görünür. Vuruntu portlarını vurulmadan ayırmanın bir yolu yoktur.
Brent

3

Tüm cevapları özetlemek için:

ssh kullanın, ancak daha belirsiz ve güvenli hale getirin.

Güvenlik için:

  • Kök girişine izin verilmediğinden emin olun (PermitRootLogin no).
  • AllowUsers veya AllowGroups yapılandırma seçeneği ile giriş yapabilen kullanıcıları sınırlayın.
  • Yalnızca 2 sürüm ssh protokolü kullandığından emin olun (Protokol 2).
  • Yalnızca kimlik doğrulama anahtarlarının kullanılması önerilir, ancak kimlik doğrulama anahtarlarına erişiminizin olmadığı tatilden sunucuya bağlanma ihtiyacı olduğunda şifre daha uygundur.

Belirsizlik için:

  • Ssh portunu 20486 gibi hatırlayacağınız bazı rastgele yüksek portlarla değiştirin.
  • Bağlantı noktasına bağlanma yeteneğini gizle. Bunun bir yolu, diğer yanıtlarda belirtilen port çalmadır, ancak her yerde erişilemeyen özel bir yazılıma ihtiyacınız vardır. Başka bir basit seçenek, sadece ikinci veya üçüncü denemede bağlanmaya izin verecek kural oluşturmak için yeni modüller ile iptables güvenlik duvarını kullanmaktır. Yani başarılı bir şekilde bağlanmak için birkaç kez denemeniz gerektiğini biliyorsunuz, ancak basit tüm port taraması ssh portunu ortaya çıkarmayacak. Kurallar aşağıdakilere benzer:


iptables -A INPUT -m tcp -p tcp --dport 20486 -m state --state NEW -m recent --set
iptables -A INPUT -m tcp -p tcp --dport 20486 -m state --state NEW  -m recent --rcheck --seconds 60 --hitcount 2 -j ACCEPT
iptables -A INPUT -m tcp -p tcp --dport 20486 -j DROP


+1 güzel özet ve çoklu deneme hilesi hakkında ilginç bir fikir.
David Z

2

Zamanlanmış görev, ters ssh tüneliniz için komut dosyası veya güvenlik duvarı bağlantı noktasını açın.

SSH'nin dünyaya açık olmasından endişe ediyorsanız, iptables komut dosyalarıyla bakım sürenizde görev zamanlayabilir ve yalnızca bağlantı noktasını kullanabilirsiniz.


1
Kabul. VPN'de bir yolunuz yoksa, tek gerçek çözüm temelde bir bağlantı noktası açmaktır. Bu konuda gerginseniz, her zaman standart olmayan bir bağlantı noktası kullanabilirsiniz.
WerkkreW

2

İçine bak liman-vurma SSH tüneli açmak.

Ayrıca, çok fazla kötü istek sonrasında insanları kilitlemek için denyhosts çalıştırın.

Her iki paket de standart Ubuntu, Fedora ve RHEL depolarında mevcuttur.


1

Devam edin ve bir port açın, onu normal aralığın dışında yapın. Korsanları 1024'ün üzerinde rastgele bir port haline getirirdim. Bu şekilde bilgisayar korsanlarının bile araması pek mümkün olmazdı.


0

Makineye uzaktan erişmeniz gerekiyorsa, ancak güvenlik duvarındaki deliği açmamanız için hiçbir neden yoktur.

Ancak, bağlantı noktasını yine de açmak istemiyorsanız (veya açamıyorsanız), basit bir kabuk komut dosyası, ters tüneli başlatma komutunu denetlediğiniz ve dinlediğiniz bazı Internet kullanılabilir kaynaklarını izleyebilir. E-posta hesapları, IRC kanalları ve web sayfaları hemen tetikleyici cihazlar olarak akla gelir.

Tabii ki, bu sadece limanı açmaktan çok daha kırılgan ve daha az güvenli. Ama eminim sebeplerin var.

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.