2011-04-21 6 views
9

Qual è il modo migliore (o meno) per monitorare un'applicazione ASP.NET per garantire che sia protetta e per rilevare rapidamente l'intrusione? Come facciamo a sapere che, a partire da ora, la nostra applicazione è completamente intransigente?Monitoraggio di ASP.NET e SQL Server per la sicurezza

Stiamo per avviare un'applicazione Web ASP.NET 4, con i dati memorizzati su SQL Server. Il server Web viene eseguito in IIS su un'istanza di Windows Server 2008 e il server di database viene eseguito su SQL Server 2008 su un'istanza di Win 2008 separata.

Abbiamo esaminato le raccomandazioni di sicurezza di Microsoft e ritengo che la nostra applicazione sia molto sicura. Abbiamo implementato "difesa in profondità" e considerato una gamma di vettori di attacco.

Quindi "ci sentiamo" fiduciosi, ma non abbiamo ancora una reale visibilità nella sicurezza del nostro sistema. Come possiamo sapere immediatamente se qualcuno è penetrato? Come possiamo sapere se un pacchetto di qualche tipo è stato depositato su uno dei nostri server? Come possiamo sapere se una perdita di dati è in corso?

Quali sono alcuni concetti, strumenti, best practice, ecc.?

Grazie in anticipo, Brian

Pensieri Ulteriori 4/22/11

Chris, grazie per le osservazioni personali molto utili e suggerimenti di seguito.

Qual è un approccio valido e completo per monitorare l'attività dell'applicazione corrente per motivi di sicurezza? Oltre alla costante vigilanza nell'applicazione di best practice, patch, ecc., Voglio sapere esattamente cosa sta succedendo all'interno del mio sistema in questo momento. Voglio essere in grado di osservare e analizzare la sua attività in un modo che mi mostri chiaramente quale traffico è sospetto e quale no. Infine, voglio che queste informazioni siano completamente accurate e facili da digerire.

Come ci avviciniamo in modo efficiente a questo? Una buona soluzione non includerebbe il monitoraggio degli accessi, l'attività del database, l'attività ASP.NET, ecc. Oltre ai pacchetti sul filo? Quali sono alcuni esempi di come assumere un forte atteggiamento di sicurezza?

Brian

risposta

1

Non l'ho ancora provato, ma Lenny Zeltser mi ha indirizzato verso OSSEC, che è un sistema di rilevamento delle intrusioni basato su host che monitora continuamente un intero server per rilevare qualsiasi attività sospetta. Questo sembra esattamente quello che voglio!

Aggiungerò ulteriori informazioni una volta che avrò la possibilità di testarlo completamente.

OSSEC può essere trovato alla http://www.ossec.net/

2

posso dire qualche pensa - ma sarà felice di sentire più idee.

Come possiamo sapere immediatamente se qualcuno è penetrato?

Questo non è così facile e, a mio parere, ** l'idea è di fare alcune trappole ** all'interno del backoffice, insieme a monitor per doppia login da IP diversi.

una trappola può essere tutto ciò che si può pensare, ad esempio una pagina non reale che dire "creare nuovo amministratore", o "password amministratore cambiamento", il backoffice, e ci chiunque può entra e provare fare un nuovo amministratore è sicuramente un penetratore - ovviamente questa trappola deve essere conosciuta solo da te, altrimenti non c'è alcun significato per questo.

Per maggiore sicurezza, qualsiasi modifica agli amministratori deve richiedere una seconda password e, se qualcuno tenta di apportare modifiche reali all'account degli amministratori, o tenta di aggiungere un nuovo amministratore e non riesce su questa seconda password, deve essere considerata come un penetratore.

modo per monitorare un'applicazione ASP.NET

penso che qualsiasi strumento che monitorare le pagine per qualche cambiamento del testo, può aiutare su questo. Ad esempio questo Network Monitor può monitorare per il testo specifico sulla tua pagina e avvisarti, o prendere alcune azioni se questo testo non viene trovato, il che significa che qualcuno cambia la pagina.

