SSH

Note cruciali di Sicurezza: Debian ha avuto un serio problema con le Chiavi SSL. Esso è presente in tutte le ISO dei live-CD e nelle installazioni su disco fisso delle versioni di sidux Chaos, Tartaros, Gaia, Eros e Nyx.

Le correzioni sono on line sul wiki di debian, ed anche nel forum sidux. Vi preghiamo di seguire l'avverimento perchè è una Nota di Sicurezza molto seria.

Nel mondo dei computer, Secure Shell o SSH è un insieme di standard con associato un protocollo di rete che permette di stabilire un canale sicuro tra un computer locale e uno remoto. Usa una crittografia a chiave pubblica per autenticare il computer remoto e (opzionalmente) permettergli di autenticare l'utente. SSH fornisce confidenzialità e integrità allo scambio dei dati tra due computer usando la crittografia e i codici di autenticazione messaggi (MACs). SSH è usato tipicamente per autenticarsi presso una macchina remota ed eseguire comandi, ma supporta anche il tunneling, il reindirizzamento arbitrario di porte TCP e connessioni X11; esso può trasferire i file usando i protocolli SFTP o SCP associati. Un server SSH, ascolta, in via predefinita sulla porta TCP standard numero 22. fonte Wikipedia

Abilitare i protocolli di sicurezza per SSH

Permettere un accesso root, via ssh, non è sicuro. Non vogliamo che, in via predefinita, gli utenti root entrino in ssh; debian dovrebbe essere sicura, non insicura, nè noi vogliamo concedere agli utenti 10 minuti per fare un rapido attacco con un dizionario di password sul nostro accesso ssh; quindi è corretto limitare il tempo e i tentativi di accesso!

Per aiutare a rendere più sicuro il vostro sistema ssh, lanciate semplicemente con i privilegi di root il vostro elaboratore di testo e aprite questo file:

/etc/ssh/sshd_config

Poi localizzate i punti potenzialmente pericolosi e cambiateli.

I punti pericolosi che dovete localizzare sono i seguenti:

Port <porta_desiderata>: Questo valore deve essere impostato sulla porta corretta che state reindirizzando dal router. Naturalmente anche sul vostro router deve essere impostato il 'Port forwarding' o reindirizzamento del traffico. Se non sapete come farlo forse non dovreste usare ssh da remoto. Debian assegna in modo predefinito la porta 22, ma è raccomandato usare una porta fuori dalla gamma di scansione. Supponiamo di usare la porta 5874, cosicchè il valore da immettere al comando 'port' di cui sopra diventa:

Port 5874

ListenAddress <ip_della_macchina_o_della_interfaccia_di_rete >: Ora naturalmente poichè state reindirizzando una porta dal vostro router, avrete bisogno che la macchina abbia un indirizzo statico sulla rete, a meno che usiate un server dns localmente, ma se state facendo qualcosa di complicato e vi servono queste direttive, combinerete probabilmente un grosso pasticcio. Così supponiamo che questo indirizzo sia:

ListenAddress 192.168.2.134

Poi, il Protocol 2 è nei predefiniti di debian ma controllate per essere sicuri con:

LoginGraceTime <tempo in secondi per l'accesso>: Questa voce ha un tempo assurdo predefinito di 600 secondi. Non ci tenete 10 minuti per scrivere il vostro nome utente e la parola chiave, così rendiamo più sicura la voce impostando:

LoginGraceTime 45

Ora avrete 45 secondi per autenticarvi e gli hackers non avranno 600 secondi ogni volta per tentare di scoprire la vostra parola chiave

PermitRootLogin <yes>: Perchè debian imposti PermitRootLogin a 'si', è piuttosto incomprensibile così ripariamo impostando 'no'

PermitRootLogin no
StrictModes yes

MaxAuthTries <xxx>: Numero dei tentativi per l'autenticazione d'accesso; potete impostare 3 o 4 tentativi ma non di più

MaxAuthTries 2

Potrebbe servirvi di aggiungere alcune di queste voci se non sono già presenti :

AllowUsers <user names with spaces allowed to access via ssh>

AllowUsers <xxx>: permette ad un utente unico ssh senza diritti di usare adduser (aggiungi utente) per aggiungere l'utente e impostare il nome qui, come:

AllowUsers whomevertheuseris

PermitEmptyPasswords <xxx>: assegna a quell'utente una lunga e simpatica parola chiave che è impossibile da indovinare anche in un milione di anni che è la sola che permette l'ingresso all'utente unico di ssh. Una volta entrati, potete usare su per diventare root:

PermitEmptyPasswords no

PasswordAuthentication <xxx>: ovviamente, per l'accesso con password, non con l'accesso a chiave, vi serve una password per essere al massimo e a meno di usare chiavi vi serve il seguente per essere 'yes'

PasswordAuthentication yes [unless using keys]

Infine:

/etc/init.d/ssh restart

Ora dovreste avere un ssh più sicuro; non completamente sicuro ma migliore, inclusa la creazione di un utente unico ssh con adduser

Nota: Se ricevete un messaggio di errore e ssh si rifiuta di connettervi, andate nella vostra $HOME e cercate una cartella nascosta chiamata .ssh e cancellate il file known_hosts e riprovate. Questo errore si presenta principalmente quando avete impostato dinamicamente gli indirizzi IP (DCHP)

Uso di applicazioni X Window via rete attraverso SSH

Eseguire una applicazione su un computer remoto e avere la sua interfaccia grafica sulla vostra macchina locale.

Ipotesi:
* sidux
* computer locale con IP: 192.168.1.10/24 (che mostra solo X11)
* computer remoto con IP: 192.168.1.2/24 (che realmente fa girare la applicazione X11)

Configurazione:

