Limitare i comandi eseguivibili via ssh: Difference between revisions

From RVM Wiki
Jump to navigation Jump to search
No edit summary
 
Limitare rsync
Line 28: Line 28:


* man sshd AUTHORIZED_KEYS FILE FORMAT
* man sshd AUTHORIZED_KEYS FILE FORMAT
== Limitare l'accesso SSH a rsync (o scp o sftp)==
Creare lo script:
<pre>
cat | sudo tee /usr/local/sbin/validate-rsync > /dev/null <<EOFile
#!/bin/sh
case "$SSH_ORIGINAL_COMMAND" in
*\&*)
echo "Rejected"
;;
*\(*)
echo "Rejected"
;;
*\{*)
echo "Rejected"
;;
*\;*)
echo "Rejected"
;;
*\<*)
echo "Rejected"
;;
*\`*)
echo "Rejected"
;;
rsync\ --server*)
$SSH_ORIGINAL_COMMAND
;;
*)
echo "Rejected"
;;
esac
EOFile
</pre>
sudo chmod +x usr/local/sbin/validate-rsync
Dichiararlo come comando valido nell'authorized_keys:
<pre>
from="10.0.21.253",command="/usr/local/bin/validate-rsync" ssh-rsa AAAAB3NzaC1yc
2EAAAABIwAAAIEAxwgWwz+lKS0P1eDk6UIQeedAjlCD6gCEulTCugpNS7fgXBJ3xKBSCa/Xo2PrRFaDJ
4ADCZf0D0cJtCKUsQHQSKILch9hyFUPssDVwZTLZXTp0nDyY4Y7nFju/g9bGOGDPF+FaeqGrExTydeeA
OxYTbHQpWXGgTcQQLRlIGIheSM= root@firecp
</pre>
In questo modo saranno accettati solo connessioni rsync.
===Riferimenti===
Spiegano altri modi:
*[http://troy.jdmz.net/rsync/index.html Using Rsync and SSH: Keys, Validating, and Automation ]
*[http://sublimation.org/scponly/wiki/index.php/Main_Page ScpOnly]

Revision as of 13:23, 19 February 2007

Di default NON E' POSSIBILE limitare i comandi eseguibili via ssh, ma è impostabile l'unico comando eseguibile al login. Per far eseguire il comando dopippo al login, occorre inserire in ~/.ssh/authorized_keys il comando.

Esempio: se si vuole usare l'utente per salvare un backup via ssh, inserire la sua chiave pubblica, preceduta da:

from="fire.galimberti.priv",no-pty,command="cd /files/backups; cat | bzip2 -9 > fire-$(date +%Y-%m-%d).tar.bz2" ssh-rsa AAthisisthekey root@fire

from="fire.galimberti.priv"

indica da che macchina si accetta la connessione. Il nome del sistema da cui ci si connette lo si rileva da /var/log/auth

no-pty

indica di non associare un terminale alla connessione

command="cd /files/backups; cat | bzip2 -9 > fire-$(date +%Y-%m-%d).tar.bz2"

e' il comando che viene eseguito alla connessione. Ogni altro comando dato VIENE IGNORATO.

Dalla'ltro sistema, si lancerà quindi:

tar cvf - . | ssh backupfw@web

Verrà creato l'archivio di destinazione.

Riferimenti

  • man sshd AUTHORIZED_KEYS FILE FORMAT


Limitare l'accesso SSH a rsync (o scp o sftp)

Creare lo script:

cat | sudo tee /usr/local/sbin/validate-rsync > /dev/null <<EOFile
#!/bin/sh

case "$SSH_ORIGINAL_COMMAND" in
*\&*)
echo "Rejected"
;;
*\(*)
echo "Rejected"
;;
*\{*)
echo "Rejected"
;;
*\;*)
echo "Rejected"
;;
*\<*)
echo "Rejected"
;;
*\`*)
echo "Rejected"
;;
rsync\ --server*)
$SSH_ORIGINAL_COMMAND
;;
*)
echo "Rejected"
;;
esac 
EOFile
sudo chmod +x usr/local/sbin/validate-rsync

Dichiararlo come comando valido nell'authorized_keys:

from="10.0.21.253",command="/usr/local/bin/validate-rsync" ssh-rsa AAAAB3NzaC1yc
2EAAAABIwAAAIEAxwgWwz+lKS0P1eDk6UIQeedAjlCD6gCEulTCugpNS7fgXBJ3xKBSCa/Xo2PrRFaDJ
4ADCZf0D0cJtCKUsQHQSKILch9hyFUPssDVwZTLZXTp0nDyY4Y7nFju/g9bGOGDPF+FaeqGrExTydeeA
OxYTbHQpWXGgTcQQLRlIGIheSM= root@firecp

In questo modo saranno accettati solo connessioni rsync.

Riferimenti

Spiegano altri modi: