Opsætning af SSH

SSH: Sikkerhed med nøglefiler

Her opsætter vi en SSH-nøgler til at få adgang til vores hjemmeserver.

Vi gør det på en måde så du senere kan tilføje flere SSH-nøgler til andre tjenester - f.eks. Github

Hvordan fungerer nøgler i SSH

SSH keys fungerer ved at man har en privat og en offentlig nøglefil (public key). Den private ligger på din computer, og den offentlige på den computer du har SSH adgang til.

Du bliver som bruger verificeret ved at de to nøgler passer sammen.

Det smarte ved systemet er, at din offentlige nøgle kan ligge mange steder, men din private nøgle ligger kun på dine enheder

Hvad skal der gøres

  • Oprettelse af nøgler på klienten (private & public)
  • Kopiere public-key over på server
  • tjekke at det virker
  • Fjerne password authentication på serveren

Opret nøgle

ssh-keygen -t rsa -f ~/.ssh/server-key
Generating public/private rsa key pair.

Herefter bliver du sat overfor et valg

Enter passphrase (empty for no passphrase):

Her har du mulighed for at indtaste et kordeord, som skal anvendes i hver SSH-session. Kodeordet skal ses som en ekstra sikkerhed hvis nogen får fat i din private nøgle.

Med passphrase
Indtast kodeordet og tast Enter
Uden passphrase
Tast kun Enter

Gentag ovenstående.

Enter passphrase (empty for no passphrase): Enter same passphrase again:

Herefter oprettes nøglen

Your identification has been saved in /home/tj/.ssh/server-key Your public key has been saved in /home/tj/.ssh/server-key.pub The key fingerprint is: SHA256:ui6kjLjISee1NZT/GF1HwfYYLc337UPHbcN5wMThGjk tj@desktop The key's randomart image is: +---[RSA 3072]----+ | ++* | | o*o*| | E +BB| | . +o=X| | oS ...++| | . ... . . ...| |.+ + ..o o . .| |* * o o.. + | |o+ . +o . . | +----[SHA256]-----+

Nøglerne er oprettet.

Kopier pub-nøglen over på serveren

For at serveren kan verificere brugen skal den have den offentlig nøgle, som har endelsen pub. Den hedder i vores tilfælde server-key.pub

Den kopieres i dette tilfælde over med kommandoen :

ssh-copy-id -i ~/.ssh/server-key.pub tj@192.168.87.10

Hertil svarer serveren

/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys tj@192.168.87.10's password:

Indtast din brugers adgangskode på serveren

Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'tj@192.168.87.10'" and check to make sure that only the key(s) you wanted were added. tj@desktop:~$

Opret config fil

Opret filen ~/.ssh/config og indsæt følgende:

Host server HostName 192.168.87.10 User tj Port 22 IdentityFile ~/.ssh/server-key

Herefter kan du anvende ssh server i stedet for ssh server

Tjek det virker

Login på din server ved hjælp af SSH

ssh server

Har du indtastet en passphrase, kommer der et vindue op hvor du skal indtaste din passphrase du lavede i starten

Herefter er du logget ind på din server

