Sicurezza del codice sorgente

10

Abbiamo circa 20 sviluppatori che lavorano in un ambiente eterogeneo, per lo più utilizzando laptop aziendali o desktop. Gestiamo Windows 7 su desktop / laptop e una miscela di distribuzioni Linux (Ubuntu / CentOS).

La direzione è molto entusiasta di creare un sistema che protegga completamente il codice sorgente, dal momento che stiamo lavorando al progetto per un cliente che richiede lo stesso, cioè nessuna perdita di codice.

Facciamo in modo che alcune persone portino i laptop a casa durante il fine settimana per lavorare da remoto, dal momento che ciò li ha resi molto produttivi.

Mi è stato chiesto di formulare raccomandazioni per la protezione dell'ambiente, in modo che non vi siano perdite di codice sorgente.

Abbiamo un repository centrale di Subversion, che gli sviluppatori stanno usando. Possiamo prendere in considerazione nuovi repository, se necessario.

Qualcuno ha suggerito di utilizzare i desktop virtuali per tutti gli utenti in cui tutte le opzioni di copia sono disabilitate, significa che non è possibile copiare file tra diversi desktop virtuali o dischi rimovibili. Anche gli utenti remoti possono accedere al proprio desktop virtuale utilizzando una connessione VPN.

Questa è la soluzione migliore o c'è qualcosa di meglio? Vorremmo utilizzare il più possibile gli strumenti open source.

    
posta ramdaz 24.04.2012 - 11:42
fonte

4 risposte

9

Se stai cercando la massima sicurezza di altissimo livello - air gapping è il unico modo per farlo funzionare. Sfortunatamente, non avere assolutamente alcuna connessione con il mondo esterno in nessuna circostanza può essere proibitivo, specialmente perché gli sviluppatori amano copiare e incollare frammenti di codice dalla documentazione e così via.

In definitiva, questo probabilmente significa anche prendere i laptop fuori dal sito diventa un no-go anche.

Supponendo che non puoi farlo (perché diciamocelo, è piuttosto una domanda) - in primo luogo, workstation mobili. Sicuramente vai con l'opzione VPN. Garantire tutto il traffico internet tramite quei laptop passa attraverso la VPN. In questo modo, la tua architettura e i tuoi requisiti di sicurezza (politiche del firewall, ecc.) Sono sicuramente applicati e, cosa più importante, non esporrai nulla se non l'endpoint VPN alla rete pubblica.

Encrypt i dischi rigidi del laptop come minimo. Se il laptop viene rubato mentre è spento, il codice sorgente dovrebbe essere protetto per un ragionevole lasso di tempo. Se il laptop non viene spento, o se l'utente malintenzionato può osservare l'inserimento della password, non hai fatto nulla, ma rendi il loro lavoro leggermente più difficile. LUKS è supportato sia da Ubuntu che da CentOS per quanto ne so - utilizza cryptsetup e offre una scelta di algoritmi decenti e password multi-slot.

La crittografia del disco basata su hardware sarebbe migliore, semplicemente perché significa che la tua partizione /boot non è modificabile.

Le LAN virtuali per sicurezza ricevono opinioni contrastanti. Dal punto di vista dello sviluppo, mi aspetto che il tuo team lavori con sudo, o root, e come tale sarebbe facilmente in grado di riconfigurare il software VM per consentire il loro accesso ospite, se lo desiderano. Come menzionato nel post del blog, le macchine virtuali sono utilizzate per la segregazione della rete a basso costo, che funziona quando è possibile applicare la configurazione. Qui sembra una vendita difficile.

Questo non vuol dire che non puoi usare macchine virtuali, naturalmente; Vorrei semplicemente studiare con cura esattamente quanto è difficile per i tuoi sviluppatori aggirare.

Un modo in cui ho visto questo funziona correttamente se si dispone di una rete sufficientemente veloce e gli sviluppatori paziente devono utilizzare il desktop remoto per VM disponibili sulla rete, ma non fisicamente accessibili agli stessi sviluppatori. È anche possibile utilizzare client thin-thin, anziché desktop, come RDP. Il modello thin client si occupa anche del mio prossimo argomento ... sicurezza fisica.

