8 suggerimenti essenziali per proteggere il server di applicazioni Web

Nella maggior parte dei casi, i server delle applicazioni Web devono essere accessibili pubblicamente, il che significa che sono esposti a tutti i tipi di minacce.

Molte di queste minacce sono prevedibili e facilmente evitabili, mentre altre sono sconosciute e possono coglierti alla sprovvista. Per ridurre al minimo la possibilità di quest’ultimo caso, offriamo un elenco di suggerimenti essenziali per mantenere i server delle applicazioni Web il più sicuri possibile.

Prima di iniziare con l’elenco dei suggerimenti, è necessario comprendere che un server di applicazioni Web non è un’isola. Il server è il componente centrale nella web application farm che rende possibile l’hosting e il funzionamento di un’applicazione web. Pertanto, per garantire la sicurezza, è necessario prendere in considerazione tutti i componenti che lo circondano e proteggere l’intero ambiente dell’applicazione Web.

Un ambiente di base per l’hosting e l’esecuzione di applicazioni Web include il sistema operativo (Linux, Windows), il software del server Web (Apache, Nginx), un server di database. Se uno di questi componenti viene violato, gli aggressori potrebbero ottenere l’accesso ed eseguire tutte le azioni dannose che desiderano.

Un primo consiglio di base per proteggere un ambiente come quello sopra descritto è leggere le linee guida di sicurezza e l’elenco delle migliori pratiche per ciascuno dei componenti. Detto questo, esaminiamo una serie di linee guida di sicurezza di buon senso che si applicano a quasi tutti gli ambienti di applicazioni Web.

Il firewall demistificato

Potresti essere tentato di controllare rapidamente questo elemento, pensando: “fortuna, ho già un firewall che protegge la mia rete”. Ma faresti meglio a tenere i tuoi cavalli.

Il tuo firewall potrebbe prendersi cura dei confini della tua rete, tenendo fuori i cattivi e dentro i buoni, ma di sicuro sta lasciando una porta spalancata per gli aggressori per violare il tuo server di applicazioni web.

Come?

Semplice: il tuo firewall di rete deve almeno consentire il traffico in entrata sulle porte 80 e 443 (ovvero HTTP e HTTPS) e non sa chi o cosa sta passando attraverso quelle porte.

Quello di cui hai bisogno per proteggere la tua applicazione è un WAF (Web Application Firewall) che analizzi in modo specifico il traffico web e blocchi qualsiasi tentativo di sfruttare vulnerabilità come il cross-site scripting o l’iniezione di codice. Un WAF funziona come un tipico antivirus e antimalware: cerca modelli noti nel flusso di dati e lo blocca quando rileva una richiesta dannosa.

Per essere efficace, il WAF deve avere il suo database costantemente aggiornato con i nuovi modelli di minaccia, in modo da poterli bloccare. Il problema con la prevenzione degli attacchi basata su pattern è che la tua applicazione web può essere uno dei primi bersagli di una nuova minaccia di cui il tuo WAF non è ancora a conoscenza.

Per questi motivi, la tua applicazione web necessita di livelli di protezione aggiuntivi oltre al firewall di rete.

Cerca le vulnerabilità specifiche del web

Ancora una volta, non pensare che il tuo server di applicazioni Web sia privo di vulnerabilità solo perché lo dice il tuo scanner di sicurezza di rete.

Gli scanner di rete non sono in grado di rilevare le vulnerabilità specifiche dell’applicazione. Per rilevare ed eliminare queste vulnerabilità, è necessario sottoporre le applicazioni a una serie di test e controlli, come test di penetrazione, scansione della scatola nera e controllo del codice sorgente. Nessuno di questi metodi è a prova di proiettile, però. Idealmente, dovresti eseguirne il maggior numero possibile per eliminare tutte le vulnerabilità.

Ad esempio, scanner di sicurezza, come Invitti, assicurarsi che nessun codice sfruttabile arrivi all’ambiente di produzione. Ma potrebbero esserci vulnerabilità logiche che possono essere rilevate solo dal controllo manuale del codice. L’audit manuale, oltre a costare molto, è un metodo umano e quindi soggetto a errori. Una buona idea per fare questo tipo di auditing senza sprecare un sacco di soldi è incorporarlo nel processo di sviluppo, principalmente educando i tuoi sviluppatori.

Educa i tuoi sviluppatori

Gli sviluppatori tendono a pensare che le loro applicazioni funzionino in mondi ideali, dove le risorse sono illimitate, gli utenti non commettono errori e non ci sono persone con intenzioni spietate. Sfortunatamente, a un certo punto, devono affrontare problemi del mondo reale, in particolare quelli relativi alla sicurezza delle informazioni.

Durante lo sviluppo di applicazioni Web, i programmatori devono conoscere e implementare meccanismi di sicurezza per garantire che siano privi di vulnerabilità. Tali meccanismi di sicurezza dovrebbero far parte della guida alle migliori pratiche a cui il team di sviluppo deve attenersi.

Il controllo della qualità del software viene utilizzato per garantire la conformità con le migliori pratiche. Le best practice e il controllo sono gli unici modi per rilevare le vulnerabilità logiche, come (ad esempio) il passaggio di parametri non crittografati e visibili all’interno di un URL, che un utente malintenzionato potrebbe facilmente modificare per fare ciò che vuole.

Disattiva le funzionalità non necessarie