sul computer remoto, dentro /etc/hosts.allow cambiate una riga aggiungendo i diritti per l'accesso ssh:

ssh sshd : 192.168.1.0/24 : ALLOW # ad esempio permette a tutti gli indirizzi della rete locale l'accesso al server ssh server :code:

Sul computer locale aprite una konsole e immettete il comando per avviare una connessione ssh con il rendirizzamento di X:

ssh -X username@xxx.xxx.xxx.xxx (or IP)
(immettete la password ssh quando vi viene richiesto, 
o la password alla chiave ssh se avete mandato 
la vostra chiave pubblica al sistema remoto sul quale l'avete aggiunta
ai file 'authorized_keys' dell'utente)

Eseguire la applicazione X nella shell, ad esempio"iceweasel".

ssh -X username@xxx.xxx.xxx.xxx (or IP)
(immettete la password ssh quando vi viene richiesto, 
o la password alla chiave ssh se avete mandato 
la vostra chiave pubblica al sistema remoto sul quale l'avete aggiunta
ai file 'authorized_keys' dell'utente)
iceweasel o oocalc o oowriter o kspread

Accesso remoto ssh con il reindirizzamento di X da un PC-Windows:

* Scaricate e masterizzate il XLiveCD Cygwin
* Mettete il CD nel lettore CD-ROM del PC con Windows e aspettate che si avvii.
Premete "continua" fino all'avvio d una finestra di shell e immettete:

ssh -X username@xxx.xxx.xxx.xxx 

Notate: xxx.xxx.xxx.xxx è l'indirizzo IP del computer remoto linux o il suo URL (per esempio usando un URL di dyndns.org) mentre lo "username" è naturalmente quello di un utente che esiste sul computer remoto. Dopo essere entrati, avviate "kmail", per esempio e controllate la vostra posta!

Importante: assicuratevi che il file host.allow abbia una voce che permetta l'accesso da PC che sono su altre reti. Se siete dietro un Firewall-NAT o un router assicuratevi che la porta 22 sia reindirizzata 'forwarded' alla vostra macchina linux

SSH con Konqueror

Konqueror e Krusader sono entrambi in grado di accedere a dati remoti usando sftp:// e entrambi usano il protocollo ssh protocol.

Come lavorano:
1) Aprite una nuova finestra di Konqueror
2) Immettete nella barra degli indirizzi: sftp://username@ssh-server.com

Esempio 1:

sftp://sidux1@remote_hostname_or_ip
(Nota: Comparirà una finestra chiedendovi la vostra password ssh, digitatela e premete OK)

Esempio 2:

sftp://username:password@remote_hostname_or_ip
(Con questa forma NON vedrete la finestra con richiesta di password ma verrete direttamente connessi.)

Per un sistema di rete LAN:

sftp://username@10.x.x.x or 198.x.x.x.x
(Note: Comparirà la finestra di richiesta password ssh, digitatela e premete OK)

La connessione a interfaccia grafica SSH di Konqueror ora è inizializzata. Con questa finestra di Konqueror potete lavorare con i file (copy/view) sul server SSH come se fossero in una cartella della macchina locale.

NOTA: Se avete impostato la porta ssh diversa dalla 22, la predefinita, dovete specificare al porta che i programmi sftp/fish devono usare:

sftp://user@ip:port

'user@ip:port' è la sintassi standard per molti programmi come sftp, smb, fish

SSHFS - Montare Filesystem da Remoto

SSFS è un metodo facile, veloce e sicuro che usa FUSE per montare un filesystem remoto. L'unica richiesta per il lato server è un daemon ssh in esecuzione.

Sul lato client dovrete probabilmente avere installato sshfs: installare fuse e groups non è necessario su sidux eros forward poichè sono installati per default:

Comunque, per installare sshfs:

apt-get update && apt-get install sshfs

Ora dovete uscire e di nuovo autenticarvi

Montare un filesystem remoto è molto facile:

sshfs username@remote_hostname:nome_cartella_del_punto_di_mount_locale

dove username è il nome dell'accesso sull'host remoto :

Se non sono immesse dei nomi di cartella, verrà montata la cartella "home" dell'utente remoto. Attenzione: il carattere due punti : è essenziale anche se non viene poi digitato il nome di nessuna cartella!

Dopo aver montato le cartelle remote esse si comportano come qualsiasi altra cartella del filesystem locale, potete sfogliare i file, modificarli ed eseguire script su di essi, proprio come fate su un filesystem locale.

Se volete smontare l'host remoto usate il seguente comando:

fusermount -u nome_punto_di_mount_locale

Se usate sshfs frequentemente sarebbe una buona scelta aggiungere una voce in fstab:

username@remote_hostname:/nome_cartella_remota /nome_punto_di_mount_locale fuse.sshfs user,allow_other,uid=1000,gid=1000,noauto 0 0

Questo permetterà ad ogni utente che fa parte del gruppo "fuse" di montare il filesystem usando il ben conosciuto comando di mount :

mount /percorso/del/punto/di/mount

Con quella stringa nel vostro fstab potete naturalmente usare anche il comando unmount per smontare il filesystem:

umount /percorso/del/punto/di/mount

Per controllare se fate parte o no del gruppo "fuse" usate il seguente comando:

cat /etc/group | grep fuse

Dovreste vedere qualcosa come:

fuse:x:117: <username>

Se il vostro nome utente "username" non appare, usate il comando adduser come root:

adduser <vostro_nome_utente> fuse

Ora il vostro nome utente dovrebbe venire elencato e dovreste essere in grado di eseguire il comando:

Nota: Lo "id" non viene elencato nel gruppo "fuse", finchè non siete usciti e rientrati di nuovo

mount punto_di_mount_locale

e

umount punto_di_mount_locale
Content last revised 17/05/2008 1245 UTC