Security Essentials per sviluppatori e amministratori di siti

Tra tutti i temi tecnici, la sicurezza è probabilmente la più complessa e sicuramente la più importante. Questo perché la sicurezza è in continua evoluzione. È un'evoluzione forzata, poiché dobbiamo adattarci alle minacce in costante aumento.

Ci sono vari livelli di sicurezza di cui avremo la responsabilità. Il primo livello è noi stessi o l'organizzazione per cui lavoriamo. Il secondo livello sono i nostri clienti. E il terzo livello sono gli utenti dei siti Web o delle applicazioni che sviluppiamo per i nostri clienti.

Nonostante i nostri migliori sforzi, i clienti troveranno sempre i modi per indebolire le protezioni che forniamo loro. Si affidano a noi come professionisti IT per aiutarli a stare al sicuro, ma anche paradossalmente raramente seguono i consigli di sicurezza forniamo loro. Maggior parte degli utenti davvero lo sono i loro peggiori nemici.

Ciò che dobbiamo fare, quindi, è rendere il più difficile possibile per i clienti compromettere la loro sicurezza, rendendo anche il più semplice possibile per loro svolgere le attività che devono svolgere. Raggiungere entrambi gli obiettivi alla perfezione potrebbe essere impossibile, ma in questo articolo tratteremo alcune cose che puoi fare per ridurre i rischi di una violazione della sicurezza.

gif di Patswerk

Proteggi i tuoi dispositivi e i tuoi dati

Sei la prima linea di difesa per te e per i tuoi clienti. Se i tuoi sistemi sono compromessi, tutti quelli per cui lavori potrebbero essere a rischio. Ecco alcuni consigli per i minimi che puoi fare per evitare di operare in un ambiente a rischio elevato:

  1. Utilizzare un sistema operativo desktop sicuro. Questo è l'aggiornamento di base più semplice che potresti fare, se non stai già utilizzando un sistema operativo sicuro. I sistemi operativi più sicuri sono Linux, Unix e BSD. Dovresti utilizzare uno di questi sistemi operativi come sistema operativo desktop principale.
    Il vantaggio sia per gli sviluppatori che per gli amministratori è l'accesso a una libreria molto più ampia di strumenti gratuiti di sviluppo e sicurezza e la maggior parte di essi funziona meglio dei loro equivalenti Windows o OSX. Per operare realmente in modalità paranoica, scegli le distribuzioni Linux più sicure come Pappagallo, Qubes e Tails.
  2. Mantenere la separazione tra il sistema operativo e i tuoi dati. Se stai usando Linux o Unix, questo è facile. Assicurati semplicemente di aver creato una partizione o un disco rigido separato per ospitare la tua partizione domestica. Quindi tutti i file dell'utente sopravvivono a qualsiasi numero di installazioni del sistema operativo e, come bonus, è possibile accedere da più sistemi operativi su sistemi multi-boot.
  3. Utilizzare un file system di journaling per prevenire la perdita di dati in caso di arresto anomalo del sistema o interruzione imprevista del sistema.
  4. Specchia la tua partizione domestica. Eseguire regolarmente il backup di file importanti e utilizzare il controllo delle versioni dei file per evitare sovrascritture non intenzionali.
  5. Prendi in considerazione l'utilizzo del backup cloud (da non confondere con la sincronizzazione cloud, che non è affatto sicuro come un vero backup). I dati sensibili devono essere crittografati prima di essere caricati.
  6. Mantieni aggiornato il tuo sistema, senza mai ignorare le patch di sicurezza. I sistemi che utilizzano gli aggiornamenti continui hanno il vantaggio di sapere sempre quando sono disponibili le patch, cosa è necessario applicare le patch e perché.
  7. Addestrare le persone all'interno della propria organizzazione a prestare attenzione ai metodi di ingegneria sociale che potrebbero essere utilizzati contro di loro per ottenere l'accesso ai propri sistemi.
  8. Evitare di eseguire software da fonti non verificate. Quando si scarica il software da fonti attendibili, verificare le firme dei file per assicurarsi di avere una copia autentica.
  9. Mantieni la sicurezza fisica dei tuoi computer, soprattutto quando viaggi. Portare il tuo laptop ovunque potrebbe non essere pratico, ma è meglio che lasciarlo cattiva cameriera corrotto il tuo BIOS. Se in realtà non è un'opzione per trasportare il computer, bloccarlo in una custodia chiudibile a chiave e fissare quella custodia in una cassaforte o comunque il meglio che puoi.
  10. Ricorda sempre che è meglio essere paranoici che essere un idiota che è stato violato.

