Telnet och SSH

Telnet och SSH är två protokoll som används för fjärråtkomst till datorsystem eller servrar över nätverket. Båda protokollen möjliggör att en användare kan logga in på en fjärrdator och interagera med den som om de vore direkt anslutna till den.

Bild 1: Telnet daemon

Telnet

Telnet är ett äldre protokoll som ursprungligen utvecklades för att emulera textbaserade terminaler. De som arbetade med stora datorer använde terminaler. Ursprungligen var varje terminal ansluten till en specifik maskin (stor dator). Om man ville använda en annan maskin var man tvungen att fysiskt ta sig till platsen där den maskinen befann sig, till exempel i en annan stad.

Bild 2: IBM Terminal System 360, 1964

När persondatorerna utvecklades, introducerades Telnet. Detta gav möjligheten att logga in på avlägsna maskiner, och man kan säga att Telnet revolutionerade (år 1969) det som senare skulle bli internet som vi känner det idag. Telnet användes som ett protokoll för nätverksadministration, men det var inte lämpligt för säker kommunikation över långa avstånd eftersom all kommunikation sker i klartext och inte är krypterad. Det innebär att användarnamn, lösenord och andra känsliga data kan avlyssnas av obehöriga. Av den anledningen rekommenderas det att använda SSH istället för säkrare fjärråtkomst. Trots detta används Telnet fortfarande som ett alternativ för fjärradministration av routrar och switchar inom begränsade nätverksområden.

Telnet Konfigurationer

I det här exemplet konfigureras på routern R1 fem virtuella terminaler (VTY) med ett lösenord. Det innebär att man kan ansluta till routern via Telnet och genomföra konfigurationsändringar. I exemplet anges inte någon specifik användare eftersom vem som helst kan logga in på maskinerna så länge man känner till lösenordet. Det anges inte heller något specifikt protokoll som kan användas för Telnet-kommunikationen.

  • R1(config)# enable secret enPa55
  • R1(config)# line vty 0 4
  • R1(config-line)# password vtyPa55
  • R1(config-line)# login
  • R1(config-line)# end
  • R1#

För att testa Telnet-anslutningen från R2 kan du utföra följande kommando: R2# telnet 192.168.1.10.

Nu förbättrar jag konfigurationen genom att ställa in R1 som en Telnet-server och sedan testar jag igen Telnet från R2.

  • R1(config)# line vty 0 4
  • R1(config-line)# transport input telnet
  • R1(config-line)# password telPa55
  • R1(config-line)# login
  • R1(config-line)# end
  • R1#

Observera att vem som helst fortfarande kan logga in på router R1 med rätt lösenord. Skillnaden nu är att R1 fungerar som en dedikerad Telnet-server. Det är också viktigt att notera att lösenordet ”vtyPa55” ignoreras när du anger Telnet som inmatning. Nu testar jag Telnet-anslutningen från R2 igen.

För att säkerställa en högre nivå av säkerhet bör fjärranslutningar generellt kräva användarnamn och lösenord. I det följande exemplet skapar jag två användarkonton: ett för en nätverksadministratör och ett för en nätverkstekniker, vilka har olika privilegier och åtkomsträttigheter. Dessa användarkonton lagras i en lokal databas på router R1, vilket möjliggör en lokal hantering av användarautentisering och åtkomstkontroll.

  • R1(config)# line vty 0 4
  • R1(config-line)# no password
  • R1(config-line)# login local
  • R1(config-line)# exit
  • R1(config)# username admin privilege 15 secret ownPa55
  • R1(config)# username adminrouters privilege 12 secret ownPa55
  • R1(config)# end
  • R1#

Jag testar Telnet från R2 igen, och den här gången krävs ett användarkonto och lösenord för att få åtkomst till en R1 via Telnet.

Det finns ytterligare ett alternativ som ger en viss säkerhet, via Access List. Denna teknik filtrerar nätverkstrafik enligt konfigurerade regler, mer om ACL i kursen Nätverkssäkerhet.

SSH (Secure Shell)

SSH är en modernare och säkrare ersättning för Telnet. Det är ett kryptografiskt säkert nätverksprotokoll som möjliggör säker fjärråtkomst och säker dataöverföring över osäkra nätverk (internet).

SSH använder asymmetrisk kryptering för att etablera en säker anslutning. Vid anslutningen verifieras identiteten hos både klienten och servern genom användning av kryptografiska nycklar. Efter autentiseringen skapas en krypterad kanal mellan klienten och servern, vilket skyddar all data som överförs mellan dem.

SSH använder standardporten 22 för kommunikation och är utbrett som standardmetod för fjärråtkomst till Unix/Linux-baserade system och servrar. Det finns också SSH-klientprogram för andra plattformar, inklusive Windows

SSH konfiguration

SSH erbjuder autentisering och kryptering genom användning av RSA-publik/privat-nycklar. Det finns två versioner av SSH, version 1 och version 2. Version 2 är säkrare och den mest använda protokollversionen. För att kunna använda SSH krävs att IOS (operativsystemet) har stöd för det och att routern har ett namn och en domänkonfiguration.

Jag använder samma nätverkstopologi som tidigare för Telnet. Nu kommer jag att konfigurera R1 som en SSH-server och R2 som en SSH-klient. Innan konfigurationen påbörjas har jag återställt båda routerna till fabriksinställningar och genomfört grundläggande konfigurationer, inklusive att tilldela namn, säkra konsolporten, använda samma användarkonto och säkra privilegierat exekveringsläge.

  • R1(config)# ip domain-name diginto.se
  • R1(config)# crypto key generate rsa general-keys modulus 1024
  • R1(config)# ip ssh version 2
  • R1(config)# line vty 0 4
  • R1(config-line)# transport input ssh
  • R1(config-line)# login local
  • R1(config-line)# end
  • R1#

Från R2 startar jag SSH-anslutningen med kommandot: R2# ssh -l admin 192.168.1.10