SSH: Difference between revisions

From Web
Jump to navigation Jump to search
 
(44 intermediate revisions by the same user not shown)
Line 1: Line 1:
Note per usare ssh (Secure SHell from [http://en.wikipedia.org/wiki/Ssh Wikipedia]), tool molto potente e spesso sotto-utilizzato.
Note per usare ssh (Secure SHell from [http://en.wikipedia.org/wiki/Ssh Wikipedia]), tool molto potente e spesso sotto-utilizzato.


== Importante ==


Dal 2008 ci sono dei ''worm'' che attaccano i server ssh, in particolare, provano migliaia di combinazioni di username/password alla ricerca di credenziali ''deboli'' come:
== Client Ssh ==
demo demo
user user1
user resu
marco marco
Quando trova una macchina vulnerabile il worm si installa su tale macchina e comincia la ricerca di altre macchine.


E' quindi importante configurare ssh con username e sopratutto password "sicure".
Elenco parziale di alcuni software per l'accesso a server ssh divisi per sistema operativo.


Consigli
=== Accesso SFTP ===
* Su macchine linux installare [http://www.fail2ban.org/wiki/index.php/Main_Page fail2ban] o equivalente.
Permette l'accesso al file-system del server.
* Possibilmente in ssh utilizzare il ''Collegamento a un server con chiave pubblica e senza password '' (descritto in questa pagina) e disabilitare l'autenticazione via password.


Link utili:
* per Windows - [http://winscp.net/ WinScp] ([http://winscp.net/eng/download.php download])
* http://it.wikipedia.org/wiki/Password#Norme_elementari_di_sicurezza
* per Linux (gnome) - aprire una cartella nautilus e scrivere ad esempio "sftp://user@box.ing.unimo.it/"
* http://en.wikipedia.org/wiki/Password#Password_cracking
* per Mac - [https://cyberduck.io/ Cyberduck]
* per Mac o Windows - [https://filezilla-project.org Filezilla]
 
=== Accesso tramite shell ===
Permette di controllare il server da riga di comando.
 
* per Windows - Putty http://www.chiark.greenend.org.uk/~sgtatham/putty/ [http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html download] terminale ssh che permette il ''port forwarding''
* per Linux - installare openssh e scrivere a riga di comando "ssh user@server".
* per Mac - Mac OS X includes OpenSSH by default - scrivere a riga di comando "ssh user@server".
* per molti OS - Openssh [http://www.openssh.org/] sia client sia server e' disponibile per distribuito per molti sistemi operativi. In windows e' distribuito anche come pacchetto '''cygwin''', si installa gratuitamente a partire da http://www.cygwin.com/ (scaricare e lanciare setup.exe, scegliere un mirror, tra i pacchetti da installare scegliere ''openssh'').


== Tunneling attraverso Ssh - Links ==
== Tunneling attraverso Ssh - Links ==


* [http://dingetje.homeip.net/dokuwiki/freesco/howtos/setup_ssh_tunnel_to_connect_with_vnc_server Tunneling di VNC da http://dingetje.homeip.net], [[Media:VNC_PuTTY_HOWTO.pdf|pdf]]
Windows, putty e vnc
* [http://www.engr.wisc.edu/computing/best/rdesktop-putty.html Tunneling di Remote Desktop da http://www.engr.wisc.edu], [[Media:Rdesktop_PuTTY_HOWTO.pdf|pdf]]
* [[Media:VNC_PuTTY_HOWTO.pdf|pdf]]
* [[#Links|Alcuni video in questa pagina]]
 
=== Uso di ssh.ing.unimo.it ===
 
esiste un server ssh per gli utenti del DIEF
  ssh.ing.unimo.it
 
una volta abilitati si puo' accedere a tale server usando le proprie
credenziali UniMORE.
 
Per essere abilitati mandare una email a
alberto.corni@unimore.it
oppure a
roberto.formentini@uniomre.it
 
con le seguenti informazioni:
user_id              :    # lo username che si usa per identificarsi sui siti unimore
nome e cognome        :
docente di riferimento:
luogo di lavoro abituale:     # ad esempio MO-27-01-a20 - tale codice si trova sulla porta del locale
 
==== Uso di ssh.ing.unimo.it e collegamento ssh a una macchina del DIEF ====
 
nomenclatura:
* ''username'' - lo username dell'utente abilitato all'usa di ssh.ing
* ''hostname'' - il server ssh a cui si intende collegarsi - tale server non e' raggiungibile direttamente da internet ma solo dalla rete del DIEF. Ad esempio web.ing.unimo.it
 
per collegarsi via ssh a ''hostname'' da internet esistono piu' modi:
 
per versioni recenti di ssh (>7.4):
* sul proprio pc aprire un terminale (in windows dos su linux bash o altra shell) e digitare
  ssh -J username@ssh.ing.unimo.it username@hostname
* collegarsi ad una macchina_del_dief via remote desktop
  ssh -L3390:macchina_del_dief.ing.unimo.it:3389 username@ssh.ing.unimo.it
  # quindi collegarsi con "remote desktop" a "localhost:3390", ad esempio:
  rdesktop localhost:3390 &
* per copiare un file
  scp -J username@ssh.ing.unimo.it localFileName.txt username@hostname:/destination
* usare rsync
  rsync --recursive --archive --progress --stats --partial --verbose --stats --progress \
        --rsh="ssh -J username@ssh.ing.unimo.it"  filename username@hostname:/destination
 
si puo' ulteriormente semplificare la sintassi aggiungendo queste righe al file  ~/.ssh/config
Host hostname  # ad esempio web.ing.unimo.it
  ProxyJump username@ssh.ing.unimo.it
la sintassi di ssh, scp e rsync si semplificano:
  #
  ssh username@hostname
  #
  scp localFileName.txt username@hostname:/destination
  #
  rsync --recursive --archive --progress --stats --partial --verbose --stats --progress \
        filename username@hostname:/destination
 


== Tunneling attraverso Ssh del desktop remoto ==


Ssh permette il ''port-forwarding''. Con questo meccanismo è possibile ''clonare'' una porta di un server su un'altra macchina, la comunicazione tra le due macchine (server e clone) avviene su connessione criptata e sicura.
per versioni piu' vecchie di ssh:
* sul proprio pc aprire un terminale (in windows dos su linux bash o altra shell)
* collegarsi a ssh.ing con il comando che ''gira'' la port del server ''host'' sul proprio  pc:
  ssh username@ssh.ing.unimo.it -L2022:hostname:22
* in un altro terminale collegarsi ad ''hostname'' usando la port sul proprio pc
  ssh -p 2022 username@localhost
* per copiare un file
  scp -P 2022 localFileName.txt username@localhost:/destination
  rsync --recursive --archive --progress --stats --partial --verbose --stats --progress \
        --rsh="ssh -p 2022"  filename username@localhost:/destination


Di seguito alcuni esempi di come effettuare la ridirezione di una porta via ssh.
== Tunneling attraverso Ssh del desktop remoto ==


==== Client Ssh per Windows ====
Ssh permette il ''port-forwarding''. Con questo meccanismo è possibile ''portare'' una porta di un server sul proprio pc, la comunicazione tra le due macchine avviene su connessione criptata e sicura.


* Win-sshfs http://code.google.com/p/win-sshfs/ permette di montare una directory remota come un unita' della macchina locale (es e:) via sftp.
Di seguito alcuni esempi di come effettuare il tunneling di una porta via ssh.
* WinScp http://winscp.net/ permette di copiare files via ssh
* Putty http://www.chiark.greenend.org.uk/~sgtatham/putty/ terminale ssh che permette il ''port forwarding''
* Openssh [http://www.openssh.org/] sia client sia server e' distribuito come pacchetto '''cygwin''', si installa gratuitamente a partire da http://www.cygwin.com/ (scaricare e lanciare setup.exe, scegliere un mirror, tra i pacchetti da installare scegliere ''openssh'').


==== Collegarsi usando Remote Desktop a una macchina nella subnet di ingegneria dell'informazione ====
==== Collegarsi usando Remote Desktop a una macchina del DIEF via ssh ====


Prerequisiti:
Macchine coinvolte:
* client: macchina con client rdesktop e client ssh
* il mio portatile: macchina da cui si intende controllare la macchina remota, in questo esempio e' una macchina Linux con client rdesktop e client ssh da lanciare a riga di comando
* server: macchina con server rdesktop dentro la subnet di ingegneria dell'informazione. In questo esempio è ischia.ing.unimo.it
* il pc al dief: macchina da controllare, macchina ad esempio windows con servizio rdesktop dentro la subnet di ingegneria dell'informazione. In questo esempio è ischia.ing.unimo.it (che e' una macchina linux). Il servizio deve essere gia' configurato e accessibile da dentro la rete del dief.
* intermediario ssh: macchina dentro la subnet di ingegneria dell'informazione su cui è disponibile un server ssh (macchine Linux SunOs e anche Windows). In questo esempio è sparc20.ing.unimo.it su cui è attivo l'account ''corni''
* server ssh: macchina intermedia attraverso cui collegare il mio portatile al pc al dief. macchina dentro la rete del dief su cui giri un server ssh (macchine Linux SunOs e anche Windows) raggiungibile da internet. In questo esempio è sparc20.ing.unimo.it su cui è attivo l'account ''corni''


E' importante che server e intermediario ssh siano nella stessa subnet.
I comandi da scrivere sul "mio portatile" sono:


Il seguente comando eseguito sul client effettua il ''forward'' della porta rdesktop (3389) del server su una porta locale del client:
effettua il ''forward'' della porta rdesktop (3389) del "pc al dief" su una porta locale del mio portatile:
  ssh -o ServerAliveInterval=5 -C \
  ssh -L3389:ischia.ing.unimo.it:3389 \
    -L3389:ischia.ing.unimo.it:3389 \
     corni@sparc20.ing.unimo.it
     corni@sparc20.ing.unimo.it


ora e' sufficiente collegarsi con il client rdesktop a localhost:  
sul mio portatile ora posso fare partire il client rdesktop sulla porta forwordata:  
  rdesktop -g 1024x768 -a 24 localhost &
  rdesktop -g 1024x768 -a 24 localhost &


==== Links ====
* Windows, putty e desktop remoto
** configurazione di putty - [http://web.ing.unimo.it/~acorni/shared/remoteDesktopAttraversoTunnelSsh_serverSshDiversoDaServerRdp.ogv Video in italiano di due minuti - server ssh su una macchina diversa dalla macchina windows a cui collegarsi]
** configurazione di putty - [http://web.ing.unimo.it/~acorni/shared/remoteDesktopAttraversoTunnelSsh.ogv Video in italiano di due minuti - server ssh montato sulla macchina windows]


== Collegamento a un server con chiave pubblica e senza password ==
== Collegamento a un server con chiave pubblica e senza password ==
Line 61: Line 125:
==== Creare una coppia di chiavi sul client ====
==== Creare una coppia di chiavi sul client ====
creazione delle chiavi, esempio:
creazione delle chiavi, esempio:
  alx 12:47:03 ~:  ssh-keygen -t rsa
  alx 12:47:03 ~:  ssh-keygen -t rsa -b 4096
  Generating public/private rsa key pair.
  Generating public/private rsa key pair.
  Enter file in which to save the key (/home/corni/.ssh/id_rsa):
  Enter file in which to save the key (/home/corni/.ssh/id_rsa):
Line 94: Line 158:


==== Configurare un server SSH per non richiedere la password ====
==== Configurare un server SSH per non richiedere la password ====
dalla macchina su cui si ha la propria chiave privata/pubblica installata
lanciare questo comando:
ssh-copy-id username@nomeDellaMacchina
oppure
  ssh username@nomeDellaMacchina
  ssh username@nomeDellaMacchina
  cd
  cd
Line 105: Line 174:
Ora, dal client ci si potrà collegare al server senza che venga chiesta alcuna password. L'autenticazione avviene sfruttando la coppia di chiavi pubblica e privata.
Ora, dal client ci si potrà collegare al server senza che venga chiesta alcuna password. L'autenticazione avviene sfruttando la coppia di chiavi pubblica e privata.


==== Uso delle identita' ''ssh'' in windows con ''Putty'' e ''Winscp'' ====
==== Uso delle identita' ''ssh'' in windows con ''Putty'' e ''Winscp'' via ''Pageant'' ====
Il programma che permette a putty e winscp di usare le ''identita''' e' '''Pageant'''.
Il programma che permette a putty e winscp di usare le ''identita''' e' '''Pageant'''.
''Peagent'' si scarica dal sito di putty: http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
''Peagent'' si scarica dal sito di putty: http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html


Una volta lanciato ''Pageant'' e' possibile caricare in memoria le identita' da file che ha un formato "proprietario" con estensione '''.ppk'''.
Lanciare ''Pageant'' e, facendo click sull'icona nella barra delle applicazioni, caricare in memoria le identita' da file che ha un formato "proprietario" con estensione '''.ppk'''.
 
Una volta caricata l'identita' questa verra' usata automaticamente da putty e winscp per collegarsi ai server.


Per creare file ''.ppk'' e per convertire da ed in tale formato chiavi ssh si puo' usare il programma '''PuttyGen''' distribuito assieme a ''Pageant''.
Per creare file ''.ppk'' e per convertire da ed in tale formato chiavi ssh si puo' usare il programma '''PuttyGen''' distribuito assieme a ''Pageant''.


== SSH server e Windows ==
==== Installazione di OpenSSH attaverso cygwin (versione aggiornata di ssh) ====
'''Nota bene''', in ''windows 7'' e in ''windows server 2008'' occorre essere loggati come utente ''administrator'' (non e' abbastanza essere un utente del gruppo "administrators") altrimenti la procedura di configurazione del server fallisce.
Dal sito di cygwin ''http://cygwin.org/''
scaricare il programma di installazione '''setup.exe''' ed eseguirlo.
Consiglio di creare manualmente la cartella ''c:\cygwin'', copiarvi dentro ''setup.exe'' ed eseguire il setup da tale cartella.
Tra le applicazioni da installare scegliere
openssh
Una volta installato aprire una shell cygwin e
digitare (
  ssh-host-config
Andare nella gestione dei servizi di windows e far partire
il servizio
CygWin OpenSSH Server


Configurare il firewall per permettere le connessioni remote
'''Usare Peagent da cygwin'''
Start > Control Panel > System and Security > Windows Firewall
> Advaced Settings > Inbound Rules > New Rule
Port
> next
TCP
Scecific local ports: 22
> next
Allow the connection
> next
> next
name: ssh
> finish


Da remoto, per accedere al disco c: di windows via ssh, (ad esempio winscp)
A questo indirizzo http://pascal.nextrem.ch/2011/03/11/using-cygwin-ssh-with-putty-pageant/
occorre collegarsi alla directory
si trova il documento
  /cygdrive/c
Using Cygwin SSH with Putty Pageant


==== Installazione di OpenSSH (E' una versione del 2004) ====


Scaricare l'eseguibile per l'installazione da http://sshwindows.sourceforge.net/


Una volta installato leggersi la documentazione
==== Windows private/public key configuration using puttygen ====
  start > Tutti i programmi > OpenSSH for windows > Quick Start guide


in particolare e' necessario creare il file passwd,
from
si possono usare le seguenti comandi.
https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html
Aprire un prompt dei comandi e digitare
download
  c:
* putty (if you do not have it)
  cd C:\Programmi\OpenSSH\bin
* pageant.exe (an SSH authentication agent for PuTTY, PSCP, PSFTP, and Plink)
  mkpasswd -l > ..\etc\passwd
* puttygen.exe (a RSA and DSA key generation utility)
  mkgroup -l > ..\etc\group


Andare nella gestione dei servizi di windows e far partire
the generation of your private/public key
il servizio
* launch puttygen
  OpenSSH Server
* set number of bits in a generated key: 4096
* click on generate
* move the mouse!!!
* insert the key passphrase and confirm passphrase, this is the password that protects (encrypt to disk) your private key, use a good password. 
* click on save private key , then save the private key
* click on save public key, then save the pubblic key as  .txt
* the pubblic key to install on a ssh server is in the field "Public key for pasting into OsenSSSH authorizend_keys file" that you can copy in the clipboard.


Per accedere al disco c: di windows via ssh, (ad esempio winscp)
use the private key:
occorre collegarsi alla directory
* launch pageant, it will appear on the application bar on the bottom right on your screen
  /cygdrive/c
* right click on pageant and select 'add key'
* select the private key file
* insert the  passphrase


==== Semplice uso di ssh-agent in cyg-win ====
==== Semplice uso di ssh-agent in cyg-win ====
Line 201: Line 243:
Questo script si può anche migliorare ma questo (con il tag <<EOF) è decisamente più didattico.
Questo script si può anche migliorare ma questo (con il tag <<EOF) è decisamente più didattico.


== SSH e brute force attack ==
Dal 2008 ci sono dei ''worm'' che attaccano i server ssh, in particolare, provano migliaia di combinazioni di username/password alla ricerca di credenziali ''deboli'', quando trovano credenziali valide il worm si installa su tale macchina e comincia la ricerca di altre macchine.
Un paio di utenti che sono stati usati per entrare nelle macchine del dief sono:
* demo password demo
* jack password jack
Allo scopo di prevenire questo genere di attacchi si consiglia
* possibilmente utilizzare il ''Collegamento a un server con chiave pubblica e senza password '' (descritto in questa pagina) e disabilitare l'autenticazione via password.
* fare attenzione a non creare username/password troppo semplici
* non permettere l'accesso a tali macchine da fuori il DIEF, in questo caso chiedere ad Alberto Corni.
Si consiglia di installare uno dei seguenti pacchetti:
Per macchine Linux
* fail2ban - script phyton - https://it.wikipedia.org/wiki/Fail2ban
** per macchine debian/ubuntu: ''apt-get install fail2ban''
** per macchine centos/red-hat, non e' supportato dal sistema operativo occorre prima installare un ulteriore repository di software ad esempio EPEL. Si puo' fare cosi:<br/>'' yum -y install epel-release<br> yum install fail2ban<br/>systemctl enable firewalld<br/>systemctl start firewalld<br/>systemctl enable fail2ban<br/>systemctl start fail2ban''
* sshguard - eseguibile - https://wiki.archlinux.org/index.php/sshguard
* denyhost - script phyton - https://it.wikipedia.org/wiki/DenyHosts
Per windows
* il server ssh [https://www.bitvise.com/ssh-server Bitwise] ha tra le opzioni quello di disconnettere gli ip che da cui vengono tentativi di accesso con credenziali sbagliate.
Questi pacchetti sono quelli che sappiamo funzionare,
se siete a conoscenza di altri pacchetti equivalenti per cortesia fatemelo sapere, Alberto Corni.
Link utili:
* http://it.wikipedia.org/wiki/Password#Norme_elementari_di_sicurezza
* http://en.wikipedia.org/wiki/Password#Password_cracking




[[Category:Applicazioni]]
[[Category:Applicazioni]]
[[Category:Network]]
[[Category:Network]]

Latest revision as of 08:23, 20 September 2024

Note per usare ssh (Secure SHell from Wikipedia), tool molto potente e spesso sotto-utilizzato.


Client Ssh

Elenco parziale di alcuni software per l'accesso a server ssh divisi per sistema operativo.

Accesso SFTP

Permette l'accesso al file-system del server.

Accesso tramite shell

Permette di controllare il server da riga di comando.

  • per Windows - Putty http://www.chiark.greenend.org.uk/~sgtatham/putty/ download terminale ssh che permette il port forwarding
  • per Linux - installare openssh e scrivere a riga di comando "ssh user@server".
  • per Mac - Mac OS X includes OpenSSH by default - scrivere a riga di comando "ssh user@server".
  • per molti OS - Openssh [1] sia client sia server e' disponibile per distribuito per molti sistemi operativi. In windows e' distribuito anche come pacchetto cygwin, si installa gratuitamente a partire da http://www.cygwin.com/ (scaricare e lanciare setup.exe, scegliere un mirror, tra i pacchetti da installare scegliere openssh).

Tunneling attraverso Ssh - Links

Windows, putty e vnc

Uso di ssh.ing.unimo.it

esiste un server ssh per gli utenti del DIEF

 ssh.ing.unimo.it

una volta abilitati si puo' accedere a tale server usando le proprie credenziali UniMORE.

Per essere abilitati mandare una email a

alberto.corni@unimore.it

oppure a

roberto.formentini@uniomre.it

con le seguenti informazioni:

user_id               :     # lo username che si usa per identificarsi sui siti unimore
nome e cognome        :
docente di riferimento:
luogo di lavoro abituale:     # ad esempio MO-27-01-a20 - tale codice si trova sulla porta del locale

Uso di ssh.ing.unimo.it e collegamento ssh a una macchina del DIEF

nomenclatura:

  • username - lo username dell'utente abilitato all'usa di ssh.ing
  • hostname - il server ssh a cui si intende collegarsi - tale server non e' raggiungibile direttamente da internet ma solo dalla rete del DIEF. Ad esempio web.ing.unimo.it

per collegarsi via ssh a hostname da internet esistono piu' modi:

per versioni recenti di ssh (>7.4):

  • sul proprio pc aprire un terminale (in windows dos su linux bash o altra shell) e digitare
 ssh -J username@ssh.ing.unimo.it username@hostname
  • collegarsi ad una macchina_del_dief via remote desktop
 ssh -L3390:macchina_del_dief.ing.unimo.it:3389 username@ssh.ing.unimo.it
 # quindi collegarsi con "remote desktop" a "localhost:3390", ad esempio: 
 rdesktop localhost:3390 &
  • per copiare un file
 scp -J username@ssh.ing.unimo.it localFileName.txt username@hostname:/destination
  • usare rsync
 rsync --recursive --archive --progress --stats --partial --verbose --stats --progress \
       --rsh="ssh -J username@ssh.ing.unimo.it"  filename username@hostname:/destination

si puo' ulteriormente semplificare la sintassi aggiungendo queste righe al file ~/.ssh/config

Host hostname   # ad esempio web.ing.unimo.it
  ProxyJump username@ssh.ing.unimo.it

la sintassi di ssh, scp e rsync si semplificano:

 #
 ssh username@hostname
 #
 scp localFileName.txt username@hostname:/destination
 #
 rsync --recursive --archive --progress --stats --partial --verbose --stats --progress \
       filename username@hostname:/destination


per versioni piu' vecchie di ssh:

  • sul proprio pc aprire un terminale (in windows dos su linux bash o altra shell)
  • collegarsi a ssh.ing con il comando che gira la port del server host sul proprio pc:
 ssh username@ssh.ing.unimo.it -L2022:hostname:22
  • in un altro terminale collegarsi ad hostname usando la port sul proprio pc
 ssh -p 2022 username@localhost
  • per copiare un file
 scp -P 2022 localFileName.txt username@localhost:/destination
 rsync --recursive --archive --progress --stats --partial --verbose --stats --progress \
       --rsh="ssh -p 2022"  filename username@localhost:/destination

Tunneling attraverso Ssh del desktop remoto

Ssh permette il port-forwarding. Con questo meccanismo è possibile portare una porta di un server sul proprio pc, la comunicazione tra le due macchine avviene su connessione criptata e sicura.

Di seguito alcuni esempi di come effettuare il tunneling di una porta via ssh.

Collegarsi usando Remote Desktop a una macchina del DIEF via ssh

Macchine coinvolte:

  • il mio portatile: macchina da cui si intende controllare la macchina remota, in questo esempio e' una macchina Linux con client rdesktop e client ssh da lanciare a riga di comando
  • il pc al dief: macchina da controllare, macchina ad esempio windows con servizio rdesktop dentro la subnet di ingegneria dell'informazione. In questo esempio è ischia.ing.unimo.it (che e' una macchina linux). Il servizio deve essere gia' configurato e accessibile da dentro la rete del dief.
  • server ssh: macchina intermedia attraverso cui collegare il mio portatile al pc al dief. macchina dentro la rete del dief su cui giri un server ssh (macchine Linux SunOs e anche Windows) raggiungibile da internet. In questo esempio è sparc20.ing.unimo.it su cui è attivo l'account corni

I comandi da scrivere sul "mio portatile" sono:

effettua il forward della porta rdesktop (3389) del "pc al dief" su una porta locale del mio portatile:

ssh -L3389:ischia.ing.unimo.it:3389 \
   corni@sparc20.ing.unimo.it

sul mio portatile ora posso fare partire il client rdesktop sulla porta forwordata:

rdesktop -g 1024x768 -a 24 localhost &

Links

Collegamento a un server con chiave pubblica e senza password

É possibile configurare un client ed un server in modo che ssh non richieda la password per collegarsi al server dal client sfruttando chiavi pubbliche e private (che è un modo comodo e decisamente più sicuro dell'uso della password).

Creare una coppia di chiavi sul client

creazione delle chiavi, esempio:

alx 12:47:03 ~:  ssh-keygen -t rsa -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key (/home/corni/.ssh/id_rsa):

questa e' la chiave di default, di solito va bene cosi'. inserire una password seria con cui proteggere la chiave privata.

Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/corni/.ssh/idTmp.
Your public key has been saved in /home/corni/.ssh/idTmp.pub.
The key fingerprint is:
59:34:d1:99:67:8c:90:5f:92:df:26:94:72:c9:9e:ac corni@alx

usare l'identita' che si e' appena creata

kde, gnome e altri ambienti fanno partire automaticamente un'istanza di ssh-agent per cui e' sufficiente chiedere ad ssh-agent di usare la data identita' con il comando:

ssh-add ~/.ssh/id_rsa

Se non funziona, occorre prima attivare ssh-agent

alx 12:50:52 ~:ssh-agent
SSH_AUTH_SOCK=/tmp/ssh-KlWHV19986/agent.19986; export SSH_AUTH_SOCK;
SSH_AGENT_PID=19987; export SSH_AGENT_PID;
echo Agent pid 19987;

nell'output di ssh agent ci sono le isntruzioni bash da eseguire perche' i futuri comandi ssh usino l'agent appena avviato, per cui occorre eseguire i comandi

SSH_AUTH_SOCK=/tmp/ssh-KlWHV19986/agent.19986; export SSH_AUTH_SOCK;
SSH_AGENT_PID=19987; export SSH_AGENT_PID;
echo Agent pid 19987;

e quindi

ssh-add ~/.ssh/id_rsa


Configurare un server SSH per non richiedere la password

dalla macchina su cui si ha la propria chiave privata/pubblica installata lanciare questo comando:

ssh-copy-id username@nomeDellaMacchina

oppure

ssh username@nomeDellaMacchina
cd
mkdir .ssh
chmod 700 .ssh
cd .ssh
cat >> authorized_keys
 incollare il contenuto della propria chiave pubblica
   ~/.ssh/id_rsa.pub
^D

Ora, dal client ci si potrà collegare al server senza che venga chiesta alcuna password. L'autenticazione avviene sfruttando la coppia di chiavi pubblica e privata.

Uso delle identita' ssh in windows con Putty e Winscp via Pageant

Il programma che permette a putty e winscp di usare le identita' e' Pageant. Peagent si scarica dal sito di putty: http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

Lanciare Pageant e, facendo click sull'icona nella barra delle applicazioni, caricare in memoria le identita' da file che ha un formato "proprietario" con estensione .ppk.

Una volta caricata l'identita' questa verra' usata automaticamente da putty e winscp per collegarsi ai server.

Per creare file .ppk e per convertire da ed in tale formato chiavi ssh si puo' usare il programma PuttyGen distribuito assieme a Pageant.


Usare Peagent da cygwin

A questo indirizzo http://pascal.nextrem.ch/2011/03/11/using-cygwin-ssh-with-putty-pageant/ si trova il documento

Using Cygwin SSH with Putty Pageant


Windows private/public key configuration using puttygen

from

https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html

download

  • putty (if you do not have it)
  • pageant.exe (an SSH authentication agent for PuTTY, PSCP, PSFTP, and Plink)
  • puttygen.exe (a RSA and DSA key generation utility)

the generation of your private/public key

  • launch puttygen
  • set number of bits in a generated key: 4096
  • click on generate
  • move the mouse!!!
  • insert the key passphrase and confirm passphrase, this is the password that protects (encrypt to disk) your private key, use a good password.
  • click on save private key , then save the private key
  • click on save public key, then save the pubblic key as .txt
  • the pubblic key to install on a ssh server is in the field "Public key for pasting into OsenSSSH authorizend_keys file" that you can copy in the clipboard.

use the private key:

  • launch pageant, it will appear on the application bar on the bottom right on your screen
  • right click on pageant and select 'add key'
  • select the private key file
  • insert the passphrase

Semplice uso di ssh-agent in cyg-win

Il seguente script lancia l'ssh-agent e configura correttamente l'ambiente se questo non è già partito.

 #
 # ssh agent
 fn=$HOME/var/ssh-agent.sh
 if [ `ps | grep -i -c ssh-agent` -gt 0 ]
 then
   . $fn
 else
   eval `ssh-agent`
   cat > $fn <<EOF
#
# Ssh-agent setup file
#
# This file was generated automatically by .bashrc on [`date`]
# please do not modify it manually
SSH_AUTH_SOCK=$SSH_AUTH_SOCK; export SSH_AUTH_SOCK;
SSH_AGENT_PID=$SSH_AGENT_PID; export SSH_AGENT_PID;
EOF
   ssh-add .ssh/id_rsa
 fi

Questo script si può anche migliorare ma questo (con il tag <<EOF) è decisamente più didattico.

SSH e brute force attack

Dal 2008 ci sono dei worm che attaccano i server ssh, in particolare, provano migliaia di combinazioni di username/password alla ricerca di credenziali deboli, quando trovano credenziali valide il worm si installa su tale macchina e comincia la ricerca di altre macchine.

Un paio di utenti che sono stati usati per entrare nelle macchine del dief sono:

  • demo password demo
  • jack password jack

Allo scopo di prevenire questo genere di attacchi si consiglia

  • possibilmente utilizzare il Collegamento a un server con chiave pubblica e senza password (descritto in questa pagina) e disabilitare l'autenticazione via password.
  • fare attenzione a non creare username/password troppo semplici
  • non permettere l'accesso a tali macchine da fuori il DIEF, in questo caso chiedere ad Alberto Corni.

Si consiglia di installare uno dei seguenti pacchetti: Per macchine Linux

Per windows

  • il server ssh Bitwise ha tra le opzioni quello di disconnettere gli ip che da cui vengono tentativi di accesso con credenziali sbagliate.

Questi pacchetti sono quelli che sappiamo funzionare, se siete a conoscenza di altri pacchetti equivalenti per cortesia fatemelo sapere, Alberto Corni.

Link utili: