ssh in sicurezza
Nel momento stesso in cui mettete una macchina in internet con alcune porte aperte sapete per certo che sarà oggetto di ogni possibile attacco. Spesso i nostri server funzionanao anche da firewall in situazioni “piccole”, ovvero di poche macchine.
In queste occasioni le fonti più comuni di debolezze sono:
- ssh tramite account troppo semplici (password banali)
- apache tramite applicazioni poco sicure
per quanto riguarda il primo punto è facile mettere la macchina in sicurezza con ben poca fatica, tramite l’uso delle chiavi crittografiche.
Accedere al server tramite SSH usando le chiavi¶
Accedere remotamente al proprio server mediante l’utilizzo delle chiavi crittografiche aumenta la sicurezza del proprio server, rendendo inutile, ad esempio, la quasi totalità dei tipi di attacco di tipo dizionario o brute force.
Per le delucidazioni circa il concetto di “chiave di criptazione” si rimanda al seguente indirizzo: http://it.wikipedia.org/wiki/Crittografia_asimmetrica
Configurazione del server OpenSSH¶
Senza dilungarci troppo in trattazioni sulla sicurezza, si suggerisce l’adozione dei seguenti accorgimenti, considerati ragionevole compromesso tra “paranoia” e usabilità.
- disattivazione dell’accesso tramite password.
- attivazione dell’accesso esclusivamente tramite chiavi.
- disattivazione dell’accesso diretto al sistema da parte di root ( sarà comunque accessibile grazie al comando su - ).
Per ottenere tutto ciò, sarà sufficiente assicurarsi che le direttive del proprio /etc/ssh/sshd.conf siano così configurate:
PasswordAuthentication no PubkeyAuthentication yes ChallengeResponseAuthentication no PermitRootLogin no
Per i più curiosi, viene riportata di seguito una configurazione integrale del file /etc/ssh/sshd.conf:
Port 22 Protocol 2 HostKey /etc/ssh/ssh_host_rsa_key HostKey /etc/ssh/ssh_host_dsa_key UsePrivilegeSeparation yes # Lifetime and size of ephemeral version 1 server key KeyRegenerationInterval 3600 ServerKeyBits 768 # Logging SyslogFacility AUTH LogLevel INFO # Authentication: LoginGraceTime 120s PermitRootLogin no StrictModes yes MaxAuthTries 4 #RSAAuthentication no PubkeyAuthentication yes #AuthorizedKeysFile %h/.ssh/authorized_keys # Don't read the user's ~/.rhosts and ~/.shosts files IgnoreRhosts yes # For this to work you will also need host keys in /etc/ssh_known_hosts RhostsRSAAuthentication no # similar for protocol version 2 HostbasedAuthentication no # Uncomment if you don't trust ~/.ssh/known_hosts for RhostsRSAAuthentication #IgnoreUserKnownHosts yes # To enable empty passwords, change to yes (NOT RECOMMENDED) PermitEmptyPasswords no # Change to yes to enable challenge-response passwords (beware issues with # some PAM modules and threads) ChallengeResponseAuthentication no # Change to no to disable tunnelled clear text passwords PasswordAuthentication no X11DisplayOffset 10 PrintMotd no PrintLastLog yes TCPKeepAlive yes AcceptEnv LANG LC_* Subsystem sftp /usr/lib/openssh/sftp-server UsePAM yes #l'utente "utente1" si puo' loggare solo da qualunque indirizzo #AllowUsers utente1@* #l'utente "utente2" si puo' loggare solo da tutte le postazioni del network #192.168.0.0 : #utente2@192.168.0.* #Solo "utente1" potrà collegarsi a ssh. Questa direttiva escluderà tutti gli #altri #AllowUsers utente1 #Per creare un utente guest "localuser" con una password nota a tutti ma #impedirne l'accesso via ssh da remoto: #DenyUsers localuser
Nota
Le ultime righe commentate, potranno tornare utili a chi vorrà limitare ulteriormente i propri accessi.
Generazione ed aggiunta delle chiavi utente sul server¶
- Autenticarsi con il proprio utente per generare la coppia di chiavi pubblica/privata:
utente1@srv-isi:~$ ssh-keygen -t dsa Generating public/private dsa key pair. Enter file in which to save the key (~utente1/.ssh/id_dsa): <INVIO> Created directory '~utente1/.ssh'. Enter passphrase (empty for no passphrase): <PASSWORD PER LA CHIAVE> Enter same passphrase again: <PASSWORD PER LA CHIAVE> Your identification has been saved in ~utente1/.ssh/id_dsa. Your public key has been saved in /home/users/admins/utente1/.ssh/id_dsa.pub. The key fingerprint is: 20:d6:94:95:cf:59:a8:81:f0:e4:1e:98:98:47:54:71 utente1@srv-isi cp .ssh/id_dsa.pub /tmp chmod a+r /tmp/id_dsa.pub
- Aggiungere la chiave pubblica generata nel file authorized_keys dell’utente da controllare( utente2):
su utente2 <PASSWORD utente2>
Ci si assicuri che la directory .ssh esista:
cd ls .ssh
Se non dovesse essere presente, si provveda a crearla:
mkdir .ssh
Sarà ora possibile aggiungere la propria chiave pubblica, precedentemente copiata in /tmp
cat /tmp/id_dsa.pub >> .ssh/authorized_keys
Nota
Il file authorized_keys contiene le chiavi pubbliche degli utenti abilitati ad accedere remotamente, via ssh e senza password, all’account dell’utente. Modificando tale file con un editor di testo si potranno rimuovere le chiavi pubbliche aggiunte in precedenza, impedendo alle relative utenze di accedere senza password con il nostro utente.
- Testare che tutto funzioni, autenticandosi come utente1 e cercando con esso di accedere, via ssh, all’account utente2:
utente1@srv-isi:~$ ssh -l utente2 127.0.0.1 Enter passphrase for key '/home/users/admins/utente1/.ssh/id_dsa': <PASSWORD DELLA CHIAVE PRIVATA> utente2@srv-isi:~$
Utilizzo delle chiavi in ambiente Windows¶
In ambiente windows, uno dei client più usati per controllo remoto via ssh è probabilmente Putty. Esistono diverse pacchettizzazioni di tale programma, installabili tramite setup o portabili. Si suggerisce di optare per la versione portabile, che consente di portare putty sempre con sè, magari su chiavetta usb.
Nota
La procedura a seguire, tratterà esclusivamente della versione portabile.
Da dove scaricare Putty?¶
le versioni di putty sono liberamente scaricabili dai seguenti indirizzi:
http://the.earth.li/~sgtatham/putty/latest/x86/putty-0.60-installer.exe http://the.earth.li/~sgtatham/putty/latest/x86/putty.zip
Configurazione ed utilizzo di putty¶
- Accedere al dominio autenticandosi con il proprio utente.

- Aprire una cartella qualunque ed attivare la visualizzazione delle “estensioni per i nomi file conosciuti”.

- Scaricare ed estrarre il file putty.zip e lanciare l’eseguibile puttygen.exe.
- Selezionare la voce di menù Conversions >> Import key ed importare la chiave privata id_dsa generata in precedenza sul server.
Nota
La chiave di utente1 verrà localizzata dai client microsoft in H:\.ssh\id_dsa nella home del relativo utente.

- Una volta importata la chiave privata in formato Unix, si procederà alla sua conversione nel formato usato da putty, arrivando ad ottenere una chiave privata “id_dsa.ppk”.

- Non resta che configurare putty affinchè utilizzi la nostra chiave appena convertita e si colleghi all’ip del nostro server.




Commenti recenti