Hopp til hovedinnhold

Sikkerhet og beste praksis for SSH og SFTP

Kapittel 16

Å sikre en SSH-server er avgjørende for å hindre uautorisert tilgang og beskytte data under overføring. SSH er som standard ganske sikkert, men det finnes flere tiltak som bør gjøres for å forsterke sikkerheten ytterligere.

Konfigurasjon av sikkerhet

De fleste innstillingene for sikkerhet gjøres i

/etc/ssh/sshd_config

eller i egne konfigurasjonsfiler i mappen

/etc/ssh/sshd_config.d/

Du kan legge til egne filer i denne mappen for å organisere konfigurasjonen uten å endre hovedfilen direkte.

Eksempel

sudo nano /etc/ssh/sshd_config.d/10-security.conf

Her kan du legge inn ønskede sikkerhetsinnstillinger. Systemet vil automatisk lese alle .conf-filer i denne mappen i alfabetisk rekkefølge.

Eksempel på sikkerhetsinnstillinger

PermitRootLogin no

Deaktiver root-innlogging helt. Dette hindrer at root-brukeren kan logge inn direkte via SSH.

Alternativt kan du kun tillate innlogging med nøkkel

PermitRootLogin prohibit-password
PasswordAuthentication no

Deaktiver passordinnlogging og bruk kun nøkkelbasert autentisering.

PubkeyAuthentication yes

Aktiver nøkkelinnlogging.

Endre standardport For å redusere støy fra automatiserte angrep kan du endre standardporten fra 22 til for eksempel 3719 eller et annet tall.

Port 3719

Merk Dette gir ikke ekte sikkerhet i seg selv, men reduserer antall automatiske innloggingsforsøk.

Krypteringstyper Du kan begrense hvilke krypteringsalgoritmer (Ciphers) som tillates. Se tilgjengelige alternativer i manualen

man sshd_config

og søk etter Ciphers. Velg moderne og sikre alternativer (som chacha20-poly1305 eller aes256-gcm).

Bruker- og gruppekontroll Du kan begrense hvilke brukere og grupper som får koble til

AllowUsers john lisa
DenyUsers test
AllowGroups admins
DenyGroups guests

Innstillinger som krever restart

Etter endringer i sshd_config må tjenesten startes på nytt

sudo systemctl restart sshd

Brannmur og innbruddsbeskyttelse

Fail2ban Installer Fail2ban for å blokkere IP-adresser som forsøker gjentatte mislykkede innlogginger.

sudo apt install fail2ban

Fail2ban overvåker SSH-loggene og blokkerer angripere automatisk.

Brannmur (UFW) Aktiver og konfigurer Ubuntu sin innebygde brannmur

sudo apt install ufw
sudo ufw allow 22/tcp
sudo ufw enable
sudo ufw status

Hvis du endrer SSH-port, må du tillate den nye porten

sudo ufw allow 3719/tcp

Nettverksstruktur og tilgang

Bastion host Vurder å bruke en bastion host (også kalt jump host) som eneste inngangspunkt til interne servere. Dette gir bedre kontroll og enklere logging av tilgang.

Bastion med VPN For ekstra sikkerhet kan du kombinere bastionen med VPN, slik at kun VPN-klienter får koble til via SSH.

Autentisering og fingerprints

Forhåndsregistrer serverens fingerprint på klienten for å unngå manuell bekreftelse og redusere risiko for “man-in-the-middle”-angrep. Bruk ssh-keyscan for å hente fingerprinten fra serveren

ssh-keyscan servernavn eller IP

Eksempel

ssh-keyscan 192.168.1.10 >> ~/.ssh/known_hosts

Dette legger inn serverens fingerprint i klientens known_hosts-fil.

SFTP og filsikring

SFTP er sikrere enn FTP og bør alltid brukes for filoverføring. Pass på at kun autoriserte brukere har tilgang til hjemmemappen og at brannmuren kun tillater nødvendige porter.

Oppsummering av beste praksis

  • Deaktiver root-innlogging (PermitRootLogin no).
  • Bruk nøkkelbasert autentisering, ikke passord.
  • Endre standardport fra 22 til et annet nummer.
  • Aktiver og konfigurer brannmur (UFW).
  • Installer Fail2ban for å blokkere brute force-angrep.
  • Bruk AllowUsers og AllowGroups for å begrense tilganger.
  • Bruk en bastion host for tilgang til interne systemer.
  • Forhåndsregistrer serverens fingerprint med ssh-keyscan.
  • Hold systemet oppdatert (sudo apt update && sudo apt upgrade).
  • Loggfør og overvåk tilkoblinger (se /var/log/auth.log).

Høydepunkt – viktige kommandoer

Opprett egen sikkerhetskonfigurasjon

sudo nano /etc/ssh/sshd_config.d/10-security.conf

Deaktiver root-innlogging

PermitRootLogin no

Deaktiver passordinnlogging

PasswordAuthentication no

Endre port

Port 3719

Aktiver nøkkelbasert autentisering

PubkeyAuthentication yes

Restart SSH

sudo systemctl restart sshd

Installer og aktiver Fail2ban

sudo apt install fail2ban

Konfigurer og aktiver brannmur

sudo apt install ufw
sudo ufw allow 22/tcp
sudo ufw enable
sudo ufw status

Hent og legg til server fingerprint

ssh-keyscan servernavn >> ~/.ssh/known_hosts
Robert Kristoffersen
Fullstack-utvikler • Webno