Featured image of post Killswitch per wg-quick e nftables

Killswitch per wg-quick e nftables

Abstract

Per garantire che non vi siano dei leak (fughe) di traffico verso l’esterno e che l’indirizzo ip reale venga rivelato nella sfortunata evenienza in cui il tunnel VPN WireGuard si interrompa accidentalmente, è possibile impostare il “kill switch”. Quest’ultimo non è altro che un meccanismo di sicurezza per disattivare immediatamente la connessione in caso di emergenza, ossia quando viene meno il tunnel WireGuard.

Dopo essere passato dall’utilizzare le iptables all’usufruire delle nftables, ho dovuto tradurre le regole nella configurazione del peer di wg-quick. Dato che non ho trovato in rete informazioni utili per eseguire questa operazione ho deciso di fornirvi la mia soluzione.

Configurazione

Per il corretto funzionamento, si presuppone che le nftables vengano ricaricate tramite l’init system.

Nel file di configurazione di wg-quick, aggiungiamo queste due righe.

1
2
PostUp = nft insert rule <family> <table> <chain> ip oifname != "%i" mark != $(wg show %i fwmark) fib daddr type != local counter reject
PostDown = systemctl restart <service>

Queste righe, ovviamente, vanno modificate in base al vostro sistema e al vostro firewall.

PostUp

In un terminale digitiamo il comando nft list ruleset, successivamente ricerchiamo l’istruzione type filter hook output.

Ora aggiustiamo la riga PostUp con le informazioni ritrovate, nel mio caso questa istruzione si trova nalla tabella firewalld facente parte della famiglia inet, nella chain filter_OUTPUT.

PostDown

Nella riga PostDown deve essere inserito il comando per ricaricare la configurazione in base all’init system del sistema utilizzato, io nel mio caso uso systemd.

Esempio

1
2
PostUp = nft insert rule ip inet firewalld filter_OUTPUT oifname != "%i" mark != $(wg show %i fwmark) fib daddr type != local counter reject
PostDown = systemctl restart firewalld.service
Realizzato con Hugo
Tema Stack realizzato da Jimmy