SSH sunucusunu nasıl sertleştirirsiniz?

119

SSH sunucumun etrafındaki güvenliğin kesinlikle sızdırmaz olduğundan emin olmak için ne gibi önlemler alabilirim?

Bu, başlangıçtan itibaren topluluk vikisi olacak, dolayısıyla kullanıcıların sunucularını güvenli hale getirmek için neler yaptığını görelim.

    
sordu LassePoulsen 30.01.2015 17:27

13 cevap

21

Doğru giriş bilgilerini sağlama konusunda başarısız olan sshd bloğu istemcisinin IP'lerini hazırlayın " DenyHØsts " bu işi oldukça etkili bir şekilde yapabilir. Tüm Linux kutularında büyük bir yerden erişilebilen bir şekilde kurulu.

Bu, SSHD üzerindeki kuvvet saldırılarının etkili olmayacağından emin olacak, ancak (!) bu şekilde, eğer şifrenizi unutursanız kendinizi bu şekilde kilitleyebileceğinizi unutmayın. Bu, erişemediğiniz uzak bir sunucuda bir sorun olabilir.

    
verilen cevap LassePoulsen 10.06.2016 23:17
100

Şifreler yerine kimlik doğrulama için genel / özel anahtar çiftlerini kullanın.

  1. Sunucuya erişmesi gereken her bilgisayar için parola korumalı bir SSH anahtarı oluşturun:

    ssh-keygen

  2. İzin verilen bilgisayarlardan genel anahtar SSH erişimine izin ver:

    Her bilgisayardaki ~/.ssh/id_rsa.pub içeriğini sunucudaki ~/.ssh/authorized_keys bireysel satırlarına kopyalayın veya erişim izni verdiğiniz her bilgisayarda ssh-copy-id [server IP address] çalıştırın (sunucu parolasını girmeniz gerekir) istemi).

  3. SSH erişimini devre dışı bırak:

    /etc/ssh/sshd_config dosyasını açın, #PasswordAuthentication yes yazan satırı bulun ve PasswordAuthentication no olarak değiştirin. Değişikliği uygulamak için SSH sunucusu arka planını yeniden başlatın ( sudo service ssh restart ).

Artık, SSH'ye sunucuya girmenin tek yolu, ~/.ssh/authorized_keys cinsinden bir satırla eşleşen bir anahtar kullanmaktır. Bu yöntemi kullanarak I , kaba kuvvet saldırılarını umursamıyor çünkü şifremi tahmin etseler bile reddedilecek. Bir kamu / özel anahtar çifti elde etmek imkansızdır. bugünün teknolojisi ile.

    
verilen cevap Evan Kroske 08.06.2016 02:31
67

Öneririm:

    Kaba zorla giriş girişimlerini önlemek için fail2ban ’ı kullanın.

  • SSH ile root olarak giriş yapılmasını devre dışı bırakma. Bu, bir saldırganın hem kullanıcı adını hem de şifreyi daha zor hale getirmesi gerektiğini ifade eder.

    PermitRootLogin no 'nizi /etc/ssh/sshd_config dosyanıza ekleyin.

  • SSH'yi sunucuya ayırabilecek kullanıcıları sınırlandırın. Ya grup ya da sadece belirli kullanıcılar tarafından.

    Sunucuya kimlerin SSH atabileceğini sınırlamak için AllowGroups group1 group2 veya AllowUsers user1 user2 ekleyin.

verilen cevap Mark Davidson 08.06.2016 02:07
22

Diğer yanıtlar güvenliği sağlar, ancak günlüklerinizi daha sessiz hale getirecek ve hesabınızın kilitlenmesini daha az olası kılacak bir şey var:

Sunucuyu bağlantı noktası 22'den diğerine taşıyın. Ağ geçidinizde veya sunucuda. ​​

Güvenliği artırmaz, ancak tüm rasgele internet tarayıcılarının dosyalarınızı dağıtmadığı anlamına gelir.

    
verilen cevap Douglas Leeder 08.06.2016 02:15
21

HOTP veya TOTP . Bu 13.10'dan itibaren mevcuttur.

Bu, başka bir yanıtta olduğu gibi parola kimlik doğrulaması üzerinden genel anahtar kimlik doğrulamasını kullanmayı içerir, ancak kullanıcının kendi özel anahtarına ek olarak ikinci faktör aygıtını da kullandığını kanıtlamasını gerektirir.

Özet:

  1. sudo apt-get install libpam-google-authenticator

  2. Her kullanıcının google-authenticator değerini oluşturan ~/.google-authenticator komutunu çalıştırmasını sağlayın ve iki faktörlü cihazlarını yapılandırmasına yardımcı olun (ör. Google Authenticator Android uygulaması).

  3. /etc/ssh/sshd_config değerini düzenleyin ve ayarlayın:

    ChallengeResponseAuthentication yes
    PasswordAuthentication no
    AuthenticationMethods publickey,keyboard-interactive
    
  4. Değişikliklerinizi sudo service ssh reload 'ye almak için /etc/ssh/sshd_config ' yi çalıştırın.

  5. /etc/pam.d/sshd değerini düzenleyin ve satırı değiştirin:

    @include common-auth
    

    auth required pam_google_authenticator.so
    