illustrazione di Punti fantasma creativi

Protezione dei clienti

Mantenere i clienti al sicuro dalle minacce IT è difficile, perché non tutti comprendono la portata della minaccia che devono affrontare. Molti avranno anche l'impressione che se il loro sito è compromesso, allora è il tuo problema a risolvere, non i loro.

Molti siti sono stati sfruttati per anni senza che i proprietari dei siti se ne rendessero conto, poiché la maggior parte degli attacchi malevoli contro i siti non dovrebbe consentire di far conoscere la loro presenza. Pertanto non puoi fare affidamento sui clienti per informarti di problemi. Avrai bisogno di adottare un approccio proattivo.

  1. Cerca di educare i tuoi clienti sui rischi. La maggior parte del problema è dovuta all'ignoranza che c'è il rischio di stare in guardia contro.
  2. Informare i clienti aziendali che la più grande minaccia che dovranno affrontare è minacce interne creato dai propri dipendenti e collaboratori (spesso involontario, ma non sempre così). Assicurati anche che siano a conoscenza di problemi come l'ingegneria sociale, la navigazione con le spalle e le immersioni con cassonetto.
  3. Mantenere i server aggiornati. Eseguire backup regolari.
  4. Cerca prove di exploit backdoor o altre attività dannose. Progettare la struttura dei file e delle cartelle per rendere il sito il più semplice possibile faciliterà il rilevamento. Scopri quali file dovrebbero essere in ogni cartella. Se vedi nuovi file che non sono familiari o sembrano avere nomi generati dal computer, questa è una seria bandiera rossa.
  5. Sapere quali file dovrebbero essere nella cartella cgi-bin (per la maggior parte dei siti, che non saranno file), perché questa è una posizione preferita per la memorizzazione di programmi dannosi.
  6. Controllare periodicamente il file htaccess per accertarsi che non sia stato manomesso.
  7. È improbabile che il codice che si scrive utilizzi estesamente le stringhe di codifica e decodifica o che contenga contenuti fortemente crittografati. Se i file PHP contengono codice insolito, non è molto probabile che si tratti di file legittimi. Anche le istruzioni di codifica dei caratteri insolite sono un omaggio. Ad esempio, non è probabile che i tuoi file legittimi vengano codificati nella codifica Windows-1251.
  8. Dopo aver confermato una violazione, modifica le password. Controlla i permessi dei file sono impostati correttamente per tutti i file e le cartelle. Monitora i segnali che l'intruso ha restituito. Anche dopo aver cambiato la tua password, gli aggressori potrebbero avere un senso. Devi essere sicuro che non lo facciano. Imposta il tuo server per informarti via email quando vengono apportate modifiche al server.
  9. Aiuta gli utenti a scegliere le password in modo appropriato, spiegando loro le regole in un modo che possano capire. Ecco come la maggior parte delle persone ama impostare le proprie password: jenny23Questo è il modo in cui gli amministratori di sistema consigliano loro di impostare le proprie password: n @ ^ 2z`jGAnd - il problema è la prima password può essere decifrata in pochi secondi, mentre la seconda password può essere violata in poche ore. Inoltre non vi è alcuna speranza che l'utente ricorderà la password più complessa. Ecco un esempio di una password che richiederebbe diverse vite per craccare e non potrebbe mai essere dimenticata: Ialwaysfly @ 40,000feet - Le caratteristiche della password di cui sopra includono: Lunghezza caratteri 20, combinazione di caratteri maiuscoli e minuscoli, include sia numeri che lettere, include caratteri non alfanumerici, facilmente memorizzabili. Un esempio simile potrebbe essere:

    asImove ^ inlife, Iwillnever4getwhereIstartedNon c'è davvero alcun limite alla creatività che puoi ottenere con le password, e c'è molto più vantaggio con

    asImove ^ inlife, Iwillnever4getwhereIstarted rispetto a n @ ^ 2z`jG. Il primo esempio (caratteri misti 41) impiegherebbe fino alla fine del tempo per incrinarsi ed è facile da ricordare, mentre il secondo esempio (caratteri misti 8) può essere spezzato meno di sei ore ed è quasi impossibile da ricordare. Non pensate di poter mettere insieme le parole e tutto andrà bene, perché lo sono gli hacker su quello. Hai ancora bisogno di mescolare casi e usare caratteri non alfanumerici, ma certamente la lunghezza è più importante della complessità come stanno le cose ora. La combinazione di entrambi ti dà un vantaggio su coloro che usano solo uno o l'altro.

    La maggior parte degli attacchi basati sul dizionario si concentrano sull'inglese perché è la lingua più utilizzata e la maggior parte dei siti migliori da indirizzare (in termini di valore di ciò che possono produrre) sono siti gestiti da persone che parlano inglese. Se conosci un'altra lingua, usala quando crei le tue password.

    Eccellente come

    asImove ^ inlife, Iwillnever4getwhereIstarted è, non è ancora perfetto come aMedidaQue ^ enLaVida, nuncaolivdarededondecomence perché questo aggiunge un ulteriore livello di complessità, costringendo il cracker a ricorrere alla forza bruta. Imparare un'altra lingua solo per creare password migliori potrebbe essere un po 'troppo, quindi l'altra cosa che potresti fare è solo diventare (o rimanere) davvero male in inglese quando progetti una passphrase. Per esempio:

    asImoov ^ inlyfIwillnevar4getwhereIstarted

    Per il massimo, potresti usare parole in lingua straniera male pronunciate e sostituire tutte le vocali con le vocali Leet:

    4M3d1d4Qu3^3nL4V1d3,nunc40l1vd4r3d3dond3c0m3nc3

    Non so voi, ma non avrei la pazienza di scriverlo. Eppure, è una password molto sicura, e costringe il cracker a fare una quantità folle di lavoro (sperando poi di scoprire che tutto ciò a cui hanno accesso è una raccolta di immagini di gatti)

  10. Assicurati che i clienti comprendano i pericoli inerenti all'invio di informazioni sensibili via e-mail, Skype, ecc.

