Protocollo Telnet - Politecnico di Milano

Transcript

Protocollo Telnet - Politecnico di Milano
Protocollo Telnet
Introduzione
Telnet (Teletype network) is a network protocol used on the Internet or local area networks to
provide a bidirectional interactive communications facility. Typically, telnet provides access to a
command-line interface on a remote host via a virtual terminal connection which consists of an 8-bit
byte oriented data connection over the Transmission Control Protocol (TCP). User data is
interspersed in-band with TELNET control information.
The term telnet may also refer to the software that implements the client part of the protocol. Telnet
client applications are available for virtually all computer platforms. Most network equipment and
operating system with a TCP/IP stack support a Telnet service for remote configuration (including
systems based on Windows NT). Because of security issues with Telnet, its use has waned in favor
of SSH for remote access.
Fonte: Wikipedia - http://en.wikipedia.org/wiki/Telnet
Utilizzo
Il protocollo telnet è stato utilizzato per lungo tempo in ambienti di reti UNIX per poter accedere a
macchine remote e per poterle così amministrare a distanza. Tramite il protocollo telnet si accede
alla shell dei comandi remota.
Per motivi di intrinseca insicurezza del protocollo telnet, di default tale servizio è disabilitato su
tutte le macchine server che operano in rete; esiste comunque la possibilità di forzare l'avvio di tale
servizio con il seguente comando:
$ sudo /etc/init.d/openbsd-inetd start
Verificare, prima e dopo aver dato il comando precedente, come cambiano i servizi di rete attivi e in
ascolto tramite il comando “netstat -nat”.
Con il comando precedente viene quindi abilitato il telnet, ma, per motivi di sicurezza, questo è
abilitato solo per connessioni da localhost. Per abilitare (attenzione: si compromette pesantemente
la sicurezza della macchina) le connessioni telnet dalla rete esterna è necessario modificare, come
root, il file “/etc/hosts.allow” da
ssh sshd : ALL@ALL : ALLOW
ALL : 127.0.0.1 LOCAL : ALLOW
ALL : ALL@ALL : DENY
a
ssh sshd in.telnetd : ALL@ALL : ALLOW
ALL : 127.0.0.1 LOCAL : ALLOW
ALL : ALL@ALL : DENY
dove “in.telnet.d” è il file eseguibile del server che viene lanciato alla richiesta di una connessione
telnet; con questa modifica al file di configurazione si indica espressamente al sistema di accettare
qualsiasi connessione per il “demone” telnet. Notare che il demone ssh è già configurato per
Carlo Todeschini – [email protected]
Reti di Comunicazione e Internet – Politecnico di Milano sede di Cremona – A.A. 2010-2011 – v. 1.2
1
accettare connessioni dall'esterno, dal momento che, semplificando, è la versione “sicura” del
protocollo telnet (v. prossimo paragrafo).
Esercizio 1
Eseguire il comando telnet (protocollo per la connessione a host remoti) verso una macchina della
rete del laboratorio (chiedere ad un collega il suo indirizzo IP) e sniffare la comunicazione; es:
telnet 192.168.1.131
Verificare che i pacchetti sniffati mostrano parecchie parti del traffico “in chiaro” (ovvero è possibile
leggere le parti testuali relative al prompt di login)
Nell'esercizio precedente non sarà stato possibile il login remoto perché l'utente di default presente
in Knoppix ha, appunto, “knoppix” come username ma non ha nessuna password associata.
Per poter accedere con utente knoppix a una macchina remota è necessario associare un password
all'utente con il seguente comando:
$ sudo passwd knoppix
(digitare due volte la password da assegnare all'utente knoppix)
A questo punto si potrà scambiare la password utente con un proprio collega al fine di testare una
connessione telnet completamente funzionante su una macchina remota. Sniffare il traffico generato
durante la connessione.
E' importante sottolineare quanto riportato anche da Wikipedia relativamente al protocollo telnet
perché verrà utile nelle schede successive:
[...]
Telnet is also used as a verb. To telnet means to establish a connection with the Telnet protocol,
either with command line client or with a programmatic interface. For example, a common directive
might be: "To change your password, telnet to the server, login and run the passwd command."
Most often, a user will be telnetting to a Unix-like server system or a network device such as a
router and obtain a login prompt to a command line text interface or a character-based full-screen
manager.
On many systems, a Telnet client application may also be used to establish interactive rawTCP sessions.
Fonte: Wikipedia - http://en.wikipedia.org/wiki/Telnet
Protocollo SSH
Introduzione
Secure Shell or SSH is a network protocol that allows data to be exchanged using a secure channel
Carlo Todeschini – [email protected]
Reti di Comunicazione e Internet – Politecnico di Milano sede di Cremona – A.A. 2010-2011 – v. 1.2
2
between two networked devices. Used primarily on Linux and Unix based systems to access shell
accounts, SSH was designed as a replacement for Telnet and other insecure remote shells, which
send information, notably passwords, in plaintext, leaving them open for interception. The
encryption used by SSH provides confidentiality and integrity of data over an insecure network,
such as the Internet.
Fonte: Wikipedia - http://en.wikipedia.org/wiki/Secure_Shell
Utilizzo
Verificata la debolezza intrinseca del protocollo telnet e vista l'utilità di poter accedere in console a
una macchina remota, si introduce il protocollo SSH, che permette connessioni in console
sfruttando un canale criptato.
In questo modo le informazioni scambiate, anche se sniffate, non possono essere lette/decodificate.
Avviare il server SSH, non attivo di default, sempre per motivi di sicurezza, con il seguente
comando:
$ sudo /etc/init.d/ssh start
(vengono generate le chiavi...)
Verificare, prima e dopo aver dato il comando precedente, come cambiano i servizi di rete attivi e in
ascolto tramite il comando “netstat”.
Esercizio 2
Eseguire il comando ssh (client che implementa il protocollo per la connessione sicura a host remoti)
verso una macchina della rete del laboratorio (chiedere ad un collega il suo indirizzo IP, username e
password) e sniffare la comunicazione; es:
ssh [email protected]
Verificare che i pacchetti sniffati non risultano più “leggibili” come quelli del protocollo telnet, pur
permettendo di agire sulla macchina remota come se si utilizzasse il telnet o la console locale.
Esercizio 3
Tramite ssh è possibile lanciare applicazioni grafiche, come ad esempio un editor di testi, e non solo
accedere alla console a caratteri.
Individuare i parametri necessari da utilizzare con il comando ssh utili ad abilitare questa
funzionalità
Approfondimenti
➢
➢
OpenSSH, una implementazione del protocollo SSH per Linux:
http://www.openssh.com/
… e ovviamente Google e Wikipedia
http://www.google.com/ - http://wikipedia.org/
Carlo Todeschini – [email protected]
Reti di Comunicazione e Internet – Politecnico di Milano sede di Cremona – A.A. 2010-2011 – v. 1.2
3