Det er viktig for en administrator å kunne koble seg til en datamaskin utenfra. Tjenere, innesperret i sitt eget rom, er sjelden utstyrt med permanente tastaturer og skjermer - men de er koblet til nettverket.
9.2.1. Sikker ekstern innlogging: SSH
SSH (Secure SHell)-protokollen ble utformet med tanke på sikkerhet og pålitelighet. Tilkoblinger som bruker SSH er sikre: Partneren er godkjent, og all datautveksling er kryptert.
SSH tilbyr også to filoverføringstjenester. scp
er et kommandolinjeverktøy som kan brukes som cp
, bortsett fra at hvilken som helst sti til en annen maskin har et prefiks med maskinens navn, etterfulgt av et kolon.
$
scp fil maskin:/tmp/
sftp
er en interaktiv kommando, som svarer til ftp
. I en enkelt økt kan sftp
overføre flere filer, og med den er det mulig å manipulere eksterne filer (slette, endre navn, endre tillatelser, etc.).
Debian bruker OpenSSH, som er en fri versjon av SSH, som vedlikeholdes av OpenBSD
-prosjektet (et fritt operativsystem basert på BSD-kjernen, med fokus på sikkerhet), og er en forgrening av den opprinnelige SSH-programvaren utviklet av selskapet SSH Communications Security Corp i Finland. Dette selskapet utviklet opprinnelig SSH som fri programvare, men som til slutt bestemte seg for å fortsette utviklingen under en proprietær lisens. OpenBSD-prosjektet opprettet deretter OpenSSH for å opprettholde en fri versjon av SSH.
OpenSSH is split into two packages: the client part is in the openssh-client package, and the server is in the openssh-server package. The ssh meta-package depends on both parts and facilitates installation of both (apt install ssh
), while the task-ssh-server, often chosen during the initial installation, depends on the server package only.
9.2.1.1. Nøkkel-basert autentisering
Hver gang noen logger inn over SSH, spør en ekstern tjener om et passord for å autentisere brukeren. Dette kan være problematisk hvis du ønsker å automatisere en tilkobling, eller hvis du bruker et verktøy som krever hyppige forbindelser over SSH. Dette er grunnen til at SSH tilbyr et nøkkelbasert autentiseringssystem.
Brukeren genererer et nøkkelpar på klientmaskinen med ssh-keygen -t rsa
; den deretter genererte offentlige nøkkelen lagres i ~/.ssh/id_rsa.pub
, mens den private motsatsen lagres i ~/.ssh/id_rsa
. Brukeren kan deretter bruke ssh-copy-id tjener
for å legge til sin offentlige nøkkel til i ~/.ssh/authorized_keys
-filen på tjeneren, eller, (hvis SSH-tilgang ikke har blitt påskrudd enda) spørre administrator om å legge til brukerens nøkkel manuelt.
If the private key was not protected with a “passphrase” at the time of its creation, all subsequent logins on the server will work without a password. Otherwise, the private key must be decrypted each time by entering the passphrase. Fortunately, ssh-agent
allows us to keep private keys in memory to not have to regularly re-enter the password. For this, you simply use ssh-add
(once per work session) provided that the session is already associated with a functional instance of ssh-agent
. Debian activates it by default in graphical sessions, but this can be deactivated by changing /etc/X11/Xsession.options
and commenting out use-ssh-agent
. For a console session, you can manually start the agent with eval $(ssh-agent)
.
9.2.1.2. Cert-Based Authentication
SSH keys cannot just be protected by a password (or not). An often unknown feature is that they can also be signed via certificate, both the host as well as the client keys. This approach comes with several advantages. Instead of maintaining an
authorized_keys
file per user as described in the previous section, the SSH server can be configured to trust all client keys signed by the same certificate (see also
Seksjon 10.2.2, «Offentlig nøkkel-infrastruktur: easy-rsa») by using the
TrustedUserCAKeys
and
HostCertificate
directives in
/etc/ssh/sshd_config
.
TrustedUserCAKeys /etc/ssh/ssh_users_ca.pub
HostKey /etc/ssh/ssh_host_ecdsa_key
HostCertificate /etc/ssh/ssh_host_ecdsa_key-cert.pub
Vice versa kan klientene også settes opp til å stole på vertsnøkkelen signert av samme myndighet, noe som gjør det enklere å håndtere known_hosts
-filen (selv for hele systemet via /etc/ssh/known_hosts
).
@cert-authority *.falcot.com ssh-rsa AAAA[..]
Både identitetsbekreftelse med offentlig nøkkel og sertifikat kan brukes samtidig.
9.2.1.3. Ved hjelp av Remote X11-programmer
SSH-protokollen tillater videresending av grafiske data («X11»-økt, fra navnet på det mest utbredte grafiske systemet i Unix); tjeneren holder da en egen kanal for disse dataene. Spesielt kan et grafisk program, kjørt eksternt, vises på X.org-tjeneren til den lokale skjermen, og hele økten (inndata og visning) vil være sikker. Ettersom denne funksjonen tillater at eksterne programmer forstyrrer det lokale systemet, er det deaktivert som standard. Du kan aktivere det ved å angi X11Forwarding yes
i tjeneroppsettsfilen (/etc/ssh/sshd_config
). Avslutningsvis må brukeren også be om det ved å legge -X
-valget til ssh
-kommandolinjen.
9.2.1.4. Å lage krypterte tunneler med portvideresending (Port Forwarding)
Dets
-R
og
-L
-valg tillater
ssh
å lage «krypterte tunneler» mellom to maskiner, sikker videresending til en lokal TCP-port (se sidestolpe
DET GRUNNLEGGENDE TCP/UDP) til en ekstern maskin og omvendt.
ssh -L 8000:server:25 intermediary
etablerer en SSH-økt med
intermediary-verten, og lytter til lokal port 8000 (se
Figur 9.3, «Videresende en lokal port med SSH»). For alle tilkoblinger som etableres til denne porten, vil
ssh
initiere en forbindelse fra
intermediary-datamaskinen til port 25 på
server-tjeneren, og vil binde begge tilknytninger sammen.
ssh -R 8000:server:25 intermediary
etablerer også en SSH-økt til
intermediary-datamaskinen, men det er på denne maskinen at
ssh
lytter til port 8000 (se
Figur 9.4, «Videresende en ekstern port med SSH»). Alle tilknytninger som er etablert til denne porten vil få
ssh
til å åpne en tilknytning fra den lokale maskinen til port 25 hos
server-en, og til å binde begge tilknytninger sammen.
I begge tilfeller er forbindelsene lagt til port 25 på 1server-verten, og passerer gjennom SSH-tunnelen som er etablert mellom den lokale maskinen og 3intermediary-maskinen. I det første tilfellet er inngangen til tunnelen lokal port 8000, og dataene beveger seg mot intermediary-maskinen før de blir dirigert videre til serveren i det «offentlige» nettverket. I det andre tilfellet er inngangen og utgangen i tunnelen reversert: Inngangen er port 8000 på intermediary-maskinen, og utdataene er på den lokale verten, og dataene blir deretter sendt til server-en. I praksis er tjeneren vanligvis enten den lokale maskinen eller mellomstasjonen. På den måten sikrer SSH forbindelsen fra den ene enden til den andre.
9.2.2. Å bruke eksterne grafiske skrivebord
VNC (Virtual Network Computing) tillater ekstern tilgang til grafiske skrivebord.
Dette verktøyet er mest brukt for teknisk assistanse; administratoren kan se feil som brukeren står overfor, og vise dem hva det er riktig å gjøre, uten å måtte stå ved siden av dem.
First, the user must authorize sharing their session. The GNOME graphical desktop environment includes that option via → (contrary to previous versions of Debian, where the user had to install and run vino
). For this to work network-manager must be managing the network used (e.g. enable the managed
mode for devices handled by ifupdown in /etc/NetworkManager/NetworkManager.conf
). KDE Plasma still requires using krfb
to allow sharing an existing session over VNC. For other graphical desktop environments, the x11vnc
or tightvncserver
commands (from the Debian packages of the same name) or tigervncserver
(tigervnc-standalone-server) serve the same purpose and provide the vnc-server virtual package; you can make either of them available to the user with an explicit menu or desktop entry.
When the graphical session is made available by VNC, the administrator must connect to it with a VNC client. GNOME has vinagre
and remmina
for that, while the KDE project provides krdc
(in the menu at → → ). There are other VNC clients that use the command line, such as xtightvncviewer
from the homonym package or xtigervncviewer
from the tigervnc-viewer Debian package. Once connected, the administrator can see what is going on, work on the machine remotely, and show the user how to proceed.