Clark's Home page

Tecnicismi vari di un Sysadmin Linux ma anche qualcosa della sua vita

SSH senza password ma sicuro —

SSH o meglio OpenSSH è “il modo” di collegarsi a macchine remote.
Chiunque abbia a che fare con macchine perimetrali, cioè con quelle macchine che sono l’interfaccia tra una LAN e il mondo sa che nei log di sistema trovare dei tentativi di connessione alla porta 22 (la porta di default del demone) è cosa giornaliera.
Fermo restando il portare il servizio su una porta diversa > di 1024 e di usare password ben strutturate alfanumericamente e con segni di interpunzione, un ulteriore passo per rendere difficile la vita alla gente che nella vita non ha di meglio da fare che tentare di sfondare macchine è quello di usare l’autenticazione tramite chiavi.
In buona sostanza si tratta di demandare l’autenticazione direttamente alle chiavi senza passare dalla password.
Il tool che ci permette di fare questa operazione è ssh-keygen

clark@pc0:~/.ssh$ ssh-keygen -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key (/home/clark/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/clark/.ssh/id_rsa.
Your public key has been saved in /home/clark/.ssh/id_rsa.pub.
The key fingerprint is:
d7:69:38:fb:8e:c4:d5:40:41:da:85:07:f7:41:94:83 clark@pc0
The key’s randomart image is:
+–[ RSA 4096]—-+
|           .=+*+.|
|           +.E.+.|
|          . o.  o|
|           o +   |
|        S + = .  |
|         o =     |
|          +      |
|         . o     |
|          ..o    |
+—————–+
Vediamo un minimo di dettaglio della cosa, l’opzione -b 4096 raddoppia la lunghezza della chiave (normalmente 2048) di per se sarebbe un di più ma serve a rendere la vita difficile a eventuali malintezionati e mi pagano per questo…
Enter passphrase (empty for no passphrase):…
qui ci sono i pro e i contro, pro se non la metti puoi usare questo sistema mediante script per automatizzare un gran numero di operazioni, contro se ti fregano la chiave possono accedere a tutte le tue macchine, se perdi o non puoi accedere per qualsiasi motivo alle chiavi non puoi neanche accedere alle altre macchine, inutile dire che minimo 3 copie di queste chiavi messe in tre posti differenti sono il “minimo sindacale” accettato.
Si tratta di copiare adesso le chiavi sull’host destinatario, cosa che possiamo fare con 2 metodi o tramite il classico scp o via ssh-copy-id

scp -P 3122 ~/.ssh/id_rsa.pub <clark>@<ip del server/nome_dns_>:~/.ssh/authorized_keys

oppure

ssh-copy-id -i ~/.ssh/id_rsa.pub utente@server -p 3122
se la porta è la 22 canonica basta un
ssh-copy-id -i ~/.ssh/id_rsa.pub utente@server

Sul server il file sshd_config dovrà avere questi parametri

HostbasedAuthentication yes
RSAAuthentication yes
PubkeyAuthentication yes

A questo punto se tutto è andato liscio basterà fare un ssh clark@server e si entrerà direttamente senza dover mettere password.
Qui si possono inoltre scegliere 2 strade differenti, vale a dire lasciare abilitata la login tramite password o disabilitarla e permettere la login solo tramite chiavi, se si sceglie la seconda si tratta di modificare /etc/ssh/sshd_config combiando in questo modo queste 3 voci:

ChallengeResponseAuthentication no
PasswordAuthentication no
UsePAM no

 

quindi restartare il demone /etc/init.d/ssh restart e a questo punto non sarà piu’ possibile entrare se non si è nel file  authorized_keys della macchina.

Addendum

dopo diversi anni un po di cose sono cambiate quindi la parte relativa all’sshd_config su Devuan chimaera diventa:

Port 3122
PermitRootLogin prohibit-password
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePam no
X11Forwarding yes

Lasciando commentato tutto il resto


Categorised as: Linux | Work

Comments are disabled on this post


Comments are closed.


Hide picture