SSH arka plan programı ile ilgili olası güvenlik sorunları nelerdir?


14

Dışarıdan Ubuntu 10.04 ofis bilgisayarım için SSH yapabilmek istiyorum. Bu yüzden PC'de bir SSH arka plan programı başlatmayı düşünüyorum. Güvenlik sorunları, olası aksaklıklar, özel yapılandırma ayarları vb. Nelerden haberdar olmalıyım?

Önemli olması halinde: bu sadece kendi kullanımım için, onu kullanan başka insanlar olacağını sanmıyorum; çoğunlukla Windows 7 / Vista / XP ortamında bir Ubuntu 10.04 PC.


1
Ssh bağlantınız için OpenVPN'i de kurmayı ve bilgisayarınıza bir VPN tüneli oluşturmayı düşünebilirsiniz. Bu şekilde ssh portunuzu dünyaya açmanıza gerek kalmaz.
Linker3000

@ Linker3000 Teşekkürler! Bir düşünce vereceğim --- bir süre önce VPN ile oldukça hoş olmayan bir deneyimim olmasına rağmen.
ev-br

@Zhenya "@" adınızı ve kullanıcı adınızı boşluk bırakmazsanız, bunları yanıtladığınıza dair bir bildirim alırsınız. ;) Bu yüzden @Zhenya kullandığımda yorum alacaksınız, ancak @ Zhenya kullandığımda yorum
yapmayacaksınız

@Zhenya Ve şimdi tekrar yapıyorsun XD
BloodPhilia

@Linker, OpenVPN'in neden SSH'den daha güvenli olduğundan biraz bahsedebilir misiniz?
Arjan

Yanıtlar:


20

En büyük endişe, SSH üzerinden bilgisayar yöneticisi olarak giriş yapan kişiler olacaktır. Bu, tahmin edilmesi kolay bir parolanız varsa kaba kuvvetle yapılabilir.

