Sono preoccupato per la superficie di attacco che lo stack di rete del kernel linux, inclusi i driver nic e il filtraggio dei pacchetti, offre a un utente malintenzionato remoto. Quindi sto pianificando di isolare la maggior parte del codice di rete (driver, filtraggio dei pacchetti, ecc.) In una macchina virtuale KVM (in pratica ciò che Qubes OS sta facendo, ma con kvm al posto del tipo 1 hypervisor xen
AFAIK, ci sono due modi per ottenere questo: o passare attraverso il dispositivo ethernet dell'host usando il passthrough PCI, che ha il vantaggio di poter usare l'hardware IOMMU della macchina per isolare il DMA, o usare un dispositivo ethernet collegato via USB e passare attraverso il dispositivo USB alla macchina virtuale. In entrambi i casi, è il kernel della macchina virtuale che esegue effettivamente il networking di basso livello. Userei il passthrough PCI della scheda madre della scheda madre, ma per diverse ragioni che risultano non essere un'opzione, quindi sto guardando il passthrough USB di un dongle ethernet-to-usb.
- Ho ragione nel presumere che con entrambi i metodi (PCI e passthrough USB), in realtà sto riducendo la superficie di attacco nel kernel host per quanto riguarda il networking? Nella mia mente, con questa soluzione, il kernel host passa semplicemente i dati alla macchina virtuale e nessuno del traffico di rete tocca alcuna parte del codice di rete del kernel host. È giusto?
- Ci sono problemi evidenti con il passaggio attraverso un dispositivo tramite USB che rende inutile / inutile l'isolamento della rete nella macchina virtuale? Non sono preoccupato per la sicurezza fisica della macchina, ad es. Non devo difendermi da qualcuno che collega un adattatore USB rogue che convincerebbe il controller USB 3 dell'host a fare qualsiasi cosa non dovrebbe fare. Il mio obiettivo principale è rendere gli exploit remoti più difficili.
- L'intero tentativo è una causa persa? Per esempio. sono preoccupato per i buchi in una parte collaudata del kernel, mentre aggiungo una superficie di attacco più grande al sistema usando la virtualizzazione? Sto effettivamente riducendo la sicurezza generale del sistema usando KVM?