Kapitel 3. Fjernstyring af GNU/Linux

Af: Gunner Poulsen

Når man begynder at bruge GNU/Linux i sit netværk, er en af de funktioner man måske ikke lige med det samme tænker på, at GNU/Linux i meget høj grad er integreret i netværket. Skellet mellem de enkelte maskiner er mere udvisket. Man kan sidde ved en maskine og redigere filer på en anden maskine ved hjælp af Telnet og SSH, man kan bruge en anden maskine til at sende sine e-mail, man kan køre programmer på en anden maskine og få den til at vise skærmbilledet på ens egen via X, man kan være mange, der kører programmer på den samme maskine samtidigt over netværket, osv., osv.

Alle disse muligheder kommer med som standard! Nogle af dem er ovenikøbet slået til i en almindelig grundinstallation. Det er både godt og skidt. Godt, fordi det giver dig store muligheder for at finpudse systemet og rette fejl, ligegyldig om du er på skolen eller på charterferie på Mallorca. Skidt, fordi andre også har denne mulighed - hvis du ikke passer på!

Derfor er en af de første ting, du skal have kigget på efter installationen af en ny maskine at regulere mulighederne for at fjernstyre din maskine!

Man kan dele fjernstyringsmulighederne op i 2 grupper:

1. Serverprogrammer, som er programmer, der udfører tjenester for andre maskiner. Eksempler kunne være mailservere, proxyservere osv.

2. Logintjenester, hvor andre får mulighed for at logge direkte ind som bruger på din maskine og køre programmer på maskinen. Eksempler på sådanne logintjenester er XDM, Telnet og SSH.

Du bør (SKAL) sikre dine servere, så kun dine egne maskiner kan bruge dem, og så andre ikke kan misbruge dem til spam og cracking. Og du bør begrænse dine logintjenester, så det kun er dig, der kan bruge dem.

Noget tredie, du skal tænke på, er, at oplysninger, der transporteres over netværk, fx adgangskoder, kun er sikre, hvis de er krypterede. Både telnet, FTP og POP3 sender adgangskoder i klar tekst, lige til at læse og bruge til at logge ind på dine maskiner.

3.1. SSH

SSH er en logintjeneste, der er alment accepteret som en sikker metode til at kommunikere mellem to computere.

3.1.1. Hvad er SSH?

SSH er en erstatning for telnet (og rlogin og rsh). Den store forskel på SSH og telnet er, at telnet sender alting (også password) i klar tekst - SSH krypterer. SSH bør derfor være noget af det første, man installerer på en Linux-server. Læs evt. denne uddybende artikel: http://www.sslug.dk/artikler/Linux_sikkerhed/netvaerk.html.

SSH protokollen findes i to udgaver: SSH1 og SSH2. SSH1 er fri for alle. SSH2 må frit bruges af privatpersoner og uddannelsesinstitutioner. SSH findes også i en Open Source version OpenSSH. Den følger med RedHat 7.0 og 7.1 og understøtter både SSH1 og SSH2.

SSH1 og OpenSSH-versionen af SSH2 giver mulighed for at vælge hvilke brugere og grupper, der må bruge SSH, det gør standardudgaven af SSH2 ikke. Derfor mener jeg, at SSH1 og OpenSSH er mest relevante på en skole.

SSH2 er den sikreste pga. måden den udveksler nøgler på, så hvis du har valget så sæt OpenSSH til at bruge SSH2.

3.1.2. Opsætning af en SSH1 server

SSH1 er et forældet program. Hvis du bruger RedHat 7 eller højere så hop til afsnittet om OpenSSH.

En SSH1 server giver dig som skrevet adgang til at arbejde på din server over internettet uden at risikere, at andre opsnapper dine oplysninger. Her følger en vejledning i at sætte en SSH-server op på en RedHat 6.2 Linux server.

Vi skal have hentet 3 RPMer på ftp://sunsite.dk/pub/os/linux/redhat-crypto/i386.

Det er: ssh-1.2.30-1i.i386.rpm, ssh-extras-1.2.30-1i.i386.rpm og ssh-server-1.2.30-1i.i386.rpm. Hvis der er kommet nyere versioner så brug dem.

