Att säkra SSH involverar ett brett utbud av möjliga tekniker, men alla är inte lika praktiska för alla miljöer. Rekommendationerna i den här artikeln är allmänt erkända, effektiva metoder som balanserar enkel implementering med robust skydd. De är hämtade från standarder som fastställts av organisationer som NIST, CERT och OpenSSH-projektet, och återspeglar kärnprinciper som SSL.com också tillämpar för att säkra digitala certifikat – att skydda nycklar, använda stark kryptering och begränsa privilegierad åtkomst.
När du har ställt in dessa grundläggande bästa praxis kan du utforska mer avancerade taktiker – som certifikatbaserad SSH, portknackning eller SSH över VPN – efter behov.
1. Använd nyckelbaserad autentisering istället för lösenord
Vad det är:
Du ersätter lösenordsinloggningar med ett kryptografiskt offentligt/privat nyckelpar. Den offentliga nyckeln går på din server, medan den privata nyckeln stannar på din lokala dator.
Varför det är säkrare:
- Lösenord är mottagliga för brute-force-attacker
- En angripare måste fysiskt skaffa din privata nyckel för att bryta sig in, vilket är mycket svårare än att gissa ett lösenord
Så här implementerar du:
Skapa ett nyckelpar
På Linux eller macOS, öppna en terminal och kör:
ssh-keygen -t ed25519
För extra säkerhet (om ed25519 inte är tillgängligt i din miljö) kan du använda:
ssh-keygen -t rsa -b 4096
Kopiera den publika nyckeln till din server
Du kan använda kommandot ssh-copy-id (på Linux/macOS) för att enkelt överföra din publika nyckel:
ssh-copy-id user@server_address
Om ssh-copy-id inte är tillgängligt, lägg till innehållet i filen id_ed25519.pub (eller id_rsa.pub) manuellt till serverns ~/.ssh/authorized_keys-fil.
Inaktivera lösenordsautentisering
I /etc/ssh/sshd_config, ställ in:
Lösenordsautentiseringsnr
Starta om SSH-tjänsten:
sudo systemctl omstart ssh
Precis som att hantera digitala certifikat säkerställer SSH-nyckelbaserad autentisering att endast någon med rätt privat nyckel kan upprätta en anslutning.
2. Inaktivera rotinloggning
Vad det är:
Hindra rotanvändaren från att logga in direkt via SSH.
Varför det är säkrare:
- Rotkontot har obegränsade privilegier och är ett attraktivt mål för angripare
- Inaktivering av direkt rotåtkomst tvingar angripare att gissa inte bara en nyckel eller ett lösenord utan också ett giltigt användarnamn
Så här implementerar du:
I /etc/ssh/sshd_config, hitta eller lägg till:
PermitRootLogin nr
Starta om SSH:
sudo systemctl omstart ssh
Detta steg begränsar effektivt din attackyta genom att ta bort det mest kraftfulla kontot från lätt räckhåll.
3. Genomför stark kryptering och MAC-algoritmer
Vad det är:
SSH låter dig specificera vilka chiffer och meddelandeautentiseringskoder (MAC) som ska användas för att kryptera data och verifiera dataintegriteten.
Varför det är säkrare:
- Äldre eller svaga algoritmer (t.ex. DES, RC4) kan vara sårbara för kryptografiska attacker
- Att använda moderna chiffer (som AES-256) och starka MAC:er (som HMAC-SHA2) hjälper till att hålla din sessionsdata konfidentiell och manipuleringssäker
Så här implementerar du:
I /etc/ssh/sshd_config, lägg till eller uppdatera din chiffer-/MAC-lista:
Chiffer aes256-ctr,aes192-ctr,aes128-ctr
MACs hmac-sha2-256, hmac-sha2-512
Starta om SSH:
sudo systemctl omstart ssh
Att hålla kryptografi uppdaterad för SSH är lika viktigt som att se till att säkra protokoll och chiffer används i TLS.
4. Håll SSH (och ditt system) uppdaterat
Vad det är:
Se till att OpenSSH, tillsammans med resten av ditt operativsystem, får regelbundna säkerhetskorrigeringar.
Varför det är säkrare:
- Föråldrad programvara innehåller ofta kända sårbarheter
- Angripare riktar sig ofta mot äldre versioner med oparpade utnyttjande
Så här implementerar du:
På Debian- eller Ubuntu-baserade system:
sudo apt-get update && sudo apt-get uppgradering
På CentOS, Fedora eller RHEL-baserade system:
sudo yum uppdatering
Se till att även leta efter firmwareuppdateringar om du kör SSH på nätverksapparater eller annan hårdvara.
5. Implementera tvåfaktors- eller multifaktorautentisering (2FA/MFA)
Vad det är:
Lägger till ett extra lager av säkerhet genom att kräva något utöver ett lösenord eller nyckel (t.ex. en engångskod på din telefon).
Varför det är säkrare:
- Även om angripare skaffar din SSH-nyckel behöver de fortfarande den andra faktorn för att logga in
- Hjälper till att försvara sig mot identitetsstöld
Så här implementerar du:
Installera och konfigurera ett MFA-verktyg
Till exempel, Google Authenticator kan installeras på Linux-servrar och ställas in som en PAM-modul (Pluggable Authentication Modules). Följ installationsinstruktionerna som är specifika för din distribution.
Redigera /etc/pam.d/sshd och /etc/ssh/sshd_config
- Aktivera Google Authenticator eller en annan MFA-modul
- Ställ in ChallengeResponseAuthentication ja och AuthenticationMethods offentlig nyckel, tangentbordsinteraktiv (eller vilken kombination som passar din miljö)
Starta om SSH:
sudo systemctl omstart ssh
6. Aktivera loggning och övervakning
Vad det är:
Fånga SSH-inloggningshändelser, spåra misstänkt aktivitet och få varningar när något är fel.
Varför det är säkrare:
- Intrångsförsök är ofta synliga i loggar som upprepade misslyckade inloggningar eller obehöriga åtgärder
- Tidig upptäckt innebär att du kan svara snabbt – blockera IP-adresser eller ändra konfigurationer innan skadan är skedd
Så här implementerar du:
Öka loggspråkighet
I /etc/ssh/sshd_config, ställ in:
LogLevel VERBOSE
Samlade loggar
- Verktyg som syslog, rsyslog, eller syslog-of hjälpa till att samla in och centralisera loggar
- A SIEM-lösning (Security Information and Event Management). kan erbjuda avancerad analys och varning
Använd verktyg för att förhindra intrång
fail2ban skannar loggfiler och förbjuder IP-adresser som visar skadliga tecken, som för många lösenordsfel.
7. Implementera åtkomstkontroller och begränsningar
Vad det är:
Begränsa vem som kan ansluta till SSH och varifrån, förhindra obehöriga eller överdrivna inkommande förfrågningar.
Sätt att göra det:
Brandväggsbegränsningar
Tillåt endast SSH från kända eller betrodda IP-adresser. Till exempel, på Linux med ufw:
sudo ufw tillåta från 192.168.1.0/24 till valfri port 22
Portkonfiguration
Att köra SSH på en icke-standardport (t.ex. 2222) kan minska automatiska skanningsförsök. Det är inte ett substitut för riktiga säkerhetsåtgärder, men det kan minska bullret.
Användar-/gruppbegränsningar
I /etc/ssh/sshd_config, ange:
TillåtAnvändare alice bob
or
AllowGroups sshadmins
8. Använd SSH-nyckellösenord och säker nyckellagring
Vad det är:
Kryptera din privata nyckel med en lösenfras så att även om din maskin är intrång, är själva nyckeln inte direkt användbar.
Varför det är säkrare:
- En stulen nyckelfil utan en lösenordsfras kan ge omedelbar åtkomst
- Lösenfraser fungerar som ett extra lager av kryptering på din lokala nyckel
Så här implementerar du:
Ställ in en lösenordsfras under nyckelgenerering
ssh-keygen -t ed25519
(Du kommer att bli ombedd att ange en lösenfras.)
Skydda dina nyckelfiler
Begränsa behörigheter till din .ssh-mapp och nyckelfiler:
chmod 700 ~ / .ssh
chmod 600 ~/.ssh/id_ed25519
Tänk på maskinvarusäkerhetsmoduler (HSM) eller tokens
För större organisationer kan användning av dedikerad hårdvara för nyckellagring minska riskerna för programvarubaserad stöld eller skadlig programvara.
Slutsats
SSH säkerhet kokar ner till lager av skydd. Genom att implementera nyckelbaserad autentisering, inaktivera direkt root-åtkomst, använda stark kryptering, hålla sig uppdaterad, kräva multifaktorautentisering, övervaka loggar, begränsa åtkomst och skydda dina nycklar med lösenordsfraser, täcker du de vanligaste (och allvarligaste) riskerna.
Dessa åtgärder överensstämmer med samma bredare säkerhetsfilosofi som SSL.com förespråkar för digitala certifikat: skydda kryptografiska nycklar, använd robust kryptering, begränsa privilegierad åtkomst och håll vaken över dina system. När du har etablerat dessa grundläggande bästa praxis kan du utforska mer avancerade alternativ som SSH-certifikatutfärdare, portknackning eller köra SSH över ett VPN för att ytterligare skräddarsy din säkerhetsställning.