| [Ninux-Wireless] WireGuard: Next Generation Kernel Network Tunnel | Germano Massullo | 21/11/17 03:31 ص |
Wireguard è un tunnel di rete di nuova generazione, ancora in fase
di sviluppo, che mira a realizzare VPN:
- ad altissime prestazioni [1]; - con una forte perfect forward secrecy [2] verificata formalmente [6]; - con protocollo stateless [3] [4]; - molto "silenziose" [5]; - di facile realizzazione; (note a fine messaggio) Il codice sta per essere inserito nel kernel Linux (meno di 4000 righe di codice), per il momento è disponibile attraverso modulo DKMS. Voglio mostrarvi due esempi di realizzazione di una rete in quanto sebbene la documentazione sia ben scritta, ho passato molto tempo per capire come procedere (vedere esempio 2). Ringrazio Jason A. Donenfeld e Francesco Bonanno per i suggerimenti. ======== | Esempio 1 | ======== Descrizione: esempio con due host con IP pubblico che vogliono instaurare un tunnel Su ogni host, dopo aver installato Wireguard # mkdir /etc/wireguard # cd /etc/wireguard # umask 077 si genera la chiave privata # wg genkey > privatekey si genera la chiave pubblica # wg pubkey < privatekey > publickey si crea il file di configurazione vuoto # touch wg0.conf dopodiché ad esempio, sull'host A il file wg0.conf viene modificato come segue [Interface] Address = 10.1.0.1/24 # scegliete un IP per l'host all'interno della rete VPN PrivateKey = # la prendete dal file privatekey ListenPort = 51820 [Peer] # è l'altro host con il quale volete comunicare PublicKey = # è la chiave pubblica generata sull'altro host Endpoint = indirizzo ip pubblico:51820 # è l'IP attraverso il quale è raggiungibile l'altro host AllowedIPs = 10.1.0.2/32 # è l'IP che l'host dovrà avere all'interno della VPNreplicare la stessa cosa sull'altro host, con le dovute modifiche. Infine salvare i file, dopodiché # systemctl enable wg-q...@wg0.service # systemctl start wg-q...@wg0.service in tal maniera si crea automaticamente una interfaccia di rete "wg0" che ha le caratteristiche presenti nel file di configurazione. L'interfaccia è automaticamente collegata. ======== | Esempio 2 | ======== Descrizione: configurazione leggermente più complessa: - host A: dietro NAT, tipico computer casalingo; - host B: gateway/server centrale della VPN, ha una interfaccia di rete con IP pubblico ed un'altra con IP corrispondente alla sottorete 192.168.1.0/24 dove risiede anche l'host C; - host C: macchina virtuale che gira sull'host B si vuole che l'host A una volta collegato all'host B, possa comunicare anche con l'host C (e viceversa), e tutti gli altri eventuali host della VPN. Ecco i file di configurazione === Host A === # cat /etc/wireguard/wg0.conf [Interface] Address = 10.1.0.21/24 PrivateKey = *censurata* [Peer] PublicKey = *censurata* è la PublicKey dell'host B Endpoint = vpn.foo.xx:51820 # vpn.foo.xx è l'indirizzo pubblico dell'host B AllowedIPs = 10.1.0.0/24 === Host B (vpn.foo.xx) === # cat /etc/wireguard/wg0.conf [Interface] Address = 10.1.0.2/24 ListenPort = 51820 PrivateKey = *censurata* [Peer] PublicKey = *censurata* AllowedIPs = 10.1.0.21/32 [Peer] PublicKey = *censurata* AllowedIPs = 10.1.0.22/32 === Host C === # cat /etc/wireguard/wg0.conf [Interface] Address = 10.1.0.22/24 ListenPort = 51820 PrivateKey = *censurata* [Peer] PublicKey = *censurata* Endpoint = 192.168.1.1:51820 AllowedIPs = 10.1.0.0/24 Che cosa è cambiato? === Host A: === - non ha ListenPort in quanto in questo esempio si assume che per vari motivi non si abbia la possibilità di aprire porte sul NAT, quindi l'host A non è raggiungibile direttamente, ma deve instaurare lui la connessione. Pertanto ListenPort è inutile; - c'è un solo [Peer] i cui attributi sono quelli di host B. Basta un peer in quanto tutti gli altri host della VPN devono passare per forza tramite host B per raggiungere host A; - AllowedIPs indica che qualsiasi IP della sottorete 10.1.0.0/24 può comunicare con host A. === Host B: === i due peer hanno un IP con la dicitura /32 perché non devono poter cambiare IP a loro piacimento === Host C: === come host A, tuttavia ha il parametro ListenPort perché è nella stessa sottorete di host B, quindi conviene agevolare il più possibile le possibilità di comunicazione tra i due host. ======== | Note | ======== [1]: https://www.wireguard.com/performance/ [2]: 5 Protocol & Cryptography - https://www.wireguard.com/papers/wireguard.pdf [3]: https://www.wireguard.com/protocol/#connection-less-protocol [4]: 6 Timers & Stateless UX - https://www.wireguard.com/papers/wireguard.pdf [5]: 5.1 Silence is a Virtue - https://www.wireguard.com/papers/wireguard.pdf [6]: https://www.wireguard.com/papers/wireguard-formal-verification.pdf |
| Re: [Ninux-Wireless] WireGuard: Next Generation Kernel Network Tunnel | Germano Massullo | 21/11/17 09:57 ص | seconda parte dell'esempio 2, per chi ha una distro Linux basata su
Firewalld, come Fedora/RHEL/CentOS === Host B (gateway VPN) === quando viene creata l'interfaccia wg0, essa non essendo stata assegnata ad alcuna zona firewall, ricadrà nella zona di default, che blocca tutto tranne i pacchetti ICMP. Pertanto finché si tratta di effettuare dei ping sugli host (es. da A a C) tutto funziona, appena si prova ad utilizzare un servizio, non ci si riesce. Pertanto con # firewall-cmd --zone=trusted --add-interface=wg0 --permanent # firewall-cmd --reload si risolve il problema. Ora da host A si può eseguire correttamente $ ssh us...@10.1.0.22 che è il server SSH in esecuzione sull'host C _______________________________________________ Wireless mailing list Wire...@ml.ninux.org http://ml.ninux.org/mailman/listinfo/wireless |
| Re: [Ninux-Wireless] WireGuard: Next Generation Kernel Network Tunnel | Germano Massullo | 12/12/17 12:51 ص | |
| Re: [Ninux-Wireless] WireGuard: Next Generation Kernel Network Tunnel | Rugantio | 13/12/17 12:29 م | Il 2017-12-12 08:51 Germano Massullo ha scritto:Grazie del contributo! La sto provando su Debian (è in unstable) e sembra fare il suo dovere. In questi giorni la provo su arch e vi faccio sapere come va. Mi piacerebbe però saperne di più riguardo la sicurezza di wireguard, sai se qualcuno ha fatto un audit? |
| Re: [Ninux-Wireless] WireGuard: Next Generation Kernel Network Tunnel | Germano Massullo | 13/12/17 03:35 م | Il 13/12/2017 21:26, Rugantio ha scritto:Jason A. Donenfeld, il creatore di Wireguard ha detto: =========== WireGuard has undergone several intense code reviews, and of course it's been written by a guy who audits other people's codebases for a living, but it hasn't _yet_ been audited. And now is *not* the time to audit it either! It's still undergoing changes, so as to make any audit done now not very useful. I suspect after we post the first RFC to netdev, there will be a flurry of changes requested. After those are made, and the structure of the code base solidifies, we'll be in a good place to request audits. Fortunately being from the security industry myself, I know a few different companies who want to take a look at it. So hold tight -- they'll be comin'. =========== da https://xn--4db.cc/HtJY8GOU |
| Re: [Ninux-Wireless] WireGuard: Next Generation Kernel Network Tunnel | Germano Massullo | 10/01/18 03:57 ص | Il 12/12/2017 09:51, Germano Massullo ha scritto:Pull request approvata, ora WireGuard è disponibile in systemd-networkd https://lists.zx2c4.com/pipermail/wireguard/2018-January/002274.html |
| Re: [Ninux-Wireless] WireGuard: Next Generation Kernel Network Tunnel | Stefano De Carlo | 04/04/18 02:42 ص | Il 10/01/2018 12:57, Germano Massullo ha scritto:È interessante che Torvalds stesso spinge per avere Wireguard incluso in Linux: https://lkml.org/lkml/2018/2/13/752 Stefanauss. |
| Re: [Ninux-Wireless] WireGuard: Next Generation Kernel Network Tunnel | Germano Massullo | 04/04/18 05:48 ص | Il 4 aprile 2018 11:42, Stefano De Carlo <stefa...@gmail.com> ha scritto:Bene! Spero che si diffonda anche nella comunità BSD, così da poterlo avere in futuro anche in FreeNAS |
| Re: [Ninux-Wireless] WireGuard: Next Generation Kernel Network Tunnel | Germano Massullo | 02/07/18 01:27 م | Notizia simpatica:
US Senator Recommends Open-Source WireGuard To NIST For Government VPN https://www.phoronix.com/scan.php?page=news_item&px=WireGuard-Senator-Recommends |
| Re: [Ninux-Wireless] WireGuard: Next Generation Kernel Network Tunnel | Germano Massullo | 02/07/18 01:33 م | On 7/2/18 10:25 PM, Germano Massullo wrote:Circa il senatore: https://www.phoronix.com/forums/forum/phoronix/latest-phoronix-articles/1033766-us-senator-recommends-open-source-wireguard-to-nist-for-government-vpn?p=1033783#post1033783 |
| Re: [Ninux-Wireless] WireGuard: Next Generation Kernel Network Tunnel | Germano Massullo | 03/08/18 07:14 ص | [ Linus Torvalds Is Hoping WireGuard Will Be Merged Sooner Rather Than
Later ] Linus wrote: "Btw, on an unrelated issue: I see that Jason actually made the pull request to have wireguard included in the kernel. Can I just once again state my love for it and hope it gets merged soon? Maybe the code isn't perfect, but I've skimmed it, and compared to the horrors that are OpenVPN and IPSec, it's a work of art." https://www.phoronix.com/scan.php?page=news_item&px=Linus-Likes-WireGuard |