Quando dico sicurezza fisica, voglio dire quanto è difficile per i tuoi sviluppatori collegare una chiavetta USB, svn co e uscire con il lotto? "Prendendo il codice di casa" può accadere in questo modo, ma perdi tutto se la chiavetta USB viene persa. In generale, sono disponibili due soluzioni: resina epossidica e rimuovendo i vari moduli hci.ko dal kernel, impedendo in tal modo il riconoscimento di USB. Sfortunatamente, questo ha lo svantaggio di disabilitare anche tastiere e mouse USB.

    
risposta data 24.04.2012 - 12:30
fonte
5

Il problema con la sicurezza è che spesso è un compromesso con l'usabilità. La prima cosa da fare è educare i tuoi utenti:

  • blocca i computer se si spengono
  • ha un ambiente di aggiornamento, protetto (AV / firewall)
  • conserva i loro computer in un luogo sicuro

Nella mia esperienza i desktop virtuali sono incredibilmente frustranti se si sta codificando. Sono lenti e a volte la tua connessione cade. Quindi tengo i laptop fisici se vuoi che lavorino da casa.

Cosa suggerisco:

  • imposta una VPN in modo che il repository SVN sia accessibile solo tramite questa VPN
  • durante l'emissione di laptop, configura una TrueCrypt sui dischi rigidi (ammesso che tu sia su Windows, per Ubuntu puoi semplicemente crittografare la partizione in cui è memorizzato il codice).
  • Se non vuoi che copino tutto il codice sorgente con cui puoi lavorare filiali se non hanno bisogno di accedere a tutto il codice.
  • Avere contratti chiari con i tuoi sviluppatori cosa possono e cosa non possono fare con il codice sorgente che hanno creato
risposta data 24.04.2012 - 12:26
fonte
5

Stai parlando di sviluppatori, e in un progetto che sembra importante come il tuo, probabilmente avrai dei buoni sviluppatori. Troveranno sempre dei modi, per copiare la fonte, ma può davvero ferire la soddisfazione se li ostacoli a lavorare.

L'unico modo che conosco è dividere il software in piccole parti indipendenti, quindi ogni sviluppatore conosce solo la sua parte. Questo ti darà un sacco di lavoro, perché devi definire esattamente le interfacce tra le parti, ma come effetto collaterale otterrai un codice ben controllabile.

Secondo me è molto più importante, cosa hanno già scritto Ninefingers e Lucas, che gli sviluppatori non possano trasportare il codice sorgente su chiavette USB non criptate. Altrimenti, se l'unità / laptop viene persa, anche il codice viene perso.

Nel complesso, farei attenzione a non superare il limite di frustrazione, soprattutto se nella tua squadra ci sono sviluppatori esperti affidabili.

    
risposta data 24.04.2012 - 13:47
fonte
2

Management is very keen to set up a system that completely secure the source code, since we are working on project for a customer who demands the same. That is no code leakage.

Ciò richiederebbe che tutte le attrezzature di lavoro vengano lasciate al lavoro. Tutte le attrezzature di lavoro non hanno i mezzi per collegare dispositivi flash. Significa anche disabilitare la capacità di leggere e scrivere su dischi multimediali.

Se tutto il codice viene conservato in ufficio, non è possibile che il codice lasci l'ufficio.

We do let some people take laptops over the weekend to work home, since that has seen to be very productive.

Questo significa che al di fuori dell'ufficio hai perso il controllo su ciò che accade ai dati.

Someone suggested using Virtual desktops for all users, and where all copy options are disabled, means you cannot copy files between different virtual desktops or to any removable disks. Even remote users can login to their Virtual Desktop using a VPN Connection.

È una banale operazione per forzare il nome utente / password di un desktop virtuale al fine di cambiare la password, quindi la possibilità di abilitare la possibilità di copiare i file.

Is this the best solution, or is there something better? We would like to use open source tools as much as possible

La soluzione semplice sarebbe quella di modificare tutte le apparecchiature, il codice può essere visualizzato su, per impedire che i dati vengano estratti da detto hardware.

    
risposta data 24.04.2012 - 15:17
fonte

Leggi altre domande sui tag