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 SSH Communications Security Corp selskapet 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 tjenerkonfigurasjonsfilen (/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.
Først må brukeren autorisere deling av sin sesjon. GNOMEs grafiske skrivebordsmiljø i Jessie omfatter dette alternativet i sitt konfigurasjonspanel (i motsetning til tidligere versjoner av Debian, der brukeren måtte installere og kjøre vino). KDE krever fortsatt at krfb brukes for å tillate deling av en eksisterende økt over VNC. For andre grafiske skrivebordsmiljøer tjener x11vnc-kommandoen (fra Debian-pakken med samme navn) samme formål: Du kan gjøre det tilgjengelig for brukeren med et eksplisitt ikon.
Når den grafiske økten er gjort tilgjengelig av VNC, må administratoren koble den til med en VNC-klient. GNOME har vinagre og remmina til det, mens KDE innkluderer krdc (i menyen hos KInternetTilkobling til et eksternt system (Remote Desktop Client)). Det er andre VNC-klienter som bruker kommandolinjen, for eksempel xvnc4viewer i Debian pakken med samme navn. Når du er tilkoblet, kan administratoren se hva som skjer, arbeide eksternt på maskinen, og vise brukeren hvordan man går frem.
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. Konfigurasjonen av en slik tjeneste er mer komplisert: Du må først installerevnc4server-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 serveren er kraftig nok), kan den også brukes til å tilby komplette skrivebord til mobile brukere (eller til mindre kraftige stasjonære systemer, konfigurert som tynne klienter). Brukere logger bare inn på serverens skjerm med vncviewer server:50, fordi den benyttede porten er 5950.