SSH
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.
- per Windows - WinScp (download)
- per Linux (gnome) - aprire una cartella nautilus e scrivere ad esempio "sftp://user@box.ing.unimo.it/"
- per Mac - Cyberduck
- per Mac o Windows - Filezilla
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 - Tunneling di VNC da http://dingetje.homeip.net, pdf
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 nella subnet di ingegneria dell'informazione
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 -o ServerAliveInterval=5 -C \ -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
- 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
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
- 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:
yum -y install epel-release
yum install fail2ban
systemctl enable firewalld
systemctl start firewalld
systemctl enable fail2ban
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 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: