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 gaffel 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.
OpenSSL er delt i to pakker: Klientdelen er i openssh-client-pakken, og tjeneren er i openssh-server-pakken. ssh-meta-pakken er avhengig av begge, og forenkler installeringen av begge (apt install ssh).

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 generer et nøkkelpar på klientmaskinen med ssh-keygen -t rsa; den offentlige nøkkelen er lagret i ~/.ssh/id_rsa.pub, mens den korresponderende private nøkkel er lagret i ~/.ssh/id_rsa. Brukeren bruker så ssh-copy-id server for å legge til sin offentlige nøkkel til ~/.ssh/authorized_keys-filen på tjeneren. Dersom den private nøkkelen ikke var beskyttet med en «adgangsfrase» p å tidspunktet for etableringen, vil alle etterfølgende innlogginger på serveren fungere uten et passord. Ellers må den private nøkkelen dekrypteres hver gang ved å skrive inn passordet. Heldigvis tillater ssh-agent oss å holde private nøkler i minnet for å ikke regelmessig måtte taste inn igjen passord. For dette bruker du bare ssh-add (en gang per økt), forutsatt at økten allerede er knyttet til en funksjonell forekomst med ssh-agent. Debian aktiverer den som standard i grafiske økter, men dette kan deaktiveres ved å endre /etc/X11/Xsession.options. Du kan manuelt starte en konsolløkt med eval $(ssh-agent).

9.2.1.2. Ved hjelp av Remote X11-programmer

SSH-protokollen tillater videresending av grafiske data («X11» sesjon, 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.3. Å 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 in Jessie includes that option in its configuration panel (contrary to previous versions of Debian, where the user had to install and run vino). KDE Plasma still requires using krfb to allow sharing an existing session over VNC. For other graphical desktop environments, the x11vnc command (from the Debian package of the same name) serves the same purpose; you can make it available to the user with an explicit icon.
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 xvnc4viewer in the Debian package of the same name. Once connected, the administrator can see what is going on, work on the machine remotely, and show the user how to proceed.
VNC fungerer også for mobile brukere, eller næringslivsledere, som av og til trenger å logge inn hjemmefra for å få tilgang til et eksternt skrivebord lik det de bruker på jobben. Oppsettet av en slik tjeneste er mer komplisert: Du må først installere vnc4server-pakken, endre oppsettet på skjermviseren til å godta XDMCP Query-forespørsler (for gdm3. Dette kan gjøres ved å legge til Enable=true i «xdmcp»-seksjonen til /etc/gdm3/daemon.conf), og til slutt, starte VNC-tjeneren med inetd slik at en økt starter automatisk når en bruker prøver å logge seg inn. For eksempel kan du legge til denne linjen til /etc/inetd.conf:
5950  stream  tcp  nowait  nobody.tty  /usr/bin/Xvnc Xvnc -inetd -query localhost -once -geometry 1024x768 -depth 16 securitytypes=none
Å omdirigere innkomne forbindelser til skjermhåndterer, løser problemet med autentisering, fordi bare brukere med lokale kontoer vil passere innloggingsskjermen gdm3 login screen (eller tilsvarende kdm, xdm, etc.). Ettersom denne operasjonen tillater flere samtidige pålogginger uten problem (forutsatt at tjenermaskinen er kraftig nok), kan den også brukes til å tilby komplette skrivebord til mobile brukere (eller til mindre kraftige stasjonære systemer, satt opp som tynne klienter). Brukere logger bare inn på tjenermaskinens skjerm med vncviewer server:50, fordi den benyttede porten er 5950.