Recentemente ho implementato questa soluzione e l'ho testata usando 3 VM. L'hacker utilizza Kali, il server web utilizza Ubuntu 14.04 e l'honeypot utilizza effettivamente HoneyDrive 3. Ho dovuto cambiarlo un po '.
Quindiinpraticaciòchequestaarchitetturafaèricevereunpacchetto,ricontrollareleregoledelfirewall(iptables)eregistrarlo.FwsnortconverteleregoleSnortinregoleiptables,rendendoilfirewallunaspeciediIPS.Ilmonitordiregistro(psad)quindianalizzailregistro,identificagliIPdannosiebloccaquindi.Daquestomomentoinpoi,ognipacchettoinarrivodaquestiIPverràinoltratoaHoneypot.
Eccoleprincipaliregolechelofanno:
######forwarding######ipsetcreatebanned_netshash:iphashsize4096iptables-tnat-APREROUTING-ptcp-mset--dport8181-jDNAT--to-destination$HONEYPOT_ADDR:443--match-setbanned_netssrciptables-tnat-APOSTROUTING-ptcp-s$HONEYPOT_ADDR--dport443-jSNAT--to-source$SERVER_ADDR:8181iptables-tnat-APREROUTING-ptcp-mset-jDNAT--to-destination$HONEYPOT_ADDR--match-setbanned_netssrciptables-tnat-APREROUTING-pudp-mset-jDNAT--to-destination$HONEYPOT_ADDR--match-setbanned_netssrciptables-tnat-APOSTROUTING-ptcp-mset-jSNAT--to-source$SERVER_ADDR--match-setbanned_netssrciptables-tnat-APOSTROUTING-pudp-mset-jSNAT--to-source$SERVER_ADDR--match-setbanned_netssrcecho"[+] Activating IP forwarding"
echo 1 > /proc/sys/net/ipv4/ip_forward
Ho dovuto aggiornare la parte difficile dell'inoltro degli IP bloccati. Inizialmente, psad eliminerebbe solo i pacchetti in arrivo dagli indirizzi IP in blacklist. Questi IP sono elencati nel file di testo auto_blocked_iptables . Così ho scritto uno script per ottenere questi IP e inserirli in un ipset. Ho chiamato questo update_daemon con questo meccanismo di feedback il firewall è in grado di inoltrare i pacchetti controllandone l'origine con gli elementi ipset.
Ecco come l'ho fatto:
#!/bin/bash
#ipset banned_nets must already exist
AUTO_BLOCKED_IPTABLES_PATH=/var/log/psad/auto_blocked_iptables
update_set(){
ipset flush banned_nets
grep -E -o '^([0-9]{1,3}[\.]){3}[0-9]{1,3}' $AUTO_BLOCKED_IPTABLES_PATH | while read -r line ; do
echo "Processing $line"
ipset add banned_nets $line
done
}
while true #run indefinitely
do
inotifywait -e modify $AUTO_BLOCKED_IPTABLES_PATH | update_set
done
Il progetto buca è disponibile all'indirizzo 2 .
Quindi rispondendo alle mie domande:
-
Questa architettura sarà efficace?
Sì, inoltra gli hacker precedentemente identificati a un honeypot, quindi protegge il server.
-
Gli honeypot sono una buona idea?
Honeypots sembra essere un'idea interessante. Con un honeypot possiamo capire meglio l'attaccante, i suoi metodi, i principali obiettivi, gli exploit, le liste di parole e molto altro.
-
Se sì, dovrei eseguirli su una VM?
Secondo 3 , l'esecuzione di honeypot in macchine virtuali è una buona idea. Poiché gli honeypot dovrebbero essere a bassa interazione, non richiedono troppe risorse hardware. D'altra parte, il sistema diventa vulnerabile alle vulnerabilità del software honeypot e nella VM stessa.
-
Posso garantire QoS? O il mio server sarà sovraccaricato?
Non ho testato a sufficienza il sistema per QoS. Ancora mi sembra che il traffico inoltrato aumenterà il flusso di dati.
-
Che altro mi manca (su qualsiasi cosa sia collegato)?
L'inoltro non è così semplice come sembra che il server debba fungere da proxy trasparente e update_daemon era una parte difficile, dal momento che monitora dinamicamente un file.
Inoltre, la soluzione non mostra buoni risultati quando si soffre di attacchi DoS. In questo caso, l'opzione migliore sembra rimuovere l'honeypot e rilasciare l'attacker. Questa soluzione parziale è disponibile anche su GitHub.
Troverai ulteriori informazioni all'indirizzo 2 e 4