Product SiteDocumentation Site

9.2. Ekstern innlogging

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.
Videresende en lokal port med SSH

Figur 9.3. Videresende en lokal port med SSH

Videresende en ekstern port med SSH

Figur 9.4. Videresende en ekstern port med SSH

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 SettingsSharing (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 KInternetRemote Desktop Client). 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.