Quali sono le pratiche migliori per la protezione del codice sorgente in una networking di sviluppo?

A mia azienda siamo molto protettivi del nostro codice sorgente. Abbiamo soddisfatto la nostra paranoia creando una LAN per lo sviluppo che abbiamo in disparte da Internet e dal resto delle nostre reti aziendali. All'interno della networking di sviluppo abbiamo alcune macchine protette (il server di controllo di origine, il server di generazione, il controller di dominio) e tutta la fonte richiede di essere mantenuto in crittografia o in una stanza bloccata. Essere in grado di spiegare una tale politica di sicurezza semplice ai nostri clienti è stato un vantaggio competitivo per noi, ma come la nostra azienda cresce i costi di mantenere questa networking sono anche diventati più grandi. Per affrontare il dolore nel corso dell'ultimo anno, ci siamo allontanati dalla nostra rigorosa politica di intervalli d'aria permettendo l'accesso VPN solo autenticato a due fattori alla networking.

Tuttavia, la mancanza di connettività tra la nostra networking di sviluppo e il resto della nostra networking aziendale continua ad essere un grave impedimento alla cooperazione tra le squadre che lavorano all'interno della networking e le squadre che lavorano al di fuori della networking. Vorremmo considerare la riforma drammatica della nostra architettura di networking, ma non siamo sicuri di quali sono le migliori pratiche del settore per assicurare il codice sorgente. Quello che potremmo considerare sarebbe:

  • modalità di lettura per i backup di SMB Windows su Samba Server per impedire la crittografia / manipolazione
  • È sicuro aprire la port 3306 in Firewall per la connessione MySQL esterna
  • Ci sono delle vulnerabilità di sicurezza noti al server mercuriale incorporato?
  • Perché sshd consentire l'accesso di root come impostazione predefinita?
  • Powershell Remoting le implicazioni di sicurezza aggiungendo gli utenti a WinRMRemoteWMIUsers
  • Autenticazione certificato
    • Connettere la nostra networking di sviluppo al resto della nostra networking aziendale e consentire una comunicazione senza restrizioni tra i due host di questa networking. Consentono anche collegamenti in output relativamente non limitati a Internet.
    • Consenti l'accesso completo VPN alla networking aziendale per i dipendenti remoti.
    • Espandere una networking separata di "test sandbox" che non contenga il codice sorgente, non verrà eseguita la patch e consentirà solo le connessioni in ingresso dal resto della networking aziendale.
    • Richiedere che le macchine di sviluppo siano gestite con l'assunzione di traffico di networking ostile: richiedono livelli aggiornati dei patch, non consentono il debug remoto non autenticato, impostare password forti, ecc.
    • Continuare a richiedere che tutti i codici a rest rimangano in una stanza bloccata (per le vecchie piattaforms che non dispongono di una soluzione di crittografia soddisfacente) o essere crittografati
    • Continuare a richiedere che tutti gli sviluppatori con accesso al codice firmino documenti appropriati che indicano che non rimuoveranno alcun codice dalla networking

    Si potrebbe considerare una politica di sicurezza soddisfacente presso le principali organizzazioni di sviluppo software che hai lavorato? Quali altre pratiche seguono le organizzazioni di sviluppo software per proteggere la loro fonte? Ad esempio, sono i sisthemes di rilevamento delle intrusioni una parte comune della sicurezza di origine?

    Il "come facciamo a proteggere il nostro codice sorgente?" la questione è strettamente legata al nostro, ma siamo più preoccupati per l'architettura della networking rispetto alla politica dei dipendenti o alla strategia di backup.

  • Ubuntu Deployment Toolkit
  • Come rendere BIND comport diversamente a seconda della fonte di query?
  • Gestione di iptables con Puppet
  • 3 Solutions collect form web for “Quali sono le pratiche migliori per la protezione del codice sorgente in una networking di sviluppo?”

    La politica aziendale è spesso più efficace di una soluzione tecnologica per alcune di queste cose. Questo non significa che la tecnologia non può giocare un ruolo nell'applicazione delle politiche.

    Suggerisco di guardare in una Fortigate da Fortinet . Hanno alcune cose che puoi sfruttare per aiutarti. Hanno la possibilità di mettere in quarantena tutti i computer che non soddisfano le tue politiche, anche a livello di patch, A / V, ecc. Ha anche la capacità di fare sia la protezione delle applicazioni e la prevenzione delle perdite di dati. Quindi devi solo impostare una regola di prevenzione delle perdite di dati per bloccare qualsiasi cosa che somigliava al codice. Quindi, se la tua azienda dispone di un'intestazione standard che viene posta in cima ai file, puoi cercare e bloccarla e segnalarla. Se si aggiunge il FortiClients al mix, è ansible bloccare le porte USB della macchina locale e forzare firewall, A / V, prevenzione delle perdite di dati e politiche di prevenzione delle intrusioni in each client.

    Quindi per parlare con i tuoi punti.

    • Il firewall con VLANS dovrebbe essere in grado di occuparsi del primo punto.
    • Fortigate è anche un VPN in modo che anche il punto è abbastanza semplice.
    • VLAN di qualche tipo potrebbe essere la tua Sandbox.
    • ForitClient in combinazione con le Politiche di Gruppo e con la Fortigate è necessario controllare tutto ciò di cui avete bisogno.
    • Questo è un po 'più duro da affrontare. Ma le politiche aziendali che dichiarano che non seguendo queste politiche comporteranno la risoluzione è l'approccio migliore. Tuttavia, FortiClient può bloccare le porte USB in modo da bloccare la networking in modo sufficiente questo dovrebbe dare il controllo che si desidera.
    • Quest'ultimo è più di una cosa politica.

    Beh, è ​​più una risposta sulla filosofia del design che l'architettura reale, ma sembri avere un'idea decente di quello che vuoi realizzare. Ritengo che sia la migliore pratica non solo avere una politica scritta, ma progettare il sistema per rendere difficile la violazione della politica (se non imansible). Ad esempio, se solo alcune macchine possono connettersi direttamente a un server critico, quindi circondano il server critico con ACL o un firewall locale server per consentire solo le connessioni da quelle macchine.

    Per quanto riguarda i punti puntati:

    • Vi consiglio di non consentire l'accesso a internet senza restrizioni. Alless usare un requisito proxy forzato da firewall o WCCP. La negazione predefinita con un whitelist è la cosa migliore.
    • Le VPN sono grandi se si vuole veramente consentire (o voler gestire) l'accesso libero dall'esterno della networking; se vuoi solo consentire specifiche tipologie di connessioni, allora considero l'overkill VPN e inutilmente pericoloso
    • Sono un fan di sandbox per gli sviluppatori a giocare, la nostra collega ad un accesso a Internet separato ed è dall'altra parte di un firewall di livello di produzione dal resto della networking
    • le patch e le password sicure dovrebbero essere un minimo in tutti gli ambienti … periodo
    • la crittografia è buona, ma sarà necessario gestire il metodo di crittografia con un occhio verso il fallimento; cioè, cosa succede quando devi assolutamente avere accesso al codice ma il ragazzo che ha le password è in vacanza? Se hai bisogno di suggerimenti qui, lasciami sapere e aggiungo come gestire questo … è un po 'convulso, ma efficace.
    • potrebbe essere interessato a una soluzione di tipo NAC per l'ultimo punto come metodo di forzamento dell'authentication e che consente di verificare chi copia where. È inoltre ansible fare cose come impedire dispositivi USB, che si dimostrano un reale pericolo per i dati privati

    Sono un po 'confuso. Hai già connettività VPN nella networking protetta, cosa che suggerisce quanto segue

    1. Ottenere due serie di computer per le persone che richiedono l'accesso a entrambe le reti. Non necessariamente sulla stessa scrivania.
    2. Richiedere le connessioni VPN nella networking protetta, per qualsiasi tipo di tipo di sviluppo.

    Il codice sorgente e tutti i lavori di sviluppo possono continuare sulla networking protetta e essere eseguiti tramite RDP, mentre i terminali sono sulla networking esterna e possono eseguire altri strumenti in parallelo.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.