Installer dem som root med rpm -Uvh *rpm eller din foretrukne RPM-manager fx Gnorpm.

Nu kører SSH1 måske allerede, men inden den skal køre for alvor skal du lige rette i et par filer. Det er dels /etc/ssh/sshd_config, der styrer hvordan sshd opfører sig, og dels /etc/inetd.conf, der i RedHat 6.2 tilbyder for mange services.

Lad os starte med /etc/ssh/sshd_config. Jeg har lavet en eksempelfil for Gnu Skole som findes her. Jeg foreslår, at man laver 3 ændringer til den fil, der kommer med pakken:

Første ændring har til formål at gøre livet lidt mere surt for crackere, der kender dig. Måden crackere, der kender en, prøver at få adgang til din maskine på, er som regel ved at prøve at gætte din adgangskode. Den første ændring er at forbyde Root at logge ind direkte:

PermitRootLogin no

Du bør så oprette en særlig bruger, du kun bruger til SSH (og tilføje den til ssh1gruppe - se senere). Når du så har logget ind på denne måde, kan du lige skrive su - for at få root-adgang til maskinen. På denne måde gør du det dobbelt så svært at kompromittere dit system.

Anden ændring er at forbyde blanke adgangskoder - det fordrer næppe nogen begrundelse!

PermitEmptyPasswords no

Sidste ændring er i virkeligheden en tilføjelse. Som standard har alle brugere ret til at logge ind via SSH. Det giver dem ret til i ro og mag at kigge filerne og deres rettigheder igennem og finde evt. tanketorsk i opsætningen. Det er ikke godt!

Jeg foreslår, at du opretter en særlig gruppe af brugere, og kalder denne gruppe noget i stil med: ssh1gruppe. Du kan så tilføje de brugere, der skal kunne logge ind på serveren via SSH til gruppen.

Når du har oprettet gruppen, skriver du denne linie sidst i sshd_config:

AllowGroups ssh1gruppe

Den virker på den måde, at brugerne i gruppen får ret til login via SSH - og alle andre brugere forbydes SSHadgang.

Der er mange andre muligheder i sshd_config. De er glimrende beskrevet på man-siden, som du får, når du skriver man sshd i en term.

Så skal vi have slået telnet fra!!

I RedHat 6.2 skal du åbne filen /etc/inetd.conf og finde linien:

telnet stream  tcp  nowait  root    /usr/sbin/tcpd in.telnetd

Sæt # ud for den, så der står:

#telnet stream  tcp  nowait  root    /usr/sbin/tcpd in.telnetd

Nu du er ved det så sæt også # ved:

shell    stream    tcp    nowait    root    /usr/sbin/tcpd    in.rshd
login    stream    tcp    nowait    root    /usr/sbin/tcpd    in.rlogind

Det er også gamle ukrypterede tjenester, som SSH erstatter. Jeg vil i øvrigt opfordre dig til at læse denne artikel, som bla. omhandler inetd: http://www.sslug.dk/artikler/Linux_sikkerhed/services.html

I RedHat 7.0 slås disse tjenester fra med

[root@gnuskole /root]# /sbin/chkconfig telnet off
[root@gnuskole /root]# /sbin/chkconfig rlogind off
[root@gnuskole /root]# /sbin/chkconfig rshd off

og så fremdeles.

Start nu SSH med /etc/rc.d/init.d/sshd start som root. Hvis det ser ud til at virke, kan du sætte SSH til at starte op automatisk med /sbin/chkconfig sshd on. Husk også at køre /etc/rc.d/init.d/sshd restart, hver gang du har ændret i /etc/ssh/sshd_config, og køre /etc/rc.d/init.d/inet restart, når du har ændret i /etc/inetd.conf.

Det var det! Så skal vi igang med klienterne.

3.1.3. Opsætning af en OpenSSH server

Installationen af OpenSSH er beskrevet på http://www.sslug.dk/linuxbog/sikkerhed/bog/sikker-net-trafik.html.

Men OpenSSH blev sikkert installeret allerede da du installerede RedHat 7.x.