gif di Hoang Nguyen

Una nota speciale per gli sviluppatori

Uno spostamento culturale rapido e semplice da adottare per gli sviluppatori che impedirebbe innumerevoli violazioni della sicurezza ogni anno è semplicemente quello di minimizzare la catena di dipendenza esterna dei loro siti. Ci stiamo connettendo inutilmente a script ospitati da terze parti. Molti di questi script possono avere le loro dipendenze esterne. Tutto per salvare pochi byte.

Ogni volta che è possibile, dovremmo provare a ospitare tutte le nostre sceneggiature da soli. Un popolare script ospitato da terze parti è un obiettivo allettante per un utente malintenzionato, perché acquisendo il controllo sullo script è possibile eseguire exploit su migliaia di computer.

Osservazioni conclusive

La sicurezza informatica è una sfida senza fine e ci sono molti soldi da fare su entrambi i lati della sfida. La posta in gioco è molto alta e nessuno è completamente al sicuro, anche coloro che credono di non avere nulla da nascondere. Vincere è principalmente una questione di usare il buon senso e stare all'erta, senza mai lasciarsi convincere.

immagine di cortesia per gentile concessione di Josh Warren

Bogdan Rancea

Bogdan è membro fondatore di Inspired Mag, avendo accumulato quasi 6 anni di esperienza in questo periodo. Nel tempo libero ama studiare musica classica ed esplorare le arti visive. È piuttosto ossessionato dai fissaggi. Possiede già 5.