SSH
Note per usare ssh (Secure SHell from 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:
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:
- http://it.wikipedia.org/wiki/Password#Norme_elementari_di_sicurezza
- http://en.wikipedia.org/wiki/Password#Password_cracking
Client Ssh
accesso tramite shell
- per windows - Putty http://www.chiark.greenend.org.uk/~sgtatham/putty/ download terminale ssh che permette il port forwarding
- 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).
accesso sftp
- per Windows - WinScp http://winscp.net/ download permette di copiare files via ssh
Tunneling attraverso Ssh - Links
Windows, putty e vnc - Tunneling di VNC da http://dingetje.homeip.net, pdf
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.
Di seguito alcuni esempi di come effettuare la ridirezione di una porta via ssh.
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 &
Links
- Windows, putty e desktop remoto
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.
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
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 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
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) occorre collegarsi alla directory
/cygdrive/c
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
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