Tilretningerne i beskrivelsen af SSH1-serveren gælder også i OpenSSH. Husk specielt at begrænse adgangen med AllowGroups. Vi vil derudover anbefale at man i /etc/ssh/sshd_config indsætter:

Protocol 2

for at tvinge OpenSSH til at bruge den sikrere protokol SSH2. Hvis man af en eller anden grund har brug for af og til at benytte SSH1 kan man indsætte:

Protocol 2,1

for at have SSH1 som tilbagefaldsprotokol.

OpenSSH startes med:

[root@gnuskole /root]# /sbin/chkconfig sshd on
[root@gnuskole /root]# /etc/init.d/sshd restart

3.1.4. Opsætning af SSH-klienter

Jeg vil her gennemgå opsætningen af hhv. en RedHat Linux og en Windows-maskine som SSH-klient.

3.1.4.1. Red Hat Linux

I RedHat 6.2:

  • Gå ind på ftp://sunsite.dk/pub/os/linux/redhat-crypto/i386 igen.

  • Hent ssh-1.2.30-1i.i386.rpm, ssh-clients-1.2.30-1i.i386.rpm og ssh-extras-1.2.30-1i.i386.rpm

  • Installer dem som root med rpm -Uvh *rpm eller din foretrukne RPM-manager fx. Gnorpm.

  • Log ind som den bruger, der skal bruge SSH.

  • Så skal du have lavet et SSH nøglepar. Åbn en xterm og skriv ssh-keygen. Så kører det. Til sidst bliver du spurgt om en passfrase - det er en sætning, der fungerer som password til dit nøglepar.

  • Derefter kan du kalde op til din server vha. ssh -l (brugernavn) -C (server).

I RedHat 7.x er den OpenSSH, der følger med, køreklar fra start! Brug følgende kommandoer, hvis du er i tvivl om du fik SSH med i installationen:

[root@gnuskole /root]# rpm -q openssl
[root@gnuskole /root]# rpm -q openssh
[root@gnuskole /root]# rpm -q openssh-clients>

Som noget særligt smart ved SSH på lokalnettet, kan nævnes muligheden for X11forwarding. Det er muligheden for at logge ind på serveren med SSH og køre grafiske programmer, som hvis man sad ved maskinen. Lad os tage et eksempel:

Vi forestiller os, at KDE er installeret på serveren og på en af arbejdsstationerne. Nu starter du X og åbner en xterm på arbejdsstationen.

Åbn en SSH forbindelse til serveren ssh -l (brugernavn) -C (server) og log ind.

Nu kommer så det fede: Skriv kfmsu, skriv dit Rootpassword og nyd resultatet. Nu kan du både gå rundt i alle filer, åbne dem i tekstbehandlingsprogrammet, åbne en terminal osv. Kort sagt kan du alt, hvad du plejer at gøre med en grafisk brugerflade.

Stik den! Og det hele foregår over en krypteret linie!

Du kan også nøjes med en almindelig su - og så fx gedit /etc/squid/squid.conf, hvis du vil rette på squids opførsel.

Det kan også lade sig gøre fra ens hjemmearbejdsplads, men det kræver dog mere båndbrede end et almindeligt modem for ikke at gå utåleligt langsomt. Parameteren -C får SSH til at pakke dataene, før de sendes, så det går noget hurtigere, men det er stadig langsomt at bruge en modemforbindelse til X11forwarding.

3.1.4.2. Windows

Til Windows vil vi anbefale Open Source programmet PuTTY. Det er nemt at installere, det understøtter nu både SSH1 og SSH2 og det kan gemme opsætningen (- adgangskode) fra gang til gang. Hent PuTTY fra http://www.chiark.greenend.org.uk/~sgtatham/putty.html. Start det, og følg instruktionerne på skærmen. Når du har udfyldt Host-name > trykket på SSH > trykker du på fanebladet SSH > hvor du skriver din SSH-bruger i Auto-login username, > så går du tilbage og skriver et navn på forbindelsen i Stored Sessions > hvorefter du trykker på Save.

Figur 3-1. puTTY

Næste gang du skal bruge PuTTY er det bare at trykke på Load > og Open. Så kører det.