SSH (Secure SHell) è un protocollo che permette di stabilire una sessione remota cifrata tramite interfaccia a riga di comando con un altro host di una rete informatica, storicamente è conosciuto come il protocollo che ha mandato in soffitta lo storico telnet, a tutt'oggi viene sfruttato negli ambienti enterprise, oltre che dagli utenti più avanzati, per lavorare su più sistemi contemporaneamente da un unico terminale in modo sicuro.
Infatti il vero punto forte di SSH è l'uso di connessioni cifrate che gli ha permesso di diventare uno standard, visto che in ambienti lavorativi la sicurezza o la possibilità di autenticarsi tramite chiavi cifrate è molto importante.
SSH è stato creato da Tatu Ylonen ed è grazie a lui che oggi possiamo sfruttare i servizi di SSH tramite la porta 22 che, di default, è stata assegnata proprio al suo progetto. Ma come ha fatto la porta 22 ha diventare di uso esclusivo di tale protocollo?
Quando le prime build di SSH vennero rilasciate, era il 1995, le tecnologie come Telnet e FTP erano già largamente utilizzate negli ambienti lavorativi e l'obbiettivo di Ylonen era pensionare tali tecnologie, perché le riteneva insicure, a cui tutt'oggi sono assegnate le porte 21 (FTP) e 23 (Telnet). All'epoca la porta 22 era ancora libera e al developer sfruttarla sembrava un buon compromesso dato che numericamente era la via di mezzo tra le altre due porte e sarebbe stato facile ricordarla.
All'epoca Internet era ancora molto giovane e notevolmente meno diffusa di oggi, l'ente che si occupa di allocare le porte è l'IANA (Internet Assigned Numbers Authority) e dunque poco prima di rilasciare SSH 1.0 lo sviluppatore decise di inviare una email all'IANA per chiedere l'attribuzione della porta 22:
"Ho scritto un programma per accedere in modo sicuro da una macchina all'altra su una rete insicura. Fornisce importanti miglioramenti nella sicurezza e funzionalità rispetto ai protocolli telnet e rlogin esistenti. In particolare impedisce le varie forme di IP, DNS e routing spoofing. Il mio piano è di distribuire tale software liberamente su Internet e utilizzarlo nel modo più ampio possibile.
Vorrei ottenere un numero di porta registrato e privilegiato per il software in questione. Il numero dovrebbe essere preferibilmente nell'intervallo 1-255 in modo che possa essere usato nel campo WKS nei name server.
Allego la bozza RFC per il protocollo in questa email. Il software è stato testato in locale per diversi mesi ed è pronto per la pubblicazione, gli manca solo il numero di porta. Mi piacerebbe pubblicare il software già questa settimana e spero che l'assegnazione di tale numero avvenga in tempi brevi.
Il nome del software è "ssh" (per Secure Shell).
Cordiali saluti."
Poche ore dopo l'IANA rispose concedendogli la porta 22. Dunque il 12 giugno 1995 il developer annunciò al pubblico la fine del ciclo di beta release e il rilascio della versione 1.0 di SSH. La porta 22 è ancora quella di default su SSH ma è comunque possibile cambiarla, ad esempio in caso di testing di configurazioni multiple sul medesimo host. Basterà infatti modificare il file di configurazione chiamato sshd_config collocato nella directory /etc/ssh/ oppure specificare direttamente dalla shell quale porta sfruttare con ssh tramite l'opzione "-p".
Solitamente però i sistemi aziendali hanno dei firewall che bloccano quasi tutto il traffico in entrata, per prevenire attacchi di vario genere, ad esempio nei sistemi Linux iptables è il firewall implementato di default nel kernel, impostare il sistema in modo che permetta accessi SSH in entrata è molto semplice:
sudo iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT -p tcp --sport 22 -m conntrack --ctstate ESTABLISHED -j ACCEPT
e per salvare tale configurazione in modo permanente basta lanciare questo comando:
sudo service iptables save
Via SSH