SSH Benutten
Tips voor veilig en gemakkelijk werken
Roeland Kok
Vrijgegeven onder de GFDL.
Benodigdheden: Linux Client met SSH client software Linux Server met SSH shell account Doel: Inloggen vergemakkelijken, secure connecties voor insecure protocollen opzetten.
Dit is geschreven naar aanleiding van een artikel in Linux Journal, Augustus 2003.
1. Inloggen vergemakkelijken
Met SSH (Secure Shell) kun je een beveiligde verbinding tussen jouw computer en een server opzetten. Jouw computer moet beschikken over een SSH client en de server moet een SSH deamon draaien. Vraag aan de sysadmin van de server een accountnaam en wachtwoord.
Bij het inloggen op een SSH account wordt gevraagd om een wachtwoord. Dit is natuurlijk voor extra veiligheid. Het wachtwoord wordt versleuteld uitgewisseld tussen de client en de server, net als het overige SSH verkeer. Dit heeft als voordeel dat er geen wachtwoorden of andere data over de lijn gaan die leesbaar zijn voor pakketsniffers.
Als je vaak vanaf je eigen thuisbox moet inloggen op een server, dan kan het vervelend zijn om steeds het wachtwoord te moeten invoeren. Daarom kun je gebruik maken van de authorized_keys file in de ~/.ssh directory van je server.
Je gaat als volgt te werk. Type op je thuisbox het volgende commando in (als gewone gebruiker):
ssh-keygen -t rsa
Er wordt nu een unieke sleutel gemaakt voor jouw machine, waaraan de server jou moet gaan herkennen als je voortaan inlogt. Er wordt een bestandje gemaakt: ~/.ssh/id_rsa.pub
Log in op de server (via SSH natuurlijk) en plak de inhoud van het pasgenoemde bestand in het bestand ~/.ssh/authorized_keys - als deze file nog niet bestaat, kun je hem gewoon aanmaken. Sla het bestand op en log weer uit.
De volgende keer dat je inlogt, vraagt de server niet meer om je wachtwoord. Erg handig.
2. Onveilige verbindingen veilig maken
Het volgende truukje is erg handig als je gebruik maakt van diensten die niet gecodeerd zijn (pop, smtp, irc), maar je wilt niet dat jouw gegevens over de netwerkkabel vliegen.
Stel, je wilt een beveiligde IRC verbinding opzetten. Dit kan handig zijn als je geen zin hebt dat iedereen op jouw netwerk jouw gesprekken kan volgen. Het nuttigste is natuurlijk als je gesprekspartners ook een beveiligde verbinding hebben. Ook als je het een en ander wilt activeren waar je een password voor moet invoeren (o-lines bijvoorbeeld), is het erg fijn om te weten dat dit password niet zomaar ongecodeerd over de lijn wordt geschoten.
Het is met de volgende techniek ook mogelijk om verbinding te leggen met diensten op de server, ook al heb je er (door een firewall bijvoorbeeld) geen toegang toe. Met een SSH shell account kun je in principe alles aanspreken op de server.
Het werkt als volgt: je zet een verbinding op via ssh naar de gewenste server, en laat daar het verkeer over lopen. In ons voorbeeld IRC. De client en de IRC server weten niet beter of het is 'normaal' dataverkeer, maar door de tussenkomst van SSH is dit verkeer versleuteld.
Maak eerst de verbinding vanaf je client:
ssh -L 9001:localhost:6667 servernaam
Waarbij servernaam de domeinnaam of het IP is van de server. Poort 9001 heb ik willekeurig gekozen. Gewoon een vrije poort op je localhost. Deze laat ik babbelen met poort 6667 op 'servernaam'. Vervolgens log je met je IRC client in op localhost, poort 9001. Bijvoorbeeld:
irssi -c localhost -p 9001
De verbinding is nu gemaakt en alle verkeer wordt versleuteld. Dit kan dus met praktisch alle services die een server te bieden heeft. Zeker in combinatie met de authorized_key methode uit het eerste hoofdstuk is op een veilige manier werken toch nog praktisch.
Met behulp van programma's als ethereal kun je je netwerk 'sniffen' om te kijken of er nog onversleutelde passwords en data verstuurd worden. Dit valt buiten het bereik van dit artikeltje.