
Alerting distribuito per le masse!
Securitybot è un'implementazione open-source di un chatbot per allarmi distribuiti, come descritto nell'articolo del blog di Ryan Huber. Gli allarmi distribuiti migliorano l'efficienza di monitoraggio del tuo team di sicurezza e possono aiutarti a rilevare incidenti di sicurezza più rapidamente ed efficientemente. Abbiamo cercato di rimuovere tutte le specificità Dropbox da questo codice in modo che la configurazione della tua istanza sia abbastanza semplice. Dovrebbe essere relativamente facile installare i requisiti elencati in un contenitore virtualenv/Docker e lasciare che il bot faccia il suo lavoro. Forniamo anche un semplice frontend per esplorare il database, ricevere chiamate API e creare allarmi personalizzati in modo che il bot contatti le persone come desiderato.
Questa guida illustra come configurare un'istanza di Securitybot il più rapidamente possibile, senza fronzoli.
La collegheremo a Slack, SQL e Duo.
Una volta terminato, avremo un file che assomiglia a main.py.
Avrai bisogno di un database chiamato securitybot su un server MySQL da qualche parte.
Abbiamo fornito una funzione chiamata init_sql situata in securitybot/sql.py che inizializzerà SQL.
Attualmente è configurata per utilizzare l'host localhost con utente root e nessuna password.
Dovrai modificarlo perché ovviamente non è così che è configurato il tuo database.
Avrai bisogno di un token per poter integrare con Slack.
La cosa migliore da fare è creare un bot user e usare quel token per Securitybot.
Dovrai anche impostare un canale in cui il bot riferirà quando gli utenti specificano di non aver eseguito un'azione.
Trova l'ID univoco per quel canale (sarà simile a C123456) e assicurati di invitare il bot user in quel canale, altrimenti non potrà inviare messaggi.
Per Duo, vorrai creare un'istanza di Auth API, darle un nome intelligente e tenere traccia della chiave di integrazione, della chiave segreta e dell'URI dell'endpoint dell'API Auth.
Dai un'occhiata al file main.py fornito nella directory principale per un esempio su come utilizzare tutto ciò.
Sostituisci tutte le variabili globali con quanto trovato sopra.
Se tutto quanto sopra è stato generato con successo, Securitybot dovrebbe essere operativo.
Per testarlo, invia un messaggio al bot user a cui è assegnato e dì hi.
Per testare il processo di gestione di un allarme, invia test per testare il bot.
Securitybot è stato progettato per essere il più modulare possibile. Ciò significa che è possibile scambiare facilmente sistemi di chat, provider 2FA e sorgenti dati degli allarmi. L'unico sistema strettamente integrato con il bot è SQL, ma aggiungere supporto per altri database non dovrebbe essere difficile. Avere un database rende gli allarmi persistenti e significa che il bot non perde (troppo) stato se si verifica un guasto temporaneo.
Il bot stesso esegue un piccolo insieme di funzioni:
La messaggistica, il 2FA e la gestione degli allarmi sono forniti da moduli configurabili e aggiunti al bot durante l'inizializzazione.
Il bot gestisce i messaggi in arrivo come comandi.
L'analisi e la gestione dei comandi avviene nella classe Securitybot e i comandi stessi sono forniti in due punti.
Le funzioni per i comandi sono definite in commands.py e la loro struttura è definita in commands.yaml nella directory config/.
Securitybot è progettato per essere compatibile con una vasta gamma di sistemi di messaggistica.
Attualmente forniamo binding per Slack, ma sentiti libero di contribuire con altri plugin, come per Gitter o Zulip, a monte.
La messaggistica è resa possibile da securitybot/chat/chat.py che fornisce un piccolo numero di funzioni per interrogare gli utenti in un gruppo di messaggistica, inviare messaggi a quegli utenti e inviare messaggi a un canale/room specifico.
Per aggiungere binding per un nuovo sistema di messaggistica, sottoclassa Chat.
Il supporto 2FA è fornito da auth/auth.py, che incapsula il 2FA asincrono in alcune funzioni che consentono di verificare la capacità 2FA, avviare una sessione 2FA e controllare lo stato della sessione 2FA.
Forniamo supporto per Duo Push tramite Duo Auth API, ma aggiungere supporto per un prodotto diverso o una soluzione 2FA interna è semplice come creare una sottoclasse di Auth.
La gestione dei compiti è fornita da tasker/tasker.py e dalla classe Tasker.
Poiché gli allarmi sono registrati in un database SQL, il Tasker fornito è SQLTasker.
Questo fornisce supporto per prelevare nuovi compiti e aggiornarli tramite singoli oggetti Task.
Le blacklist sono gestite dal database SQL, fornito in blacklist/blacklist.py e dalla sottoclasse blacklist/sql_blacklist.py.
L'oggetto User fornisce supporto per la gestione dello stato utente.
Teniamo traccia di qualsiasi informazione che un sistema di messaggistica ci fornisce, ma in realtà usiamo solo l'ID univoco e il nome utente di un utente per contattarlo.
Gli allarmi sono identificati in modo univoco da un hash SHA-256 che deriva da un hash dell'evento che li ha generati. Assumiamo che un hash SHA-256 sia sufficientemente casuale da non avere collisioni. Se incontri una collisione SHA-256, contatta qualcuno presso l'Università più vicina e goditi la fama e la fortuna che ti porterà.
Per favore, chiedici cose
I contributori devono attenersi al Dropbox Contributor License Agreement.
Copyright 2016 Dropbox, Inc.
Concesso in licenza secondo l'Apache License, Versione 2.0 (la "Licenza"); non puoi utilizzare questo file se non in conformità con la Licenza. Puoi ottenere una copia della Licenza all'indirizzo
http://www.apache.org/licenses/LICENSE-2.0
Salvo quanto diversamente stabilito dalla legge applicabile o concordato per iscritto, il software distribuito sotto la Licenza è distribuito "COSÌ COM'È", SENZA GARANZIE O CONDIZIONI DI ALCUN TIPO, espresse o implicite. Vedi la Licenza per il linguaggio specifico che regola i permessi e le limitazioni.