Farklı yapılandırma seçenekleriyle ilgili daha fazla ayrıntı, geçen yılki blog gönderimim: Ubuntu'da daha iyi iki faktör ssh kimlik doğrulaması .

    
verilen cevap Robie Basak 23.05.2017 00:29
19

İşte yapmanız gereken tek şey: ufw 'yi ("karmaşık olmayan güvenlik duvarı") yükleyin ve gelen bağlantıları sınırlamak için bunu kullanın.

Bir komut isteminden şunu yazın:

$ sudo ufw limit OpenSSH 

ufw kurulu değilse, bunu yapın ve tekrar deneyin:

$ sudo aptitude install ufw 

Birçok saldırgan, SSH sunucunuzu kaba kuvvet şifrelerini kullanmaya çalışır. Bu sadece aynı IP adresinden her 30 saniyede 6 bağlantıya izin verecektir.

    
verilen cevap mpontillo 15.08.2010 00:45
12

Biraz daha fazla güvenliğe sahip olmak veya SSH sunucularına bazı kurumsal ağlarda erişmem gerekirse, bir gizlendim Tor adlı anonimleştirme yazılımını kullanarak servis .

  1. Tor yükleyin ve SSH sunucusunu kendiniz kurun.
  2. sshd'nin yalnızca localhost 'da dinlendiğinden emin olun.
  3. /etc/tor/torrc dosyasını aç. % Co_de% ve HiddenServiceDir /var/lib/tor/ssh değerini ayarlayın.
  4. HiddenServicePort 22 127.0.0.1:22 dizinine bakın. % Co_de% gibi bir ad var. Bu gizli servisin adresi.
  5. var/lib/tor/ssh/hostname dosyasını açın ve bazı satırları ekleyin:

    Host myhost
    HostName d6frsudqtx123vxf.onion
    ProxyCommand socat STDIO SOCKS4A:127.0.0.1:%h:%p,socksport=9050
    

Ayrıca yerel sunucumda Tor'a ihtiyacım var. Yüklüyse d6frsudqtx123vxf.onion yazabilirim ve SSH Tor üzerinden bir bağlantı açar. Diğer taraftaki SSH sunucusu, portunu sadece localhost üzerinde açar. Yani hiç kimse "normal internet" ile bağlantı kuramaz.

    
verilen cevap qbi 08.06.2016 02:10
8

Bu konuda bir Debian Yönetimi makalesi var. Temel SSH sunucu yapılandırmasını ve ayrıca güvenlik duvarı kurallarını kapsar. Bu da bir SSH sunucusunu sertleştirmek için ilgi çekici olabilir.

Makaleye bakın: SSH erişimini güvende tutun .

    
verilen cevap Huygens 12.10.2010 00:35
6

