Prima di scrivere il mio codice di monitoraggio dell'interfaccia di rete, proverei a utilizzare gli strumenti consolidati.
È probabile che se stai provando a proteggere un server, sarai comunque indifeso contro un DDoS sufficientemente grande (qualcuno più avanti nella catena di routing dovrà agire per gli attacchi con rotta nulla), quindi l'argomento principale a favore di scrivere il tuo codice C, rilevamento efficiente, non è molto strong).
(Il paragrafo precedente non si applica se stai cercando di rilevare un DDoS che scorre attraverso hardware specializzato, come grandi router - in tal caso, farai parte dello sforzo di fermare un DDoS prima che raggiunga il suo obiettivo, e l'efficienza sarebbe la vostra preoccupazione principale, ma sarei deluso se i router ad alta capacità non avessero già tali funzionalità integrate)
Oltre a tcpdump, puoi anche usare netstat (per avere un'idea veloce del numero di connessioni o connessioni in uno stato di zombie), iptables (entrambi per registrare i pacchetti e poi agire sul log e per eliminare immediatamente i pacchetti sospetti) e fail2ban (puoi configurarlo per contare, ad esempio, richieste HTTP GET o tentativi di connessione SSH ecc. e quindi bannare automaticamente gli IP in questione, e ovviamente anche produrre messaggi di log che possono essere acquisiti e usati da un ulteriore script di rilevamento DDoS notifica).
Un problema nel basare il codice di rilevamento per un DDoS sul server che è DDoSed è che se stai contando sul server per notificare l'attacco sulla rete, potresti rimanere deluso perché il server potrebbe non avere la CPU risorse o la banda disponibile per inviare una notifica più. Pertanto, è necessario disporre di un mezzo di comunicazione secondario, ad esempio un modem GSM su cui inviare una notifica (e supponendo che il server disponga ancora delle risorse della CPU disponibili per l'esecuzione del codice di notifica).
C'è un altro, molto facile e molto più promettente modo di creare un monitor DDoS: configura un piccolo script su un altro server che tenta periodicamente di connettersi al tuo server. Se non riesce a connettersi, è possibile presumere che il server sia inattivo, che la rete tra il server e il monitor non sia attiva o che sia in corso un DDoS. Andando su questa strada, non è nemmeno necessario scrivere alcun software; basta iscriversi a un servizio online che controlla i tempi di inattività del servizio. Ce ne sono molti disponibili, alcuni anche gratis.