Alabileceğiniz birkaç güvenlik önlemi vardır, aşağıda bir SSH sunucusu kurarken her zaman aldığımlardan bazıları ve bazı ekstralar vardır.

  1. En az (büyük) 10 büyük ve küçük harf, rakam ve diğer karakterlerden oluşan güçlü bir şifre kullanın.

  2. Kullanıcıları ana dizinlerine hapsedin. Hapishanedeki kullanıcılar ana dizininin dışındaki dosyalara erişemez / bu dosyaları düzenleyemez. Böylece, kullanıcınız önemli sistem dosyalarına erişemez / düzenleyemez. Bir kullanıcıyı nasıl hapse atacağınız konusunda birçok öğretici çevrimiçi olarak bulunabilir. Çoğu JailKit kullanıyor . Böyle bir öğreticiye bir örnek burada bulunabilir . Alternatif olarak, OpenSSH sunucusunun yerel ChrootDirectoryyönergesini de kullanabilirsiniz . Bununla ilgili bir eğiticiye bir örnek burada bulunabilir .

  3. Fail2Ban'ı yükleyin . Fail2Ban, kimlik doğrulama günlüklerini yanlış girişler için kontrol eden bir programdır. Belirli bir sınıra ulaşıldığında, belirli bir IP için önceden belirlenmiş bir süre için bir güvenlik duvarı bloğu ekler. Çeşitli çevrimiçi öğreticiler çevrimiçi SSH ile Fail2Ban nasıl kurulacağı hakkında da vardır bulundu vardır, bir örnek olacaktır bu bir . Fail2Ban ana sayfası da güzel ve eksiksiz NASIL belgeleri içerir.

  4. SSH üzerinden kök girişini devre dışı bırakın. Bu, sisteminizdeki hemen hemen her dosyaya erişimi olan kullanıcıdır, bu nedenle kabuk girişini devre dışı bırakmanız önerilir. Ubuntu'nun en son sürümlerinde, kök kullanıcı otomatik olarak devre dışı bırakılır, ancak yine de SSH erişimini devre dışı bırakmak zarar vermez. Bu, dosyayı düzenleyerek yapılır /etc/ssh/sshd_config. Line Aşağıdaki satırı arayın ve önünde # olmadığından emin olun.

    #PermitRootLogin no
    
  5. Standart olmayan bir bağlantı noktası kullanın (Örn. 22 değil) Bu, yönlendiricinizdeki bağlantı noktası iletme (22 -> 22 yerine 16121 -> 22) veya SSH arka plan programının farklı bir bağlantı noktasını dinlemesiyle yapılır. Bu, SSH hizmetinizi kötü niyetli kullanıcılar için daha az kolayca algılanabilir hale getirir. Bu, dosyayı düzenleyerek yapılır /etc/ssh/sshd_config. Line Aşağıdaki satırı arayın ve 22'yi istediğiniz bağlantı noktasına değiştirin. Daha sonra yönlendiricinizdeki doğru bağlantı noktasını iletmeyi unutmayın.

    Port 22
    
  6. Oturum açmak için parola kullanmayın. SSH, parolaların yanı sıra özel anahtarlar kullanarak oturum açmaya da izin verir. Bu, bilgisayarınızda SSH makinesinin SSH'sine eriştiğiniz bir anahtarın depolandığı anlamına gelir. Bir bağlantı denendiğinde, SSH istemcisi anahtarı şifre doğrulaması yerine sunucuya oturum açmak için kullanır. Kimlik doğrulama anahtarları şifreli olarak şifrelerden çok daha güçlüdür ve bu nedenle kırılması o kadar kolay değildir. Çeşitli çevrimiçi öğreticiler çevrimiçi SSH ile Anahtar tabanlı kimlik doğrulamayı nasıl kurulacağı hakkında da vardır bulundu vardır, bir örnek olacaktır bu bir . (PuTTY içeren pencerelerden SSH kullanıyorsanız, bu bağlantıyı bir PuTTY howto için kontrol edin .) Anahtar tabanlı kimlik doğrulamayı ayarladıktan sonra, dosyayı düzenleyerek parola kimlik doğrulamasını devre dışı bırakabilirsiniz /etc/ssh/sshd_config. Aşağıdaki satırı arayın ve önünde # olmadığından emin olun.

    #PasswordAuthentication no
    
  7. İsteğe bağlı olarak, @ Linker3000 yorumunda belirtildiği gibi, SSH üzerinden erişmek istediğiniz PC için bir VPN tüneli ayarlayabilir ve ardından SSH sunucusundaki yerel olmayan ağ erişimine izin vermeyebilirsiniz . Bu şekilde, VPN bağlantısı olmayan hiçbir harici cihaz SSH sunucunuza erişemez. Bu, TÜM ana bilgisayarları reddedip ardından yalnızca yerel ağ IP'lerinin oturum açmasına izin verilerek yapılabilir. Bu, /etc/hosts.denyaşağıdakileri düzenleyerek ve ekleyerek yapılır :

    sshd: ALL
    

    ve /etc/hosts.allowaşağıdakileri eklemek için:

    sshd: 192.168.1.*
    

    IP, yerel ağınızla eşleştiğinde. *bir joker karakter olduğundan, ile başlayan tüm IP adresleri 192.168.1.kabul edilir. Bu işe yaramazsa dağıtımınız sshbunun yerine kullanabilir sshd. Bu durumda, denemelisiniz ssh: 192.168.1.*ve ssh: ALLonun yerine.

  8. Yalnızca belirli ana bilgisayarlara izin verebilir , 6'da /etc/hosts.allowve ile aynı işlemleri yapabilirsiniz /etc/hosts.deny, ancak /etc/hosts.allowaşağıdaki satırı ve her ana makinenin boşluklarla ayrılmasına izin verecek şekilde ekleyin:

    sshd: {IP OF HOST TO ALLOW 1} {IP OF HOST TO ALLOW 2} {IP OF HOST TO ALLOW 3} {ETC.}
    
  9. Yalnızca belirli kullanıcıların SSH sunucunuza erişmesine izin verin. Bu, dosyayı düzenleyerek yapılır /etc/ssh/sshd_config. Line Aşağıdaki satırı arayın ve önünde # olmadığından emin olun. Yoksa, oluşturun. Örneğin, yalnızca john, tom ve mary'ye izin vermek istiyorsanız, bu satırı ekleyin / düzenleyin:

    AllowUsers john tom mary
    

    Örneğin, john, tom ve mary'ye erişimi reddetmek istiyorsanız, bu satırı ekleyin / düzenleyin: Belirli kullanıcıları da reddedebilirsiniz:

    DenyUsers john tom mary
    
  10. SSH2 protokolüne yalnızca gelen bağlantılar için izin verin. SSH protokolünün iki sürümü vardır. SSH1 güvenlik sorunlarına tabidir, bu nedenle SSH 2 kullanılması önerilir. Bu, dosyayı düzenleyerek zorlanabilir /etc/ssh/sshd_config. Line Aşağıdaki satırı arayın ve önünde # olmadığından emin olun. Yoksa, oluşturun.

    Protocol 2,1
    

    çıkarın, böylece çizgi olacak

    Protocol 2
    
  11. Kullanıcıların şifre ayarlanmamış giriş yapmasına izin verme. Bu, dosyayı düzenleyerek zorlanabilir /etc/ssh/sshd_config. Line Aşağıdaki satırı arayın ve önünde # olmadığından emin olun. Yoksa, oluşturun.

    PermitEmptyPasswords no
    
  12. Ve basit ve belki de söylemeye gerek yok, ancak birçok durumda çok önemli olduğu kanıtlanmış olsa da, yazılımınızı güncel tutun. Yüklü paketlerinizi / yazılımınızı düzenli olarak güncelleyin.


