Limitare i comandi eseguivibili via ssh: Difference between revisions
No edit summary |
|||
| (2 intermediate revisions by the same user not shown) | |||
| 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/bin/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 | |||
Assicurarsi che l'utente abbia l'hash dei known_hosts disabilitato: | |||
vi ~/.ssh/config | |||
HashKnownHosts no | |||
Dichiarare le restrizioni ed il 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] | |||
Latest revision as of 11:10, 13 November 2008
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/bin/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
Assicurarsi che l'utente abbia l'hash dei known_hosts disabilitato:
vi ~/.ssh/config
HashKnownHosts no
Dichiarare le restrizioni ed il 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: