La sicurezza di un sistema informatico coinvolge vari aspetti, uno di questi è l’accesso di un utente e anche quali comandi può lanciare.
Questa pillola mostra come limitare l’accesso solo per chiave e limitare ad un comando ciò che l’utente può fare.
Come limitare l’accesso SSH solo con chiave
A dire la verità i sistemi moderni impongono già questo metodo, quindi sarebbe da spiegare come attivare l’accesso con password, ma a beneficio di inventario, le due righe da modificare in /etc/ssh/sshd_config sono le seguenti:
# Impedisce l'accesso con chiave PasswordAuthentication no # Imposta l'accesso con chiave PubkeyAuthentication yes
Riavviamo il servizio ssh col comando:
systemctl restart sshd.service
e il gioco è fatto.
Assunzioni per l’esempio
- utente di prova wol
- ip host di destinazione 10.1.2.3
- bloccheremo la password all’utente wol, così non potremmo eseguire il login con password, ma solo via chiave, usando l’utente ed in più lo creeremo senza shell
- limiteremo il comando da usare al programma /opt/wol/AccensioneWOL.sh
Forced command
Questo metodo permette di limitare l’accesso alla macchina lanciando un solo comando.
È un sistema ingegnoso adottato per legare l’uso di un utente ad una determinata funzione: salvataggi da remoto, lancio del pacchetto Wake On LAN e altro ancora.
La prima cosa da fare è generare una chiave sul proprio PC, da usarsi per accedere con un determinato utente tramite chiave.
ssh-keygen -t rsa -b 4096 -f ~/.ssh/wolkey
Creiamo l’utente sull’host di destinazione:
adduser -shell /usr/bin/false wol
dal nostro PC copiamo la chiave sull’host di destinazione 10.1.2.3
ssh-copy-id -i ~/.ssh/wolkey wol@10.1.2.3
ora modifichiamo il file /host/wol/.ssh/authorized_keys sull’host di destinazione 10.1.2.3 ed inseriamo in testa alla chiave dell’utente wol il comando da eseguire, come di seguito:
command="/opt/wol/AccensioneWOL.sh $SSH_ORIGINAL_COMMAND",no-port-forwarding,no-x11-forwarding,no-agent-forwarding ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDDjUz8raB2Q6V7D6rZ1K7xBnb4pQqNSo7MJOqJZgZ11QHmOUQmrNSz0x5hcD7HPjoNbdKznAC0GVzdN83Msn+62amTONLwzDO4tyAmnER1GwafhYK0yV/9t7/pT7ErKrWV7Eaxo1YFUskeCSOWFaI3z4EnbbaLKKlJ35AgqnC+DzF3KVhy03RnbAEFgjRGdWEL/C50Vjf3GIP6eeeohLpzk4gL3rDGV/mmo8yAWjaYgdIfCWECceIwNoEDFofA3OWeKPDBovkarQHRE7j29G9cYc/oTNOvGfoLvyzdZU0i4bhHVIfsxP1OxpmTWPNiUO48C9Gy5j46OhD4kl4xQn6iDaIW90e/fozHKzYVvIfgs556hrM1ny05o7IAg1r/ht10+YXd55cV6pIJLw4hfbJdQAacYXMU1cemjzbtucKRucAa6PjqQUztwConvERKMIUjINZrwbDoGczXNJx9vmDU+sS13vFxsYnUcefsP+75io0P5UBqUpRnP4JJXx2Mag4zWYDjFk6zTuX9by9gUScTSK9xgweMs8w+2w9RNq/vhio47z+xg0g3JB/TDHhWPzok8RwLwvS8nGLSQ4T4ldFFXwNFC/caUNJH8OTMHt85eHa52UoB4ezoQ2MPr5CW8PVnFIRcFZC6aRCCvWgO/Pqxg1Q2V/63XwgEE2zIb/cMMw== wol@acme.it
Ogni volta che verrà usato il comando ssh wol@10.1.2.3 parametri verrà richiamato il programma /opt/wol/AccensioneWOL.sh passando i parametri scritti nel comando ssh originario.
Blocchiamo la password all’utente wol col comando
passwd -l wol