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
AllowUsersogAllowGroupsfor å 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
