Le reti bayesiane sono una forma di modello probabilistico, in cui un insieme di condizioni può essere usato per prevedere se un'asserzione è vera o falsa.
Ad esempio, supponiamo che ci siano due condizioni che stiamo usando per prevedere se un disco sta morendo.
- Le scritture su disco sono lente.
- Il traffico è anormalmente alto.
Potremmo formulare le probabilità in questo modo:
Slow Writes | High Traffic | Disk failing?
--------------+--------------+-- T --|-- F ---
F | F | 0.05 | 0.95
F | T | 0.01 | 0.99
T | F | 0.90 | 0.10
T | T | 0.45 | 0.55
Questo può essere interpretato come segue:
- Se le scritture non sono lente e il traffico non è elevato, c'è una probabilità di 0,95 che il disco non stia fallendo.
- Se le scritture non sono lente e il traffico non è elevato, c'è una probabilità di 0,99 che il disco non stia fallendo.
- Se le scritture sono lente e il traffico non è elevato, c'è una probabilità di 0.90 che il disco non sta funzionando.
- Se le scritture sono lente e il traffico è elevato, c'è una probabilità di 0,55 che il disco non stia fallendo.
Possiamo prendere questo tipo di modello e applicare l'autoapprendimento ad esso. Prendiamo un ampio set di dati in cui sono noti i risultati e usiamo questo per costruire un modello di probabilità.
Ad esempio, in una rete potremmo avere test come:
- > 10Mbps di traffico TCP proveniente da Internet?
- > 10Mbps di traffico UDP proveniente da Internet?
- > 5 accessi non riusciti a RDP negli ultimi 10 minuti?
- > 5 accessi non riusciti a SSH negli ultimi 10 minuti?
- Il numero di connessioni TCP a SQL server è > 5?
- Il numero di connessioni TCP al server HTTP è > 500?
- Il firewall ha registrato > 100 eventi nell'ultimo minuto?
- Il tempo è attualmente in ufficio (9-5) ore?
- ecc.
Eseguiamo questi test su un insieme di traffico noto sulla rete e informiamo il modello dei tempi in cui una violazione è stata o non è stata tentata. Può quindi verificare quali test erano più probabili correlare con un particolare tipo di evento target e creare un modello di probabilità come abbiamo fatto sopra.
Quando rileviamo ulteriori violazioni, diciamo al modello "questa è stata una violazione" e può tentare di migliorare il suo modello. Possiamo anche dirlo quando ci ha falsamente avvisato di una violazione.
Questi modelli possono diventare estremamente complessi quando si ha a che fare con un gran numero di domande e enormi set di dati, specialmente quando il modello contiene domande di test che sono alimentate da sotto-modelli o altre forme di analisi. In quanto tali, possono fornire un eccellente approccio di pattern matching per il rilevamento delle intrusioni.