Molte località richiedono di interrompere la connessione al sistema con Telnet e di utilizzare SSH al suo posto. La logica è una maggiore sicurezza. Quando si effettua il login con Telnet la password, così come qualsiasi altro dato, viene inviata in chiaro. Chiunque abbia un analizzatore di rete può leggere ciò che avete inviato. SSH, invece, cripta tutti i dati rendendoli illeggibili. Il presupposto è che i demoni Telnet e SSH presentino un'esperienza utente intercambiabile; questo non è corretto.
In primo luogo, ci sono molti diversi clienti SSH e Telnet. Questi hanno diverse interfacce utente e possono utilizzare diversi tipi di terminali. Anche quando usano lo stesso tipo di terminale, possono comportarsi in modo diverso poiché stanno emulando un terminale e le emulazioni non sono perfette. Ma, anche scontando le differenze nel software del client, ci sono diverse sottili e non così sottili differenze tra una sessione connessa ad un demone Telnet (sia telnetd che telnet_msd) e una connessa al demone SSH. Ci sono anche una serie di bug, di cui mi occuperò. Tenete presente che sto usando il demone SSH di Internet Security Pack (ISP) per la versione 2.1.0k di OpenVOS. Questa è l'ultima versione disponibile al momento in cui ho scritto questo.
Nomi utente:
Prima ancora di effettuare il login, c'è una differenza nel modo in cui Telnet e SSH gestiscono il vostro nome utente. I demoni Telnet vi permetteranno di effettuare il login con qualsiasi variazione univoca del vostro nome utente e il nome non è sensibile alle maiuscole e minuscole. Dato il nome utente Noah_Davids, posso effettuare il login come Noah_D, noah_d, NoAh_D o NoAh_DaViD quando uso Telnet, ma l'unica cosa che funziona con SSH è Noah_Davids. Il mio alias di nd funziona allo stesso modo. Con Telnet posso usare nd, ND, o nD, ma con SSH solo nd funzionerà.
Nomi di gruppo:
Il prompt di login presentato con una connessione Telnet mi permette di specificare un nome del gruppo
telnet 164.152.77.217 Provare... Collegato a 164.152.77.217. Il carattere di fuga è '^]'. OpenVOS Release 17.1.0ax, modulo %phx_vos#m17 Effettuare il login 15:24:14 login nd.SysAdmin Password? [inserire la password qui] Noah_Davids.SysAdmin loggato su %phx_vos#m17 alle 12-12-12-12 15:24:55 mst. |
Figura 1 - Login Telnet con nome del gruppo |
Ma il protocollo SSH permette solo un nome utente. Se includo il nome del gruppo, esso viene trattato come parte del nome utente e il login fallisce.
>system>openssl>bin>bin>ssh [email protected] nd.SysAdminPassword @164.152.77.217: [password inserita qui]. Permesso negato, si prega di riprovare. [email protected]'s password: |
Figura 2 - SSH login con nome del gruppo |
Una volta effettuato il login è possibile cambiare il proprio gruppo con un sotto-login (ma si veda la sezione su ssl-403 qui sotto per le limitazioni attuali)
Differenze di password:
La differenza maggiore nella gestione delle password tra le connessioni Telnet e SSH è che SSH non richiede password per l'autenticazione. È possibile impostare una coppia di chiavi pubbliche/private e saltare l'intera fase di immissione della password. Date un'occhiata a Impostazione di Stratus STCP SSH per utilizzare l'autenticazione a chiave pubblica per una descrizione su come impostarla.
Se si utilizzano le password, ci sono alcune differenze con cui bisogna fare i conti. In primo luogo, la scadenza della password viene gestita in modo diverso. Con Telnet il prompt di login vi avvisa quando la vostra password sta per scadere e vi permette di modificarla.
telnet 164.152.77.217
Provare...
Collegato a 164.152.77.217.
Il carattere di fuga è '^]'.
OpenVOS Release 17.1.0ax, modulo %phx_vos#m17
Effettuare il login 14:04:40
login nd
Password? [password attuale inserita qui]
La tua password scadrà tra 5 giorni.
Nuova password (prima immissione)?
|
Figura 3 - Scadenza della password di connessione Telnet avvertenza/prompt |
SSH vi avvertirà, ma non avete la possibilità di cambiarlo. Devi usare il comando change_password per invalidare la tua password, che ti costringerà a cambiarla la prossima volta che effettuerai il login.
ssh [email protected] Password di [email protected]: [password attuale inserita qui]. La tua password scadrà tra 5 giorni. Noah_Davids.CAC ha effettuato il login su %phx_vos#m17 alle 13-01-09 13:06:35 mdt. Benvenuti. pronto 13:06:35 cambiare_password La tua password non è più valida. È necessario cambiarla la prossima volta che si effettua il login. pronto 13:06:49 |
Figura 4 - Avviso di scadenza della password di connessione SSH e il comando change_password |
Una volta scaduta la password (o l'hai invalidata con il comando change_password) ti verrà richiesto di cambiarla. A differenza di Telnet questo non è facoltativo, a questo punto è necessario cambiare la password. Dopo aver cambiato la password, l'utente si disconnette automaticamente e deve effettuare nuovamente il login.
ssh [email protected] La password di [email protected]: ATTENZIONE: La tua password è scaduta. Devi cambiare la tua password ora e fare di nuovo il login! Password attuale? [password attuale inserita qui] Nuova password (prima immissione)? [nuova password inserita qui] Nuova password (seconda immissione)? [nuova password inserita qui] Collegamento a 164.152.77.217 chiuso. |
Figura 5 - Modifica della password durante la connessione SSH |
Un'altra differenza è che le connessioni SSH non supportano le password di risposta alle sfide, mentre le connessioni Telnet lo fanno.
Sottosistemi:
Quando ci si collega per la prima volta ad un modulo con Telnet il comando di login permette di selezionare un sottosistema
OpenVOS Release 17.1.0ax, Modulo %phx_vos#m17
Effettuare il login 11:23:40
login -forma -uso
--------------------------------- login -------------------------------
nome_utente:
-privilegiato: come registrato
-password:
-cambio_password: no
-priorità:
-home_dir:
-modulo:
-sottosistema:
|
Figura 6 - La connessione Telnet permette di specificare il nome di un sottosistema |
Il protocollo ssh non ha un meccanismo per specificare il nome di un sottosistema. Se il flag must_use_subsystem è impostato nella voce del database di registrazione, allora viene automaticamente utilizzato il primo sottosistema specificato nella voce di registrazione. Se il bit non è impostato, allora non viene utilizzato nessun sottosistema. (Si noti che prima del rilascio dell'ISP 2.1.0j il primo sottosistema sarebbe usato anche se il bit must_use_subsystem non è stato impostato). Mentre gli argomenti del comando di login disponibili prima di effettuare il login includono un modo per specificare il sottosistema (vedere figura 6) una volta effettuato il login, tale opzione non è più disponibile (vedere figura 7).
login -forma -uso --------------------------------- login ------------------------------- nome_gruppo: CAC -privilegiato: sì -priorità: -password: -modulo: |
Figura 7 - Argomenti della riga di comando del sublogin |
L'unico modo per entrare in un sottosistema una volta effettuato il login è quello di tornare a Telnet e di effettuare nuovamente il login.
telnet 127.0.0.0.1 Provare... Collegato a 127.0.0.1. Il carattere di fuga è '^]'. OpenVOS Release 17.1.0ax, modulo %phx_vos#m17 Effettuare il login 11:37:34 login nd -sottosistema test_ss Password? Noah_Davids.CAC ha effettuato il login su %phx_vos#m17 alle 12-12-13 11:37:49 mst. questo è il sottosistema di prova pronto 11:37:49 |
Figura 8 - Telnet all'indirizzo di loopback ed effettuare nuovamente il login per accedere ad un sottosistema |
Controllo degli accessi:
Sia le connessioni Telnet che SSH supportano i TCP Wrapper per consentire di limitare l'accesso in base all'indirizzo IP, ma con i demoni Telnet il default è che i TCP Wrapper non sono abilitati e bisogna abilitarli esplicitamente con l'argomento di controllo -tcpwrapper_check. Mentre con il demone SSH il TCP Wrappers è abilitato di default e non c'è modo di disabilitarlo. È possibile disabilitarlo efficacemente permettendo tutte le connessioni SSH nel file di configurazione TCP Wrappers hosts.allow.
telnetd -forma -uso
------------------------------- telnetd ------------------------------
-file_servizio: >sistema>stcp>telnetservice
-tcpwrapper_check: no
-numerico: sì
|
Figura 9 - Abilitazione dei Wrapper TCP nel demone telnetd |
telnet_msd -forma -uso
------------------------------ telnet_msd ----------------------------
-rete_port: 24
-max_sessioni: 28
-errore_severità: 2
-separate_log: sì
-log_dir: >sistema>stcp>logs
-vterm_starname: telnet*
-vterm_login: sì
-vterm_slave_id:
-estensione: 133
-forza_edit: sì
-Valore_decimale_EC: 8
-Valore_decimale_EL: 21
-tcpwrapper_check: no
-numerico: no
|
Figura 10 - Abilitazione dei TCP Wrapper nel demone telnet_msd |
Il demone sshd supporta anche le opzioni nel file sshd_config per consentire di specificare gli utenti o i gruppi a cui è consentito l'accesso utilizzando ssh (le direttive AllowUsers e AllowGroups) o l'accesso negato utilizzando ssh (direttive DenyUsers e DenyGroups). Queste direttive permettono di specificare i nomi utente, o i domini o le combinazioni di origine. E' possibile consentire noah_davids da corp.stratus.com ma negarlo da az.stratus.com.
AllowUsers *@*.stratus.com Negatori *@*az.stratus.com |
Figura 11 - Esempio di direttive AllowUsers e DenyUsers in sshd_config |
>sistema>openssl>bin>bin>ssh [email protected] La password di [email protected]: Permesso negato, si prega di riprovare. La password di [email protected]: |
Figura 12 - Accesso da phxtest-m15.az.stratus.com negato a causa della direttiva DenyUsers |
Ambiente di comando:
Una volta effettuato il login in una connessione Telnet vi presenta l'ambiente di comando VOS standard. SSH permette all'amministratore di specificare l'ambiente di comando standard o l'ambiente bash shell. Questo viene fatto in base ai numeri di porta.
d sshservices %phx_vos#m17_mas>opt>openssl>etc>sshservices 12-12-13 12:31:31 mst ssh "window_term" "" "login" 1 1 s$pt_log.m16 ssh2200 "finestra_termine" " "-conchiglia" "bash" 1 1 s$pt_log.m16 |
Figura 13 - file sshservices, la porta 22 è la riga di comando standard del VOS, porta 2200 è il bash shell |
>system>openssl>bin>bin>ssh [email protected] -p 2200 La password di [email protected]: Benvenuti. sh-2.05$ |
Figura 14 - Connessione SSH utilizzando la porta 2200 e ottenendo un bash shell |
Variabili ambientali:
Per default le connessioni Telnet impostano solo 6 variabili d'ambiente mentre le connessioni SSH ne impostano 12
env HOME =/SysAdmin/Noah_Davids LOGNAME=radice PATH=.:/biblioteca_di_sistema/comando:/biblioteca_di_sistema/applicazioni:/biblioteca_di_sistema/maint_libreria +y:/sistema/nio/biblioteca_di_comando:/sistema/biblioteca_degli_utensili:/opt/apache/bin:/opt/libxml +2/bin:/opt/php/bin:/opt/openssl/bin:/opt/mysql/bin:/system/stcp/command_library +:/sistema.17.1/gnu_libreria_biblioteca_bin VOS_INCLUDE_PATH=.:/opt/apache/include:/opt/openssl/include:/opt/mysql/include/m +ysql:/sistema/stcp/include_libreria/compat:/sistema/include_libreria VOS_OBJECT_PATH=.:/opt/apache/lib:/opt/openssl/lib:/opt/mysql/lib/mysql:/system/ +stcp/biblioteca_oggetto/complib:/sistema/biblioteca_oggetto_posix/filetto:/sistema/posix +biblioteca_oggetto:/sistema/biblioteca_oggetto:/sistema/biblioteca_oggetto TERM=vt100 |
Figura 15 - Variabili d'ambiente impostate in una connessione Telnet |
env HOME =/SysAdmin/Noah_Davids PATH=.:/biblioteca_di_sistema/comando:/biblioteca_di_sistema/applicazioni:/biblioteca_di_sistema/maint_libreria +y:/sistema/nio/biblioteca_di_comando:/sistema/biblioteca_degli_utensili:/opt/apache/bin:/opt/libxml +2/bin:/opt/php/bin:/opt/openssl/bin:/opt/mysql/bin:/system/stcp/command_library +:/sistema.17.1/gnu_libreria_biblioteca_bin VOS_INCLUDE_PATH=.:/opt/apache/include:/opt/openssl/include:/opt/mysql/include/m +ysql:/sistema/stcp/include_libreria/compat:/sistema/include_libreria VOS_OBJECT_PATH=.:/opt/apache/lib:/opt/openssl/lib:/opt/mysql/lib/mysql:/system/ +stcp/biblioteca_oggetto/complib:/sistema/biblioteca_oggetto_posix/filetto:/sistema/posix +biblioteca_oggetto:/sistema/biblioteca_oggetto:/sistema/biblioteca_oggetto TERM=vt100 TZ=mst+07:00:00:00 UTENTE=Noah_David LOGNAME=Noah_Davids MAIL=/var/spool/mail/Noah_Davids SHELL=/bin/sh SSH_CONNECTION=164.152.77.34 49573 164.152.77.77.217 22 SSH_TTY=#s$pt_log.m16_3 |
Figura 16 - Variabili d'ambiente impostate in una connessione SSH |
Tipi di dispositivi:
Infine, questa non è una differenza tra Telnet e SSH, ma tra i demoni telnetd e sshd e il demone telnet_msd. Sia telnetd che sshd usano dispositivi window_term mentre telnet_msd usa dispositivi vterm. Ci sono alcune differenze tra il modo in cui vterms e i dispositivi window_term trattano alcuni dei tasti funzione (come CANCEL) sulla linea di comando e il modo in cui gestiscono l'output dello schermo grezzo. Alcune applicazioni che creano i propri moduli e non sono state aggiornate per utilizzare i nuovi s$control OP_CODES non presentano tali moduli correttamente utilizzando i dispositivi window_term. Il secondo modo migliore per trattare queste applicazioni è quello di usare un tunnel SSH per connettersi al sistema, il tunnel viene poi configurato per connettersi al demone telnet_msd. Il modo migliore per gestire l'applicazione è, naturalmente, aggiornarla per utilizzare il nuovo OP_CODES.
Oltre alle differenze di cui sopra che sono inerenti a Telnet e SSH, ci sono alcuni bug che verranno corretti in una futura release.
ssl-403 Gruppi disponibili:
Quando ti connetti con Telnet tutti i gruppi specificati nella tua voce di registrazione sono disponibili per i sublogins, ma con ssh sono disponibili solo i primi 5 gruppi.
Dato che sono registrato presso i gruppi, CAC, SysAdmin, Gruppo_3, Gruppo_4, Gruppo_5, Gruppo_6. Posso fare un sublogin utilizzando qualsiasi gruppo da una connessione Telnet
telnet 164.152.77.217 Provare... Collegato a 164.152.77.217. Il carattere di fuga è '^]'. OpenVOS Release 17.1.0ax, modulo %phx_vos#m17 Si prega di effettuare il login 15:38:02 login nd Password? [password attuale inserita qui] Noah_Davids.CAC ha effettuato il login su %phx_vos#m17 alle 12-12-12-15:38:08 mst. login Gruppo_5 Noah_Davids.Group_5 ha effettuato il login su %phx_vos#m17 alle 12-12-12-15:39:39 mst. pronto 15:39:39 logout login Gruppo_6 Noah_Davids.Group_6 ha effettuato il login su %phx_vos#m17 alle 12-12-12-12 15:40:13 mst. pronto 15:40:13 |
Figura 17 - sotto-login con connessione Telnet |
Tuttavia, con ssh, quando cerco di usare Group_6 ottengo un errore.
>sistema>openssl>bin>bin>ssh [email protected] La password di [email protected]: Noah_Davids.CAC ha effettuato il login su %phx_vos#m17 alle 12-12-12-15:41:02 mst. pronto 15:41:02 login Gruppo_5 Noah_Davids.Group_5 ha effettuato il login su %phx_vos#m17 alle 12-12-12-12 15:41:24 mst. pronto 15:41:24 logout login Gruppo_6 login: Formato non valido in argomento. Gruppo_6 non consentito per nome_gruppo. pronto 15:41:59 |
Figura 18 - sotto-login con connessione SSH |
ssl-418 - Il sottolivello_processo:
I login via Telnet hanno un livello di sotto-processo 0, mentre quelli via SSH hanno un livello di sotto-processo 3.
telnet 164.152.77.217
Provare...
Collegato a 164.152.77.217.
Il carattere di fuga è '^]'.
OpenVOS Release 17.1.0ax, modulo %phx_vos#m17
Effettuare il login 14:15:34
login nd
Password? [password attuale inserita qui]
Noah_Davids.CAC ha effettuato il login su %phx_vos#m17 alle 12-12-13 14:15:39 mst.
pronto 14:15:39
display_line (livello_di_processo_di_processo_info)
0
pronto 14:15:49
|
Figura 19 - Livello_di_processo impostato in una connessione Telnet |
>sistema>openssl>bin>bin>ssh [email protected] Password di [email protected]: [password attuale inserita qui]. Noah_Davids.CAC ha effettuato il login su %phx_vos#m17 alle 12-12-13 14:12:23 mst. pronto 14:12:23 display_line (livello_di_processo_di_processo_info) 3 pronto 14:12:37 |
Figura 20 - Livello_di_processo impostato in una connessione SSH |
Aggiornamento 14 gennaio 2013: Questo si rivela essere una caratteristica e non un bug. Il processo sshd viene biforcato prima quando viene fatto start_process per avviare il processo di ascolto, poi quando sshd accetta la connessione e una terza volta quando viene creato il processo di login dell'utente. Telnet utilizza un meccanismo diverso per avviare il processo utente che non comporta alcun processo a biforcazione.
Problemi di fuso orario:
Infine, voglio solo dire che ci sono stati diversi problemi legati al passaggio dall'ora legale all'ora solare, o più in generale al semplice cambio di fuso orario. Le sessioni registrate tramite SSH non riflettono le nuove impostazioni predefinite. Questi problemi dovrebbero essere tutti risolti in quest'ultima release (2.1.0k).