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, tilsvarende ftp. I en enkelt økt kan sftp overføre flere filer, og den kan også brukes til å å manipulere filer over nettet (slette, endre navn, endre tilganger, og så videre).
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.
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), selv om task-ssh-server (ofte valgt under innledende installasjon) avhenger kun av tjenerpakken.

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.
Dersom den private nøkkelen ikke var beskyttet med en «adgangsfrase» p å tidspunktet for etableringen, vil alle etterfølgende innlogginger på tjeneren 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 (én 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 og kommentere ut use-ssh-agent. Du kan manuelt starte agenten for en konsolløkt med eval $(ssh-agent).

9.2.1.2. Sertifikatsbasert autentisering

SSH-nøkler kan ikke bare beskyttes med et passord (eller ei). En funksjon som ofte går upåaktet hen er at de kan signeres via sertifikat, både for verts- og klientnøklene. Denne tilnærmingen har flere fordeler. Istedenfor å håndtere en authorized_keys-fil per bruker som beskrevet i forrige del, kan SSH-tjeneren settes opp til å stole på alle klientnøkler signert av samme sertifikat (mer om dette i Seksjon 10.2.2, «Offentlig nøkkel-infrastruktur: easy-rsa») ved bruk av anvisningene TrustedUserCAKeys og HostCertificate i /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å tjener-verten, og passerer gjennom SSH-tunnelen som er etablert mellom den lokale maskinen og mellom-maskinen. I det første tilfellet er inngangen til tunnelen lokal port 8000, og dataene beveger seg mot mellom-maskinen før de blir dirigert videre til tjeneren i det «offentlige» nettverket. I det andre tilfellet er inngangen og utgangen i tunnelen reversert: Inngangen er port 8000 på mellom-maskinen, og utdataene er på den lokale verten, og dataene blir deretter sendt til tjeneren. 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 økt. GNOMEs grafiske skrivebordsmiljø inkluderer denne muligheten via InnstillingerDeling (til forskjell fra tidligere versjoner av Debian, der brukeren måtte installere og kjøre vino). For at dette skal virke må network-manager håndtere nettverket som brukes (for eksempel skru på håndtert modus for enheter som håndteres av ifupdown i /etc/NetworkManager/NetworkManager.conf. KDE Plasma krever fremdeles bruk av krfb for å tillate deling av en eksisterende økt over VNC. For andre grafiske skrivebordsmiljø kan man bruke x11vnc, eller tightvncserver-kommandoene (fra Debian-pakkene med samme navn) eller tigervncserver (tigervnc-standalone-server) som tjener samme formål, og tilbyr den virtuelle vnc-server-pakken. Du kan gjøre hver av dem tilgjengelige for brukeren med en meny- eller skrivebordsoppføring.
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 prosjektet inkluderer krdc (i menyen hos KInternetTilkobling til et eksternt system (Remote Desktop Client)). Det er andre VNC-klienter som bruker kommandolinjen, for eksempel xtightvncviewer fra pakken med samme navn, eller xtigervncviewer fra Debian-pakken tigervnc-viewer. Når du er tilkoblet, kan administratoren se hva som skjer, arbeide eksternt på maskinen, og vise brukeren hvordan man går frem.