SVN in sicurezza


Di guide sull’installazione di SVN è pieno il web, quindi se è quello che state cercando probabilmente avete sbagliato pagina, vi conviene andare/ritornare su Google o seguire la guida scritta sul wiki di ubuntu-it😉

SubVersion

Quello che vogli mostrarvi qui è come configurare SVN per accedere via SSH con un po più di sicurezza (o almeno così si spera! :D)

Per prima cosa andiamo a modificare la configurazione del demone SSH sul server, in particolar modo mi riferisco a questi parametri del file /etc/ssh/sshd_config:

PasswordAuthentication no
PubkeyAuthentication yes
UsePAM no
UsePrivilegeSeparation yes
PermitRootLogin no
StrictModes yes
IgnoreRhosts yes
PermitEmptyPasswords no

questo ovviamente è un esempio, liberi di modificarli, ma principalmente la configurazione deve disabilitare l’autenticazione via password (non so se c’è ancora chi la tiene attiva) a favore di quella via public-key (o chiave pubblica).

Questo, oltre a toglierci una parte dei problemi in fatto di sicurezza, ci consente di usufruire di una funzionalità di OpenSSH definita nel file .ssh/authorized_keys: command.

Brevemente, possiamo disabilitare il comando specificato dall’utente in fase di autenticazione, impostando noi l’azione da eseguire in base alla chiave pubblica usata dal client. E questa funzionalità “fa scopa” (o “va a braccetto” o “è perfetta” come preferite), con la modalità tunnel di svnserver (fate un man srvserve per dettagli).

Facciamo un esempio pratico… supponiamo di voler configurare due utenti che possono aver accesso al nostro server SVN, il primo possiede una chiave pubblica RSA AAAAAAaaaaaaaaBBBBBBBBBccccccccc, mentre il secondo DDDDDeeeeeeFFFFFFGGGGGGG, ma devono accedere a due repository diversi.
Dobbiamo solo aggiungere queste righe al file .ssh/authorized_keys relativamente all’account svn del nostro server:

command="/usr/bin/svnserve -t -r /srv/svn/repo1 --tunnel-user=utente1" ssh-rsa AAAAAAaaaaaaaaBBBBBBBBBccccccccc utente1@client1
command="/usr/bin/svnserve -t -r /srv/svn/repo2 --tunnel-user=utente2" ssh-rsa DDDDDeeeeeeFFFFFFGGGGGGG utente2@client2

nel momento in cui viene eseguito l’accesso dai client, in base alla chiave pubblica condivisa, verrà “aperto” solo il repository relativo all’utente (ovviamente il client per accedere dovrà utilizzare il prefisso svn+ssh utilizzando la chiave privata relativa).

Per aumentare un po di più la sicurezza (non è mai troppa visto che stiamo sempre parlando di un accesso esterno al nostro sistema, possibile oggetto di attacchi), possiamo aggiungere altri parametri per limitare le attività che possono svolgere questi utenti

command="/usr/bin/svnserve -t -r /srv/svn/repo1 --tunnel-user=utente1",no-port-forwarding,no-pty,no-agent-forwarding,no-X11-forwarding ssh-rsa AAAAAAaaaaaaaaBBBBBBBBBccccccccc utente1@client1

per dettagli vi consiglio di guardare la manpage di sshd.

Buon divertimento!😉

One thought on “SVN in sicurezza

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...