Quindi è possibile aggiungere un testo speciale hiden e, se non lo si trova, si può essere certi che alcuni cambiano il core della pagina e probabilmente i file di modifica.

Come possiamo sapere se un pacchetto di qualche tipo è stato depositato su uno dei nostri server

Questo può essere qualsiasi pagina aspx caricato sul server e agire come un browser di file. Per questo non accadrà suggerire di aggiungere file web.config alle directory utilizzate per il caricamento dei dati, e su questo web.config non consentono l'esecuzione di alcunché.

<configuration> 
    <system.web> 
     <authorization> 
     <deny users="*" /> 
     </authorization> 
    </system.web> 
</configuration> 
+0

Un paio di cose qui: 1. L'unico modo in cui le pagine "trappola" sarebbero disponibili è se essi sono o conoscenza pubblica o accessibile effettuando una ricerca google. È molto meglio non lasciare che le tue pagine di amministrazione siano ricercabili. 2. Monitorare il testo mancante non è un buon modo per identificare se una pagina è cambiata. Più spesso il nuovo testo viene aggiunto a differenza di qualcuno che rimuove cose vecchie. 3. Non c'è ragione nel mondo di oggi di avere una directory di upload in primo luogo. Archivialo nel database in cui sono presenti backup semplificati. – NotMe

+0

@Chris Grazie per gli appunti, sì, hai ragione. Qui faccio solo alcune idee che si adattano ad alcuni casi, non a tutti i casi, forse non ai migliori, mi piacerebbe imparare di più da altre risposte. – Aristos

2

Il termine che stai cercando è Intrusion Detection System (IDS). Esiste un termine correlato chiamato Intrusion Prevention System (IPS).

Il traffico del monitor IDS entra nei server a livello IP e invierà avvisi basati su analisi sofisticate del traffico.

Gli IPS sono la prossima generazione di IDS che in realtà cercano di bloccare determinate attività.

Ci sono molti sistemi commerciali e open source disponibili tra cui Snort, SourceFire, Endace e others.

In breve, si dovrebbe considerare l'aggiunta di uno di questi sistemi al proprio mix per il monitoraggio in tempo reale e il potenziale blocco di attività pericolose.


Ho voluto aggiungere un po 'più di informazioni qui perché l'area commenti è solo un po' piccola.

La cosa principale che devi capire sono i tipi di attacchi che vedrai. Questi vanno da script automatici relativamente poco sofisticati a attacchi mirati altamente sofisticati. Colpiranno anche tutto ciò che possono vedere dal sito Web stesso su IIS, .Net, Mail server, SQL (se accessibile), direttamente sul firewall e su altri macchinari/servizi esposti. Un approccio olistico è l'unico modo per monitorare realmente ciò che sta accadendo.

In generale, un nuovo sito/azienda verrà colpito con gli script automatici in pochi minuti (direi 30 al massimo) di live. Qual è il motivo principale per cui le nuove installazioni di MS Windows mantengono la rete bloccata durante l'installazione. Diamine, ho visto le macchine inchiodate entro 30 secondi dall'attivazione per la prima volta.

L'approccio adottato da hacker/worm è quello di eseguire costantemente la scansione di ampi intervalli di indirizzi IP, seguito da impronte digitali delle macchine per coloro che rispondono. Sulla base del profilo, invieranno determinati tipi di attacchi a modo tuo. In alcuni casi, la fase di profilazione viene saltata e attaccano alcune porte indipendentemente dalla risposta. La porta 1443 (SQL) è comune.

Sebbene la forma di attacco più comune, quella automatizzata è di gran lunga la più facile da gestire. Spegnere le porte non utilizzate, disattivare ICMP (risposta ping) e avere un firewall decente sul posto manterrà la maggior parte degli scanner lontani.

Per gli attacchi con script, assicurarsi di non esporre pacchetti comunemente installati come PhpMyAdmin, gli strumenti di amministrazione Web di IIS o anche Desktop remoto al di fuori del firewall. Inoltre, elimina tutti gli account denominati "admin", "administrator", "guest", "sa", "dbo", ecc. Infine assicurati che le tue password NON siano permesse essere il nome di qualcuno e NON sono sicuramente quelle predefinite che spedito con un prodotto.