Welcome to Ubuntu 20.04.1 LTS (GNU/Linux 5.4.0-64-generic x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage System information as of Mon 25 Jan 2021 03:32:47 PM UTC System load: 0.0 Processes: 141 Usage of /: 24.6% of 29.40GB Users logged in: 0 Memory usage: 8% IPv4 address for docker0: 172.17.0.1 Swap usage: 0% IPv4 address for enp0s3: 192.168.87.11 0 updates can be installed immediately. 0 of these updates are security updates. Web console: https://server1:9090/ or https://192.168.87.11:9090/ Last login: Mon Jan 25 07:57:27 2021 from 192.168.87.131 tj@server1:~$

Log af (skriv exit)og tjek at du kan logge på igen uden at skrive password

Kun adgang med SSH-nøgker

Du kan sætte din server op til, at der kun er SSH adgang ved hjælp af SSH-nøgler. Gør følgende på serveren.

Vær opmærksom på at SSH herefter kun bruges fra computere der har din nøglefil

Åbn filen /etc/ssh/sshd_config

sudo nano /etc/ssh/sshd_config

Find linien (Brug Ctrl+w til at søge):

#PasswordAuthentication yes

... fjern # og ændr yes til no.

PasswordAuthentication no

Gem filen og genstart SSH

sudo systemctl restart ssh

Done!

SSH: Fildeling og kommandoer

Kopiere filer med SSH

Til at kopiere filer bruger man kommandoen scp (Secure CoPy). Kommandoen fungerer som følger:

scp [Kildefil] [Destinationsfil]

For at kopiere ~/testfil sin computer over i sin mappe på en SSH-server:

scp ~/testfil tj@192.168.87.10:/home/tj 

Delt drev med SSH

Installer sshfs på din desktop.

sudo apt install sshfs -y

Opret en mappe i dit home som du kalder ssh_drev både på din workstation og SSH-serveren.

mkdir ~/ssh_drev
ssh tj@192.168.87.10 "mkdir ~/ssh_drev"

Nu kan vi montere mappen fra SSH-serveren ved hjælp af følgende kommando:

sshfs tj@192.168.87.10:ssh_drev ssh_drev

Kommandoen forudsætter at man står i sin personlige mappe på serveren

Hvis man har oprettet mapperne andre steder skal de have deres mappernes fulde sti.

Afmontering af drev

Drevet af monteres med umount:

umount ~/ssh_drev

Kommandoer med SSH

Du sender kommandoer til serveren ved at tilføje den i anførselstegn efter normal login. Her beder jeg om at se indholdet af min hjemmemappe på serveren.

ssh tj@192.168.87.11 "ls -al"
tj@192.168.87.11's password: total 32 drwxr-xr-x 4 tj tj 4096 Jan 19 13:44 . drwxr-xr-x 3 root root 4096 Jan 19 13:28 .. -rw------- 1 tj tj 919 Jan 27 15:28 .bash_history -rw-r--r-- 1 tj tj 220 Feb 25 2020 .bash_logout -rw-r--r-- 1 tj tj 3771 Feb 25 2020 .bashrc drwx------ 2 tj tj 4096 Jan 19 13:29 .cache -rw-r--r-- 1 tj tj 807 Feb 25 2020 .profile drwxr-xr-x 3 tj tj 4096 Jan 19 13:43 snap -rw-r--r-- 1 tj tj 0 Jan 19 13:30 .sudo_as_admin_successful tj@desktop:~$

Læg mærke til at du stadig er på din egen pc selvom du får output fra SSH-serveren.

Du kan også udføre sudo kommandoer.

SSH tricks

Ændring af portnummer

Som standard bruger SSH port 22. Du kan ændre portnummer hvis du ønsker det f.eks: til port 222. For at logge ind med et andet portnummer skal optionen -P [portnummer] anvendes, f.eks:

ssh -p 222 tj@192.168.87.10

Rediger filen /etc/ssh/sshd_config

sudo nano /etc/ssh/sshd_config

Ændr #port 22 til port 222

Genstart SSH

sudo systemctl restart ssh

Konfigurer firewall

Da vi har ændret porten, skal vi have åbnet den nye - og lukket den gamle

Åbn ny port

sudo ufw allow 222/tcp

Fjern gammel regel

sudo ufw delete allow OpenSSH

Tjek at det er sat rigtigt op - altså at OpenSSH er fjernet og 222/tcp er der:

sudo ufw status
Status: active To Action From -- ------ ---- 222/tcp ALLOW Anywhere 222/tcp (v6) ALLOW Anywhere (v6)

Genstart ufw

sudo ufw reload

Done!

Velkomstbesked på serveren

For at få en egen velkomstbesked på serveren skal man gøre to ting:

  1. Redigerer i konfigurationsfilen: /etc/ssh/sshd_config
  2. Indsætte tekststrengen i /etc/issue.net
sudo nano /etc/ssh/sshd_config

Udskift linien:

#Banner none

med

Banner /etc/issue.net

Ændr teksten i /etc/issue.net til den tekst du ønsker. f.eks:

*** Velkommen til min server (192.168.87.10/24) ***

Herefter vil velkomsten se ud som herunder:

tj@server:~$ ssh tj@192.168.87.11 *** Velkommen til min server (192.168.87.10/24) *** tj@192.168.87.10's password:

Tillad og afvis brugere

Du kan filtrere brugere på SSH-serveren på to måder, enten ved at tillade specifikke brugere, eller afvise specififikke brugere.

Tillad specifikke brugere

Rediger filen /etc/ssh/sshd_config

sudo nano /etc/ssh/sshd_config

Tilføj linien Allowusers i bunden af filen og tilføj brugernavnene på de brugere der har adgang, f.eks:

Allowusers tj ab bc cd

Alle andre brugere vil blive afvist.

Afvis specifikke brugere

Rediger filen /etc/ssh/sshd_config

sudo nano /etc/ssh/sshd_config

Tilføj linien Denyusers i bunden af filen og tilføj brugernavnene på de brugere der ikke skal have adgang, f.eks:

Denyusers tj ab bc cd

Alle andre brugere vil blive afvist.

Mere læsning: https://www.digitalocean.com/community/tutorials/how-to-use-sshfs-to-mount-remote-file-systems-over-ssh