= SSH yapılandırma dosyasını düzenledikten sonra, değişiklikleri uygulamak için arka plan programını yeniden başlatmayı unutmayın. Daemon'u aşağıdaki işlemleri uygulayarak yeniden başlatın:

sudo /etc/init.d/ssh restart

veya

sudo /etc/init.d/sshd restart

hangi Linux dağıtımını kullandığınıza bağlı olarak.


2
sudo service ssh restartUbuntu üzerinde.
ulidtko

@ulidtko Bu soru daha genel bir soru ile birleştirildi, bu yüzden cevabımı daha genel ve farklı dağıtımlar için uygun hale getirdim. Bu hemen hemen tüm dağıtımlarda işe yarayacaktır, ancak haklısınız.
BloodPhilia

@BloodPhilia Bu kadar ayrıntılı ve erişilebilir bir cevap için çok teşekkürler! Puanlarınızla ilgili birkaç soru daha: 1. Kullanıcıları sadece izinleri kısıtlamaktan alıkoymanın avantajı nedir? Diyelim ki, 'kullanıcı' olarak giriş yapıyorum Sadece / evimin dışındaki şeylere okuma erişimim var, ancak yazma veya yürütme erişimi yok [sanırım Ubuntu varsayılanına göre]. Hapishaneden daha iyi / kötü mü? 2. Kimlik doğrulama günlükleri normalde nerede bulunur? Bunları manuel olarak / grep aracılığıyla arada bir incelemek istiyorum.
ev-br

@BloodPhilia 4. Eğer sshd'nin bir sunucudaki standart olmayan bir bağlantı noktasını dinlemesini sağlarsam, örneğin 1234, o zaman bu sunucuya bir istemcideki bir linux komut satırından bağlanmanın yolu nedir? Yani, standart bir ssh komutunun bir çeşit anahtara ihtiyacı var mı?
ev-br

1
@ulidtko: Upstart ile sudo restart ssh.
Merhaba71

7

Birkaç ipucu:

  1. Parolalardan YOL daha güvenli olan Anahtar tabanlı kimlik doğrulamayı kullanın
  2. Yalnızca SSH 2
  3. Kök girişlerini devre dışı bırak
  4. Paranoyak için portu standart port 22'den değiştirin
  5. Kolaylık sağlamak için IP'nizi Dyndns veya ilk gibi bir DNS adıyla eşlemek için bir araç kullanın. Aynı IP ile uzun bir süre gidebilirsiniz, ancak bir kez seyahat ve ihtiyaç duyduğunuzda, yeni bir tane yayınlandığını göreceksiniz.
  6. Tabii ki, güvenlik duvarınızdan yalnızca SSH için gereken bağlantı noktasına (bağlantı noktası 22 veya isterseniz standart olmayan) izin verin.