Lungo queste linee assicurarsi che il server del database NON sia direttamente accessibile all'esterno del firewall. Se per qualche motivo devi avere un accesso diretto, per lo meno cambia la porta # a cui risponde e applica la crittografia.

Una volta eseguito e protetto correttamente, gli unici servizi esposti devono essere quelli Web (porta 80/443). Gli oggetti che possono ancora essere sfruttati sono bug in IIS, .Net, o la tua applicazione web.

Per IIS e. NET è necessario installare gli aggiornamenti di Windows da MS non appena vengono rilasciati. MS è stata estremamente brava a spingere gli aggiornamenti di qualità per Windows, IIS e .Net. Inoltre, una grande maggioranza degli aggiornamenti riguarda vulnerabilità già sfruttate in natura. I nostri server sono stati impostati per installare automaticamente gli aggiornamenti non appena sono disponibili e abbiamo mai masterizzato su questo (risalendo almeno a quando è stato rilasciato il server 2003).

Inoltre, è necessario rimanere aggiornati sugli aggiornamenti del firewall. Non è passato molto tempo da quando uno dei firewall di Cisco aveva un bug in cui poteva essere sopraffatto. Sfortunatamente lascia passare tutto il traffico quando questo è accaduto. Sebbene siano stati risolti abbastanza rapidamente, le persone venivano ancora martellate più di un anno dopo perché gli amministratori non riuscivano a tenere il passo con le patch dell'IOS. Lo stesso problema con gli aggiornamenti di Windows. Un sacco di persone sono state violate semplicemente perché non hanno applicato gli aggiornamenti che l'avrebbero impedito.

Gli attacchi più mirati sono un po 'più difficili da affrontare. Un discreto numero di hacker sta perseguendo applicazioni web personalizzate. Cose come postare per contattarci e moduli di accesso. I post potrebbero includere JavaScript che, una volta visualizzati da un amministratore, potrebbero causare il trasferimento delle credenziali o l'installazione di keylogger o trojan nei computer dei destinatari.

Il problema qui è che potresti essere compromesso senza nemmeno saperlo. Le difese comprendono l'assicurazione che HTML e JavaScript non possano essere inviati attraverso il tuo sito; avere solidi controlli spam e virus (e costantemente aggiornati) sul server di posta, ecc. Fondamentalmente, è necessario esaminare ogni possibile modo che un'entità esterna possa inviarti qualcosa e fare qualcosa al riguardo. Molte aziende di Fortune 500 continuano a essere colpite da cose come questa ... Google incluso.

Spero che quanto sopra aiuti qualcuno. Se è così e porta a un ambiente più sicuro, allora sarò un ragazzo felice. Sfortunatamente la maggior parte delle aziende non monitora il traffico, quindi non hanno idea di quanto tempo sia trascorso dalle loro macchine a respingere questa spazzatura.

+0

Grazie, Chris, questo è utile. Conoscete eventuali soluzioni più direttamente integrate con ASP.NET e SQL Server? – BrianFinkel

+0

@BrianFinkel: Francamente non vuoi nulla "direttamente integrato". Un IDS/IPS funziona meglio se si tratta di un prodotto separato che sta monitorando la rete nel suo complesso. La nostra esperienza è stata che un sito sperimenterà un nuovo tentativo di hacking almeno una volta ogni 3 secondi. Questi tentativi possono essere qualsiasi cosa: sondare i siti Web per vulnerabilità, provare ad accedere a varie porte, inviare pacchetti per provare a "camminare" attraverso un firewall, inviare pacchetti ciechi nella speranza che un database, una mail o un altro tipo di server sia nel suo configurazione predefinita e risposta. – NotMe

+0

@ BrianFinkel: Il punto è che se stai guardando SOLO quei due pezzi, allora ti manca davvero un quadro molto grande. Ho visto persone entrare in una rete remota semplicemente perché erano in grado di rompere un web server incorporato in una stampante che era stata esposta. Com'è per l'ingegno? – NotMe