SSH: Difference between revisions

From Web
Jump to navigation Jump to search
mNo edit summary
Line 117: Line 117:
==== Installazione di OpenSSH attaverso cygwin ====
==== Installazione di OpenSSH attaverso cygwin ====


Installare via il setup.exe openssh
Dal sito di cygwin ''http://cygwin.org/''
scaricare il programma di installazione '''setup.exe''' ed eseguirlo.


Una volta installato leggersi la documentazione
Tra le applicazioni da installare scegliere
necessario creare il file passwd, aprire un prompt dei comandi bash e
openssh
 
Una volta installato aprire una shell cygwin e
digitare
digitare
   ssh-host-config
   ssh-host-config

Revision as of 09:26, 28 September 2011

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

Tunneling attraverso Ssh - Liks


Tunneling attraverso Ssh di Remote Desktop

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.

Di seguito ci sono alcuni esempi di come effettuare la ridirezione di una porta via ssh.

Ssh per Windows

Per macchine windows un client (a riga di comando) e server ssh si può installare tra i pacchetti

cygwin

che si installano gratuitamente a partire dal sito http://www.cygwin.com/ (scaricare setup.exe, scegliere un mirror e tra i pacchetti da installare scegliere bash e ssh).

Altri strumenti utili per windows sono:

Collegarsi usando Remote Desktop a una macchina nella subnet di ingegneria dell'informazione

Prerequisiti:

  • client: macchina con client rdesktop e client ssh
  • server: macchina con server rdesktop dentro la subnet di ingegneria dell'informazione. In questo esempio è ischia.ing.unimo.it
  • 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

E' importante che server e intermediario ssh siano nella stessa subnet.

Il seguente comando eseguito sul client effettua il forward della porta rdesktop (3389) del server su una porta locale del client:

ssh -o ServerAliveInterval=5 -C \
   -L3389:ischia.ing.unimo.it:3389 \
   corni@sparc20.ing.unimo.it

ora e' sufficiente collegarsi con il client rdesktop a localhost:

rdesktop -g 1024x768 -a 24 localhost &


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
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

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.

SSH server e Windows

Installazione di OpenSSH

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

Una volta installato leggersi la documentazione

 start > Tutti i programmi > OpenSSH for windows > Quick Start guide

in particolare e' necessario creare il file passwd, si possono usare le seguenti comandi. Aprire un prompt dei comandi e digitare

 c:
 cd C:\Programmi\OpenSSH\bin
 mkpasswd -l > ..\etc\passwd
 mkgroup -l > ..\etc\group

Andare nella gestione dei servizi di windows e far partire il servizio

OpenSSH Server

Per accedere al disco c: di windows via ssh, (ad esempio winscp) occorre collegarsi alla directory

 /cygdrive/c

Installazione di OpenSSH attaverso cygwin

Dal sito di cygwin http://cygwin.org/ scaricare il programma di installazione setup.exe ed eseguirlo.

Tra le applicazioni da installare scegliere

openssh

Una volta installato aprire una shell cygwin e digitare

 ssh-host-config
 mkpasswd -l > /etc/passwd
 mkgroup -l > /etc/group

Andare nella gestione dei servizi di windows e far partire il servizio

CygWin OpenSSH Server

Per accedere al disco c: di windows via ssh, (ad esempio winscp) occorre collegarsi alla directory

 /cygdrive/c

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.


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:

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".

Consigli

  • Su macchine linux installare fail2ban o equivalente.
  • 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: