Labo Secure Shell + X-Server
Secure Shell is een client-server toepassing die voorziet in beveiligde communicatie
door middel van encryptie, authenticatie van de host (RSA-gebaseerd) en een aantal opties
voor de authenticatie van de gebruiker. Ze voorziet in een vervanging van telnet,
rlogin, rsh en rcp. Ze voorziet ook in de mogelijkheid om geëncrypteerde
X-Sever en andere TCP connecties te leggen.
De bedoeling van dit labo is om SSH (client en server) te configureren
(als root en als gewone gebruiker) en om nadien de mogelijkheden ervan
uit te proberen.
Voorbereiding
Meer informatie kan je vinden op volgende plaatsen:
Een algemeen overzicht van secure shell
De snel-aan-de-slag-referentie bij OpenSSH
De algemene website van open-ssh
De manual-pagina's van xinit, startx, Xserver en uiteraard ook de manual-pagina's van sshd, ssh, scp, ssh-keygen, ssh_config, sshd_config
Verslag
Maak een duidelijk verslag van je activiteiten.
Dit elektronisch verslag is een tekstbestand met als naam ssh.txt,
in gewoon tekstformaat (niet opgemaakt, regels korter dan 60 tekens).
Vermeld op de eerste lijn je voornaam en je naam.
Vermeld steeds duidelijk
- het nummer van het opgavedeel
- wat je precies doet
- met welke commando's je dat verwezenlijkt
- problemen die je tegenkomt
- hoe je ze oplost
- op welke manier je de instellingen hebt gecontroleerd.
- Beantwoord ook de vragen uit de opgave.
Je plaatst dit bestand op je U-drive binnen de map beveiliging in de subdirectory ssh.
Uiterste datum om in te dienen: 15/10/2009 om 13u20.
Deel I: SSH
Beantwoord eerst onderstaande vragen:
- Waar bevinden zich de configuratiebestanden van ssh en sshd?
- Waar komen de foutmeldingen van sshd terecht? (naam + pad opgeven!)
- Hoe kan je sshd herstarten?
- Hoe kan je sshd starten in debug mode? Probeer dit uit door de daemon te stoppen en vanuit een
terminalvenster sshd interactief te starten.
- Welke encryptiemethode(s) kan je gebruiken voor het aanmaken van sleutels?
Om dit labo te kunnen uitvoeren moeten de globale configuratieinstellingen
drastisch worden aangepast. Neem bij aanvang van het labo
een volledige backup (tar) van de ssh-configuratiedirectory. Zet deze op het einde van het labo terug in de oorspronkelijke staat
en herstart de sshd-service.
Opgelet: het aanpassen van de configuratie en het herstarten van de server
doe je als root-gebruiker. Het configureren en uitvoeren van de de client-commando's
doe je meestal als je eigen gebruiker, soms als root indien nodig. Maak hiervoor een eigen lokale gebruiker aan.
1.
SSH laat toe om hostbased-authentisering te doen.
Zorg er dus voor dat je toegang kunt krijgen/geven voor een gebruiker
op een andere machine door een gepaste .shosts-file en de gepaste
configuratie-instellingen van de server.
Test uitgebreid uit.
Dit effect kan ook verkregen worden door een globale serverinstelling en niet
door gebruik te maken van een .shosts-file voor de gebruiker. Configureer en test uit
zowel voor root als een gewone gebruiker.
Vraag: waarom werkt dit laatste niet voor root?
Vraag: waarom werkt hostbased authenticatie aleen als de ingelogde lokale gebruiker
dezelfde is als de remote-gebruiker (dus niet via ssh -l); test en verklaar.
2.
Pas de configuratie van de clientkant aan zo dat ssh niet
automatisch sleutels van nieuwe hosts bijvoegt.
De Public Host key van de server mag dus
niet automatisch over het net
worden getransporteerd maar moet manueel worden uitgewisseld.
Kopieer de publieke sleutel van de machine waar je wil op inloggen
op de juiste plaats.
Test uit of je kan inloggen via ssh en het opgeven van een
wachtwoord.
Vragen:
- Waarom wordt bij leggen van connectie volgende vraag gesteld?
The authenticity of host 'xyz.iii.hogent.be (192.168.16.abc)' can't be established.
RSA key fingerprint is f8:10:72:82:14:0c:87:b3:8e:fb:13:20:4d:08:5a:78.
Are you sure you want to continue connecting (yes/no)?
- Wat is het doel van het vermelden van de RSA fingerprint?
- De optie voorziet in drie parameters: ask/yes/no. Hoe zou je ze instellen en waarom?
Bespreek.
Wat moet er gebeuren indien deze optie op 'yes' staat?
3.
Configureer de server op je machine zo dat
- geen root login mogelijk is
- er alleen login mogelijk is vanuit twee naburige clients
4.
Niet alleen is met ssh wachtwoord-authentisering mogelijk,
maar ook publieke-sleutel-authentisering.
Om dit te bekomen moeten de gebruikers zelf een sleutelpaar aanmaken
en ze op de juiste plaats kopiëren met de juiste naam.
Er moeten nog een aantal extra bestanden worden aangemaakt.
Test uit of je nu kan inloggen via de passeerzin.
Vraag: Waarom wordt er een passeerzin gevraagd?
Configureer de server zo dat de toegang beperkt wordt tot één machine.
Test uivoerig uit.
5.
Pas de files hosts.[allow deny] aan en kijk wat er gebeurt als je
met ssh probeert in te loggen op een machine waar je volgens deze files
geen toegang toe hebt. Test uit welke volgorde gehanteerd wordt om
uit te maken of een machine al dan niet toegang krijgt.
6.
SSh voorziet in de mogelijkheid tot portforwarding. Test uit of je op de remote
machine een venster kan openen en lokaal bewerken. Zet deze optie uit en test.
7.
De portforwarding werkt ook voor andere services (telnet, ftp, echo, ...).
Maak 2 verbindingen waarbij de ene keer local en de andere keer remote forwarding
wordt opgezet, voor bijvoorbeeld de echo-service. Test uit.
Deze connectie kent ook de optie '-g'. Waartoe dient ze en wat is het effect?
8. Verander de serverconfiguratie zo dat uitsluitend remote
root-login mogelijk is op je machine.
9.
In het ssh-pakket zit ook een utility om op een beveiligde manier
aan ftp te doen. Dit laat toe om bijvoorbeeld
via een ssh-windows-implementering
bestandsbeheer op de server mogelijk te maken.
Doe een paar tests met sftp.
10.
Een beperkter commando dat alleen toelaat om bestanden te kopiëren
is ook aanwezig (scp). Test uit.
Deel II: X windowing system
De eerste versie van het X windowing system is als resultaat van project Athena voorgesteld in 1984. Tussen 1984 en 1987 zijn er maar liefst 11 verschillende versies van X uitgebracht, waardoor het ook de naam X11 draagt. X heeft men oorspronkelijk bedacht om aan het even welk besturingssysteem een grafische gebruikersinterface te kunnen koppelen.
De architectuur van X is een mooi voorbeeld van het client-servermodel. Hierbij wordt de X-server geïnstalleerd op het toestel dat verbonden is met het beeldscherm en de X-client op een remote server. Alle communicatie tussen client en server verloopt via het X-protocol over het netwerk. Oorspronkelijk bevatte de terminal de X-server en de minicomputer de X-client. Tegenwoordig bevinden zowel client als server zich op hetzelfde toestel en ook in hetzelfde geheugen. Niettegenstaande beide componenten zich in dezelfde geheugenruimte bevinden zijn het nog steeds aparte componenten die met elkaar communiceren via het X-protocol.
Het starten van de X-server alleen toont aan de gebruiker een eenvoudige zwartwit-geruite achtergrond met een beweegbare muispointer in de vorm van een X. De X-server is verbonden met wat men in X-terminologie omschrijft als een DISPLAY. Een DISPLAY is eigenlijk niets meer dan een toetsenbord, een muis en een beeldscherm.
Een X-client kan een eenvoudig programma zijn zoals bijvoorbeeld xterm, xemacs, xclock, etc. maar kan ook een volledige desktopomgeving bevatten zoals KDE of GNOME. In tegenstelling tot Microsoft Windows is het gebruik van een desktopomgeving dus geen vereiste.
Log in als root-gebruiker op één van de tty-consoles en verander van runlevel zonder de computer te herstarten. Normaal bevindt Linux zich in runlevel 5 maar voor volgende opdrachten is het noodzakelijk Linux te laten werken in runlevel 3.
1.
Maak in de home-directory van de root-gebruiker een bestand aan met naam .xinitrc . Dit scriptbestand bevat alle X-clients die moeten worden getoond bij het starten van de X-server.
Het starten van de X-server doe je met het commando startx.
2.
Zorg dat bij het starten van X de X-clients xclock en xterm worden getoond. Bij het sluiten van xterm wordt de X-server ook gestopt. Is de volgorde van de X-clients belangrijk?
Kun je de grootte van de vensters aanpassen?
3. Pas nu het bestand .xinitrc aan zodat je beide vensters, xclock en xterm, kunt verslepen en eventueel kunt herschalen. Maak hiervoor gebruik van de twm Window Manager. Hoe moet je nu de X-server stoppen?
Verander van runlevel 3 naar runlevel 5 en geef antwoord op onderstaande vragen:
4. Door welk proces of programma wordt de X-server gestart?
5. Met welke parameters werd de X-server (Xorg) opgestart?
6. Welke parameter zal naar alle waarschijnlijkheid X-clients verhinderen om met jouw X-server te connecteren?
Hoe kun je ervoor zorgen dat remote X-clients een verbinding kunnen maken met jouw X-server. Zoek de oplossing via deze link.
7. Wat doet het commando xhost. Voeg nu de computer van je buur toe als vertrouwde host.
8. Stel de DISPLAY-variabele zo in dat bij het het uitvoeren van xterm het venster wordt getoond op het display van je buur en niet op je eigen display.
9. Log via ssh in op het toestel van je buur en open een xterm-venster op jouw display.
Moet je de DISPLAY-omgevingsvariabele instellen?
10. Voeg aan het commando ssh een parameter toe zodat je op de remote computer de DISPLAY-omgevingsvariabele niet meer hoeft in te stellen.
|