1
Ynt 5: Evinizin dışındaki bir makinede e-posta hesabınız varsa, ev makinenizden bu adrese düzenli olarak bir mesaj göndermek için bir cron işi ayarlayabilirsiniz. Ev IP adresiniz başlıklarda olacaktır. DNS kadar kullanışlı değil, ancak kullanılabilir.
garyjohn

Ayrıca ISS'nize başvurabilir ve statik bir IP adresi için fiyat isteyebilirsiniz. Bu, şimdiye kadarki en basit çözümdür, ancak genellikle dinamik bir
DNS'den

2

Ana risk, bir ssh sunucusu çalıştırdığınızı ve bir hesaba zayıf bir şifre koyduğunuzu unutmaktır. Orada ortak hesap isimlerini ( webmasterve gibi bob) ve zayıf şifreleri sistematik olarak deneyen saldırganlar var . Sen şifre oturumların yasaklayarak bu riski ortadan kaldırmak (koyabilirsiniz PasswordAuthentication noiçinde sshd_configve ayrıca koymak ya UsePAM Nossh için PAM ayarlarında veya devre dışı bırakmak parola kimlik doğrulaması). Bir ara ölçüsü ile kullanıcıların beyaz listeye ssh oturumların kısıtlamak etmektir AllowUsersveya AllowGroupsiçinde sshd_config.

Şifre girişlerine izin vermenin kendi başına bir güvenlik sorunu olmadığını unutmayın. Zayıf parolalar ve snooped parolalar sorunlardır ve ssh sunucusunda parola kimlik doğrulamasına izin vermek bir etkinleştiricidir. Parola gözetlemesine karşı korumak için, parolanızı asla tam olarak güvenmediğiniz bir makineye yazmayın (ancak bir makineye güveniyorsanız, üzerine özel bir anahtar da yükleyebilirsiniz ve parola doğrulamasına ihtiyacınız yoktur).

Bir makinede ssh istemcisi kullanmanın asgari şartı, ssh iletişiminin etkin bir şekilde ele geçirilmeyeceğine güvenmenizdir (istemci makinede çalışıyorsa ortadaki bir adam saldırısı mümkündür - sizce bozulmamış bir ssh istemcisine komutlar yazıyorsunuz, ancak istemci aslında kimlik doğrulama verilerinizi sadık bir şekilde iletiyor, ancak daha sonra iletişime bir truva atı ekliyor). Bu, bir şifre snooper olmayacağına güvenmekten daha zayıf bir gerekliliktir (genellikle bir keylogger aracılığıyla gerçekleştirilir, ancak omuz sörfü gibi daha az otomatikleştirilmiş yöntemler vardır). Minimum güvene sahipseniz ancak hala meraklı kişilerden korkuyorsanız, bir defalık şifreleri kullanabilirsiniz (OpenSSH, PAM desteği ile bunları destekler).

Elbette, kontrolünüz dışındaki makinelerle (yalnızca ağ sunucuları değil, istemciler) etkileşimde bulunan diğer programlar gibi, güvenlik güncellemelerine de uymalısınız.


2

Aklıma üç şey geldi:

  1. Varsayılan bağlantı noktası 22'yi açarsanız, çok yakında algılanır ve PC'niz kaba kuvvet saldırıları tarafından dövülür. Sshd'yi başka bir bağlantı noktasını dinlemek veya güvenlik duvarınızda bağlantı noktası eşlemesi yapmak için yapılandırmanızı öneririm. Bu sihirli bir mermi olmasa da, en azından aynı CPU döngülerini kurtaracaktır.

    Bağlantı Noktası 12345

  2. Parola kimlik doğrulamasını açıkça devre dışı bırakın ve yalnızca anahtarları kullanın. Herhangi bir anahtar, hatırlayabileceğiniz en karmaşık şifreden daha iyi olacaktır.

    Parola Doğrulama no

  3. Ubuntu'da kök kullanıcı varsayılan olarak devre dışı bırakılmış olsa da, kök girişini açıkça devre dışı bırakın

    PermitRootLogin no

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.