SSH sertleştirmeye yaklaşımım ... karmaşık. Aşağıdaki öğeler, ağlarımın kenarlarının en kenarından sunucuların kendilerine nasıl yaptıklarıyla ilgilidir.

  1. IDS / IPS yoluyla trafiğin sınırda filtrelenmesi, bilinen servis tarayıcıları ve engelleme listesinde imzalarla. Bunu, güvenlik duvarı üzerinden Snort ile gerçekleştirdim (bu benim yaklaşımım, bir pfSense. cihaz). Bazen, VPS'lerle olduğu gibi bunu yapamam.

  2. SSH bağlantı noktalarının güvenlik duvarı / ağ filtrelenmesi. Açıkça, yalnızca belirli sistemlerin SSH sunucularına ulaşmasına izin veriyorum. Bu, ağımın kenarındaki bir pfSense güvenlik duvarı üzerinden veya her sunucudaki güvenlik duvarları açıkça yapılandırılmadan yapılır. Bununla birlikte, bunu yapamayacağım durumlar var (güvenlik duvarlarının test edilmesine yardımcı olmayacağı özel kalem testi veya güvenlik testi laboratuvar ortamları hariç olmak üzere, neredeyse hiçbir zaman geçerli değildir).

  3. pfSense'imle veya bir iç güvenlik duvarı NAT ile ve İnternetten ve sistemlerden ayrılarak VPN-Sadece Sunuculara Erişim ile bağlantılı olarak. Sunuculara ulaşmak için ağlarıma VPN vermeliyim, çünkü internete bakan portlar yok. Bu kesinlikle tüm VPS'lerim için çalışmaz, ancak # 2 ile bağlantılı olarak, bir VPS'nin VPN tarafından o sunucuya 'ağ geçidi' olması ve sonra da diğer kutulara IP'leri olmasına izin verebiliyorum. Bu şekilde, tam olarak ne SSH'nin ne yapılacağını ya da yapamayacağını biliyorum - bir kutu VPN. (Ya da, ev ağımda pfSense'in arkasında, VPN bağlantım ve VPN erişimi olan tek kişi benim.)

  4. # 3 nerede yapılabiliyorsa, fail2ban, 4 başarısız denemeden sonra engellenecek ve IP'leri bir saat veya daha fazla engellenecek şekilde yapılandırılmış , sürekli olarak bruteforcing ile saldıran kişilere karşı iyi bir korumadır - sadece fail2ban ile otomatik olarak güvenlik duvarında em ve meh. Fail2ban'ı yapılandırmak bir acıdır ...

  5. SSH bağlantı noktasını değiştirerek bağlantı noktası tıkanıklığı. Bununla birlikte, bu ek güvenlik önlemleri de olmadan yapılması iyi bir fikir değildir - " Müstehcenlik yoluyla Güvenlik "birçok durumda reddedildi ve itiraz edildi. Bunu IDS / IPS ve ağ filtrelemesi ile birlikte yaptım, fakat hala kendi başına yapmam gereken çok kötü bir şey.

  6. ZORUNLU İki Faktörlü Kimlik Doğrulama, Duo Security'nin İki Faktörlü Kimlik Doğrulama çözümleri . Her biri SSH sunucularımın üzerinde yapılandırılmış Duo vardır, böylece 2FA istemleri gerçekleşir ve her erişimi onaylamanız gerekir. (Bu en önemli yardımcı özelliktir - çünkü birisinin parolamı veya parolası olsa bile, Duo PAM eklentilerini alamazlar). Bu, SSH sunucularımın yetkisiz erişimlerden en büyük korunmalarından biridir - her kullanıcı girişimi, Duo'da yapılandırılmış bir kullanıcıya bağlanmalıdır ZORUNLU ve kısıtlı bir setim olduğu için sistemde yeni kullanıcılar kaydedilemez.

İki sent'im SSH'yi güvenceye almak için. Ya da en azından yaklaşım konusundaki düşüncelerim.

    
verilen cevap Thomas W. 10.06.2016 23:14
1

FreeOTP uygulamasını Google Authenticator kullanmak yerine RedHat'ten kontrol etmek isteyebilirsiniz. Bazen uygulamayı güncellediğinizde, sizi kilitlerler! ; -)

Bir Yubikey veya bir eToken PASS veya NG gibi başka donanım belirtecini kullanmak istiyorsanız veya çok sayıda kullanıcınız veya bir çok sunucunuz varsa, bir open source iki faktörlü kimlik doğrulama arka ucunu kullanmak isteyebilirsiniz.

Son zamanlarda bir bu konuda nasıl yazdım .

    
verilen cevap cornelinux 08.06.2016 02:12
0

Son zamanlarda bunu yapmak için küçük bir öğretici yazdım. Temel olarak, PKI kullanmanız gerekiyor ve eğitmenim de daha fazla güvenlik için İki Faktörlü Kimlik Doğrulamanın nasıl kullanılacağını gösterir. Bunlardan hiçbirini kullanmasanız bile, zayıf şifreleme paketlerini ve diğer temel bilgileri kaldırarak sunucuyu güvenli hale getirme hakkında bazı bilgiler de vardır. İşte

    
verilen cevap 01000101 19.05.2015 15:52
0

Çok sayıda kullanıcı / sertifika için LDAP entegrasyonunu göz önünde bulundurun. Büyük kuruluşlar sertifikaları kimlik doğrulama veya e-posta imzalama için kullanıp kullanmadıklarına bakılmaksızın LDAP, kullanıcı kimlik bilgileri ve rozetlerde veya sertifikalarda depolanan sertifikalar için bir depo olarak kullanır. Örnekler arasında openLDAP, openDJ, Active Directory, Oracle Evrensel Dizin, IBM Directory Server, snareWorks ...

Bilgisayarlar ve gruplar LDAP'de merkezi kimlik yönetimi sağlayarak yönetilebilir. Bu sayede masaların büyük popülasyonlarla başa çıkabilmesi için bir durak dükkanı olabilir.

İşte centOS entegrasyonuna bir bağlantı: İşte

    
verilen cevap weller1 29.04.2016 15:50
0

Ayrıca, coğrafi ülke veritabanını kullanarak kaynak ülkeye göre de engelleyebilirsiniz.

Temelde ABD’de yaşıyorsanız, Rusya’daki bir kişinin SSH’nize bağlanması için herhangi bir sebep yoktur, bu yüzden otomatik olarak engellenir.

Komut dosyası burada bulunabilir: İşte

Ayrıca, iptables komutlarını (damlacıklar için yaptım) otomatik olarak o trafiğe / o IP'lerden tüm trafiği bırakmak için de ekleyebilirsiniz.

    
verilen cevap Michael A Mike 10.08.2017 07:09

Etiketlerdeki diğer soruları oku