Supponendo che le applicazioni Web siano il più possibile prive di errori e che la Web farm sia protetta, vediamo cosa si può fare sul server stesso per proteggerlo dagli attacchi.

Un consiglio di base e di buon senso è ridurre il numero di punti di ingresso potenzialmente vulnerabili. Se gli aggressori possono sfruttare uno qualsiasi dei componenti del server web, l’intero server web potrebbe essere in pericolo.

Fai un elenco di tutte le porte aperte e dei servizi in esecuzione o dei demoni sul tuo server e chiudi, disabilita o disattiva quelle non necessarie. Il server non deve essere utilizzato per scopi diversi dall’esecuzione delle tue applicazioni Web, quindi considera di spostare tutte le funzionalità aggiuntive su altri server nella tua rete.

Utilizzare ambienti separati per sviluppo, test e produzione

Sviluppatori e tester hanno bisogno di privilegi sugli ambienti su cui lavorano che non dovrebbero avere sul server delle applicazioni live. Anche se ti fidi ciecamente di loro, le loro password potrebbero facilmente fuoriuscire e cadere in mani indesiderate.

Oltre a password e privilegi, negli ambienti di sviluppo e test, di solito ci sono backdoor, file di registro, codice sorgente o altre informazioni di debug che potrebbero esporre dati sensibili, come nomi utente e password di database. Il processo di distribuzione dell’applicazione Web deve essere eseguito da un amministratore, che deve assicurarsi che nessuna informazione sensibile venga esposta dopo l’installazione dell’applicazione sul server live.

Lo stesso concetto di segregazione deve essere applicato ai dati dell’applicazione. I tester e gli sviluppatori preferiscono sempre lavorare con dati reali, ma non è una buona idea concedere loro l’accesso al database di produzione, o anche solo a una sua copia. Oltre a evidenti problemi di privacy, il database potrebbe contenere parametri di configurazione che rivelano le impostazioni interne del server, come gli indirizzi degli endpoint o i percorsi, solo per citarne un paio.

Mantieni aggiornato il software del tuo server

Per quanto ovvio possa sembrare, questo è uno dei compiti più trascurati. SUCURI ha riscontrato che il 59% delle applicazioni CMS erano obsolete, il che è soggetto a rischi.

Ogni giorno compaiono nuove minacce e l’unico modo per impedire che mettano a rischio il tuo server è installare sempre le patch di sicurezza più recenti.

Abbiamo accennato in precedenza che i firewall di rete e gli scanner di sicurezza di rete non sono sufficienti per prevenire gli attacchi alle applicazioni web. Ma sono necessari per proteggere il tuo server dalle comuni minacce alla sicurezza informatica, come gli attacchi DDoS. Quindi assicurati di avere tali applicazioni sempre aggiornate e che proteggano efficacemente la tua applicazione aziendale.

Limita accesso e privilegi

Una misura di sicurezza di base consiste nel mantenere il traffico di accesso remoto, come RDP e SSH, crittografato e in tunnel. È anche una buona idea mantenere un elenco ridotto di indirizzi IP da cui è consentito l’accesso remoto, assicurandosi che qualsiasi tentativo di accesso remoto da qualsiasi altro IP sia bloccato.

Gli amministratori occasionalmente concedono agli account di servizio tutti i privilegi possibili perché sanno che, così facendo, “tutto funzionerà”. Ma questa non è una buona pratica poiché gli aggressori possono utilizzare le vulnerabilità nei servizi per penetrare nel server. Se tali servizi vengono eseguiti con privilegi di amministratore, possono occupare l’intero server.

Un buon equilibrio tra sicurezza e praticità richiede che ogni account, sia account di accesso che account di servizio, disponga dei privilegi necessari per svolgere il proprio lavoro e nient’altro.

Ad esempio, è possibile definire account diversi affinché un amministratore svolga attività diverse: uno per eseguire backup, un altro per pulire i file di registro, altri per modificare la configurazione dei servizi e così via. Lo stesso vale per gli account di database: un’applicazione di solito necessita solo dei permessi per leggere e scrivere dati e non per creare o eliminare tabelle. Pertanto, dovrebbe essere eseguito con un account con privilegi limitati per eseguire le attività necessarie.

Tieni d’occhio i log del server

I file di registro sono lì per un motivo.

Gli amministratori dovrebbero monitorarli regolarmente per rilevare eventuali comportamenti sospetti prima che causino danni. Analizzando i file di registro, puoi scoprire molte informazioni per aiutarti a proteggere meglio l’applicazione. Se dovesse verificarsi un attacco, i file di registro potrebbero mostrarti quando e come è iniziato, aiutando a controllare meglio i danni.

È inoltre necessario disporre di una procedura automatizzata per eliminare i vecchi file di registro o per eliminare le informazioni obsolete, per evitare che utilizzino tutto lo spazio di archiviazione disponibile nel server.

Suggerimento bonus: tieniti informato

Ci sono molte informazioni utili e gratuite su Internet che puoi utilizzare a beneficio della tua applicazione web. Non perdere nessun nuovo post su rinomati blog sulla sicurezza (come questo) e tieniti informato su ciò che sta accadendo nel settore della sicurezza e del web.

Tutorial, corsi, video e libri sono anche fonti di conoscenze utili. Esercitati a dedicare una o due ore alla settimana solo per rimanere informato sulle novità del settore: ti darà la tranquillità di sapere che stai facendo la cosa giusta per proteggere le tue applicazioni.