KKeine Bearbeitungszusammenfassung |
KKeine Bearbeitungszusammenfassung |
||
Zeile 4: | Zeile 4: | ||
{{var | display | {{var | display | ||
| | | WireGuard® | ||
| | | WireGuard® }} | ||
{{ | {{var | head | ||
| | | WireGuard® Konfiguration im Admin Interface | ||
| | | WireGuard® configuration in the admin interface }} | ||
{{ | {{var | neu--Funktion | ||
| Neue Funktion ab v12.2.2 | | Neue Funktion ab v12.2.2 | ||
| | | New feature as of v12.2.2 }} | ||
{{ | {{var | Allgemeines | ||
| Allgemeines | | Allgemeines | ||
| | | General }} | ||
{{ | {{var | 1=Allgemeines--desc | ||
| 2=Wireguard® ist ein modernes und einfaches VPN Protokoll, das zusätzlich durch seine Geschwindigkeit überzeugt. | | 2=Wireguard® ist ein modernes und einfaches VPN Protokoll, das zusätzlich durch seine Geschwindigkeit überzeugt. | ||
Wireguard verzichtet auf einige aufwendige Verfahren zum Schlüsselaustausch und ist unter Anderem dadurch einfacher zu handhaben als IPSec. | Wireguard verzichtet auf einige aufwendige Verfahren zum Schlüsselaustausch und ist unter Anderem dadurch einfacher zu handhaben als IPSec. | ||
Zeile 31: | Zeile 31: | ||
Das Handling zwischen den beiden Peers ist sehr an OpenSSH angelehnt. | Das Handling zwischen den beiden Peers ist sehr an OpenSSH angelehnt. | ||
"Peers" müssen | "Peers" müssen zunächst ihre PublicKeys austauschen und können dann im weiteren "einfach" Daten austauschen. | ||
Dabei zählt der Austausch der PublicKeys explizit nicht zur Spezifikation von WireGuard und muss manuell erfolgen. | Dabei zählt der Austausch der PublicKeys explizit nicht zur Spezifikation von WireGuard und muss manuell erfolgen. | ||
Zeile 37: | Zeile 37: | ||
Eine mehrfache Verwendung ist nicht praktikabel. | Eine mehrfache Verwendung ist nicht praktikabel. | ||
Zum | Zum besseren Schutz kann noch zusätzlich ein Preshared Key verwendet werden. | ||
Zum Start der Kommunikation muss ein Handshake zwischen den Peers erfolgen. | Zum Start der Kommunikation muss ein Handshake zwischen den Peers erfolgen. | ||
Zeile 43: | Zeile 43: | ||
Peer A sendet ein Paket und Peer B antwortet auf dieses Paket. | Peer A sendet ein Paket und Peer B antwortet auf dieses Paket. | ||
Damit ist der Handshake abgeschlossen und die Peers haben einen synchronen Key jeweils für das Senden und Empfangen. | Damit ist der Handshake abgeschlossen und die Peers haben einen synchronen Key jeweils für das Senden und Empfangen. | ||
Der Handshake wird alle 2 | Der Handshake wird alle 2 Minuten bei einer laufenden Verbindung ausgeführt. | ||
wg show zeigt den Status des Handshake (latest handshake) und Zeitpunkt mit an: | wg show zeigt den Status des Handshake (latest handshake) und Zeitpunkt mit an: | ||
Zeile 90: | Zeile 90: | ||
# Über den Header bestimmt WireGuard den zugehörigen Peer.<br>Wenn der Nachrichten Counter stimmt wird versucht das Daten-Paket zu entschlüsseln.<br>Ist das nicht möglich wird das Paket verworfen. | # Über den Header bestimmt WireGuard den zugehörigen Peer.<br>Wenn der Nachrichten Counter stimmt wird versucht das Daten-Paket zu entschlüsseln.<br>Ist das nicht möglich wird das Paket verworfen. | ||
# Stimmen die Daten wird die Quell-IP als neuer Endpunkt des Peers geprüft und gegebenenfalls gesetzt | # Stimmen die Daten wird die Quell-IP als neuer Endpunkt des Peers geprüft und gegebenenfalls gesetzt | ||
# Nachdem das Paket entschlüsselt wurde, wird geprüft ob das Paket ein IP-Paket ist. Ansonsten wird es verworfen.<br>Bei einem gültigen IP-Paket wird anschließend geprüft ob das IP-Paket auf die AllowsIPs passt.<br>Sollte es nicht der Fall sein, wird das Paket verworfen. | # Nachdem das Paket entschlüsselt wurde, wird geprüft, ob das Paket ein IP-Paket ist. Ansonsten wird es verworfen.<br>Bei einem gültigen IP-Paket wird anschließend geprüft ob das IP-Paket auf die AllowsIPs passt.<br>Sollte es nicht der Fall sein, wird das Paket verworfen. | ||
# Wird das Paket | # Wird das Paket zugelassen wird das Paket an das wg-Interface übergeben. Danach übernimmt das Routing im OS. | ||
Peer Roaming | Peer Roaming | ||
Zeile 101: | Zeile 100: | ||
NAT | NAT | ||
WireGuard kann einen Keepalive schicken. Dadurch werden Verbindungen auf NAT-Routern | WireGuard kann einen Keepalive schicken. Dadurch werden Verbindungen auf NAT-Routern offengehalten. Da die Kommunikation nur über einen UDP-Port läuft ist WireGuard gegenüber NAT-Problematiken entsprechend nicht anfällig. | ||
Sonstiges | Sonstiges | ||
Zeile 118: | Zeile 117: | ||
https://github.com/veorq/SipHash/ | https://github.com/veorq/SipHash/ | ||
https://eprint.iacr.org/2010/264 | https://eprint.iacr.org/2010/264 | ||
| 3=Wireguard® is a modern and simple VPN protocol that also impresses with its speed. | |||
Wireguard does without some complex procedures for key exchange and is, among other things, easier to handle than IPSec. | |||
Due to the integration into the Linux kernel, a high-performance and resource-saving processing is possible compared to OpenVPN. | |||
However, OpenVPN has advantages in terms of "pushing" settings (routes, DNS, etc.) in the administration of S2E/Roadwarrior connections. | |||
Wireguard can be used for S2S and S2E connections. | |||
For S2E connections, appropriate clients are available for various operating systems through the Wireguard project: | |||
https://www.wireguard.com/install/ | |||
Connection | |||
Communication takes place via a freely selectable UDP port and uses IPv4 and IPv6 to transport the data packets. | |||
The handling between the two peers is very similar to OpenSSH. | |||
"Peers" must first exchange their PublicKeys and can then "simply" exchange data. | |||
The exchange of PublicKeys is explicitly not part of the WireGuard specification and must be done manually. | |||
A PublicKey must identify a peer unambiguously. | |||
Multiple use is not practical. | |||
For better protection, a preshared key can also be used. | |||
A handshake between the peers is required to start communication. | |||
This is much shorter than with IPSec, for example. | |||
Peer A sends a packet and Peer B responds to this packet. | |||
This completes the handshake and the peers have a synchronous key for sending and receiving. | |||
The handshake is executed every 2 minutes with a running connection. | |||
wg show displays the status of the handshake (latest handshake) and time: | |||
1 root@a:~# wg show | |||
2 interface: wg0 | |||
3 public key: beN9ikzlz2l6QPCj7IDbkI+lVeaLXBepkmnrE3XhVDo= | |||
4 private key: (hidden) | |||
5 listening port: 51280 | |||
6 | |||
7 peer: yyBYvlMU3J7ZFOF/5pafNPLIw6cHBggbuXzq9Nq6+Aw= | |||
8 preshared key: (hidden) | |||
9 endpoint: 88.198.198.46:51820 | |||
10 allowed ips: 10.2.0.0/16 | |||
11 latest handshake: 49 seconds ago | |||
12 transfer: 4.80 MiB received, 154.58 KiB sent | |||
13 persistent keepalive: every 1 second | |||
If the handshake is not successful Wireguard will not send an error to the sender. | |||
"Silence is a Virtue" | |||
The encryption is fixed. | |||
The settings do not allow the cipher to be changed. | |||
This also has a disadvantage: If a method used is no longer considered secure, all peers must be updated "simultaneously". | |||
The interface between the WireGuard in the kernel and the OS is the wg interface (e.g.: wg0). | |||
The interface presents itself as a "normal" interface and can be configured via tools like iproute2. | |||
The interface is also listed in the network settings and offers a few relevant settings. | |||
Routing | |||
Packets that are to be routed via a Wireguard connection must be routed via the associated wg interface. Within the WireGuard instance, a peer is then identified via the definition of the AllowedIPs and the data is encrypted and send on its way. | |||
Conversely, incoming packets are decrypted with the appropriate key and are then checked for the AllowedIPs. IP addresses that are not acceptable are discarded. | |||
Thus, the use of 0.0.0.0/0 or ::/0 as AllowedIPs is permitted. | |||
Here, only one peer can be defined per interface / instance. | |||
Details: | |||
# Plaintext packet arrives from the system through a route at the wgX interfaec | |||
# Destination IP is checked and assigned to a peer in case of a match with an AllowedIP<br>If an assignment is not possible the packet is rejected using ICMP "no route to host" | |||
# The packet is encrypted with the key stored for the peer. | |||
# A header is placed in front of the actual packet. | |||
# Then the header + packet are sent via UDP to the last set IP address and the defined port of the peer. If the IP cannot be determined, the packet is discarded and a corresponding ICMP message is sent. | |||
# Packet arrives at the peer | |||
# WireGuard determines the associated peer via the header.<br>If the message counter is correct, an attempt is made to decrypt the data packet.<br>If this is not possible, the packet is discarded. | |||
# If the data is correct, the source IP is checked as the new endpoint of the peer and set if necessary. | |||
# After the packet has been decrypted, it is checked whether the packet is an IP packet. Otherwise it is discarded.<br>If the IP packet is valid, it is then checked whether the IP packet matches the AllowsIPs.<br>If it does not, the packet is discarded. | |||
# If the packet is allowed, the packet is passed to the wg interface. After that the routing in the OS takes over. | |||
Peer Roaming | |||
* The declaration of the IP/hostname of a peer is not mandatory | |||
* WireGuard automatically uses the outer IP of a correctly authenticated data packet | |||
* Initially, of course, one side must be known | |||
NAT | |||
WireGuard can send a keepalive. This keeps connections open on NAT routers. Since the communication only runs via a UDP port, WireGuard is not susceptible to NAT problems. | |||
Other | |||
Websites - more information | |||
https://www.wireguard.com/ | |||
https://www.wireguard.com/papers/wireguard.pdf | |||
https://wiki.archlinux.org/title/WireGuard | |||
http://www.noiseprotocol.org/noise.html#introduction | |||
http://cr.yp.to/ecdh.html | |||
http://cr.yp.to/chacha.html | |||
http://cr.yp.to/mac.html | |||
https://www.blake2.net/ | |||
https://github.com/veorq/SipHash/ | |||
https://eprint.iacr.org/2010/264 }} | |||
{{var | Übersicht--desc | {{var | Übersicht--desc | ||
| Wireguard® ist ein modernes und einfaches VPN Protokoll, das zusätzlich durch seine Geschwindigkeit überzeugt. | | Wireguard® ist ein modernes und einfaches VPN Protokoll, das zusätzlich durch seine Geschwindigkeit überzeugt. | ||
| }} | | Wireguard® is a modern and simple VPN protocol, which additionally convinces by its performance. }} | ||
{{var | Übersicht | {{var | Übersicht | ||
| Übersicht | | Übersicht | ||
| | | Overview }} | ||
{{var | Vorteile | {{var | Vorteile | ||
| Vorteile | | Vorteile | ||
| | | Advantages }} | ||
{{var | 1=Vorteile--desc | {{var | 1=Vorteile--desc | ||
| 2=<li class="list--element__bullet">Wireguard verzichtet auf einige aufwendige Verfahren zum Schlüsselaustausch und ist unter Anderem dadurch einfacher zu handhaben als IPSec</li> | | 2=<li class="list--element__bullet">Wireguard verzichtet auf einige aufwendige Verfahren zum Schlüsselaustausch und ist unter Anderem dadurch einfacher zu handhaben als IPSec</li> | ||
<li class="list--element__bullet">Durch die Integration in den Linux Kernel ist eine performante und Ressourcen schonendere Verarbeitung als bei OpenVPN möglich</li> | <li class="list--element__bullet">Durch die Integration in den Linux Kernel ist eine performante und Ressourcen schonendere Verarbeitung als bei OpenVPN möglich</li> | ||
| 3= }} | | 3=<li class="list--element__bullet">Wireguard does without some complex procedures for key exchange and is therefore easier to handle than IPSec.</li> | ||
<li class="list--element__bullet">Due to the integration into the Linux kernel, a high-performance and resource-saving processing is possible compared to OpenVPN.</li> }} | |||
{{var | Nachteile | {{var | Nachteile | ||
| Nachteile | | Nachteile | ||
| | | Disadvantages }} | ||
{{var | 1=Nachteile--desc | {{var | 1=Nachteile--desc | ||
| 2=<li class="list--element__bullet">Einstellungen wie Routen, DNS etc. lassen sich nicht wie bei OpenVPN "pushen" </li> | | 2=<li class="list--element__bullet">Einstellungen wie Routen, DNS etc. lassen sich nicht wie bei OpenVPN "pushen" </li> | ||
<li class="list--element__bullet">Die Verwaltung von | <li class="list--element__bullet">Die Verwaltung von Roadwarriors ist dadurch deutlich aufwändiger</li> | ||
| 3= }} | | 3=<li class="list--element__bullet">Settings like routes, DNS etc. cannot be "pushed" like with OpenVPN </li> | ||
<li class="list--element__bullet">This makes the management of Roadwarriors much more complex</li> }} | |||
{{var | Gut zu wissen | {{var | Gut zu wissen | ||
| Gut zu wissen | | Gut zu wissen | ||
| | | Good to know }} | ||
{{var | Gut zu wissen--desc | {{var | Gut zu wissen--desc | ||
| Auch die OpenVPN-Integration in der Securepoint UTM ist sehr performant.<br>Der Geschwindigkeitsnachteil von SSL-VPN-Verbindungen gegenüber WireGuard-Verbindungen fällt daher nicht so gravierend aus, wie dieses bei Mitbewerbern zu beobachten ist | | Auch die OpenVPN-Integration in der Securepoint UTM ist sehr performant.<br>Der Geschwindigkeitsnachteil von SSL-VPN-Verbindungen gegenüber WireGuard-Verbindungen fällt daher nicht so gravierend aus, wie dieses bei Mitbewerbern zu beobachten ist | ||
| | | The OpenVPN integration in the Securepoint UTM is also very performant.<br>The speed disadvantage of SSL-VPN connections compared to WireGuard connections is therefore not as serious as can be observed with competitors. }} | ||
{{var | Verbindung | {{var | Verbindung | ||
| Verbindung | | Verbindung | ||
| | | Connection }} | ||
{{var | Verbindung--desc | {{var | Verbindung--desc | ||
| Die Kommunikation erfolgt über einen frei wählbaren UDP Port und nutzt IPv4 und IPv6 zum Transport der Datenpakete. | | Die Kommunikation erfolgt über einen frei wählbaren UDP Port und nutzt IPv4 und IPv6 zum Transport der Datenpakete. | ||
Zeile 159: | Zeile 258: | ||
Ein PublicKey muss einen Peer eindeutig identifizieren.<br> | Ein PublicKey muss einen Peer eindeutig identifizieren.<br> | ||
Eine mehrfache Verwendung ist nicht praktikabel.<br> | Eine mehrfache Verwendung ist nicht praktikabel.<br> | ||
Zum | Zum besseren Schutz kann zusätzlich noch ein Preshared Key verwendet werden. | ||
| Communication takes place via a freely selectable UDP port and uses IPv4 and IPv6 to transport the data packets. | |||
| | <p>The handling between the two peers is very similar to OpenSSH.<br> | ||
"Peers" must first exchange their PublicKeys and can then "simply" exchange data further on.<br> | |||
The exchange of PublicKeys is explicitly not part of the WireGuard specification and must be performed manually.</p> | |||
A PublicKey must identify a peer unmistakably.<br> | |||
Multiple uses are not practical.<br> | |||
For better protection, a preshared key can also be used. }} | |||
{{var | NAT | {{var | NAT | ||
| NAT | | NAT | ||
| | | NAT }} | ||
{{var | NAT--desc | {{var | NAT--desc | ||
| WireGuard kann einen Keepalive schicken.<br>Dadurch werden Verbindungen auf NAT-Routern offen gehalten. <p>Da die Kommunikation nur über einen UDP-Port läuft ist WireGuard gegenüber NAT-Problematiken entsprechend nicht anfällig. </p> | | WireGuard kann einen Keepalive schicken.<br>Dadurch werden Verbindungen auf NAT-Routern offen gehalten. <p>Da die Kommunikation nur über einen UDP-Port läuft ist WireGuard gegenüber NAT-Problematiken entsprechend nicht anfällig. </p> | ||
| | | WireGuard can send a keepalive.<br>This keeps connections open on NAT routers. <p>Since the communication only runs via a UDP port, WireGuard is not susceptible to NAT related problems. </p> }} | ||
{{var | | {{var | Dashboard | ||
| | | Dashboard | ||
| | | Dashboard }} | ||
{{var | | {{var | Dashboard--desc | ||
| | | Das Dashboard zeigt den Verbindungsstatus der einzelnen Peers einer Verbindung sowie Name, Schlüssel und IP eines Benutzers / einer Benutzerin und die dazu gehörigen Benutzergruppen. | ||
| | | The dashboard shows the connection status of each peer of a connection as well as the name, key and IP of a user and the associated user groups. }} | ||
{{var | | {{var | Dashboard--Bild | ||
| | | UTM 12.4 VPN WireGuard Verbindung.png | ||
| | | UTM 12.4 VPN WireGuard Verbindung-en.png }} | ||
{{var | Dashboard--cap | |||
| WireGuard Dashboard | |||
| WireGuard Dashboard }} | |||
{{var | Dashboard--Einstellungen | |||
| Dashboard Einstellungen | |||
| Dashboard settings }} | |||
{{var | 1=Dashboard--Einstellungen--desc | |||
| 2=Für eine bessere Übersicht können ggf. einzelne Abschnitte in der Übersicht ausgeblendet werden: | |||
<li class="list--element__bullet list--element__hint">Peers</li> | |||
<li class="list--element__bullet list--element__hint">Benutzer</li> | |||
<li class="list--element__bullet">Benutzergruppen</li> | |||
| 3=For a better overview, individual sections can be hidden in the overview if necessary: | |||
<li class="list--element__bullet list--element__hint">Peers</li> | |||
<li class="list--element__bullet list--element__hint">User</li> | |||
<li class="list--element__bullet">User group</li> }} | |||
{{var | Dashboard--Einstellungen--Bild | |||
| UTM 12.4 VPN WireGuard Dashboard Einstellungen.png | |||
| UTM 12.4 VPN WireGuard Dashboard Einstellungen-en.png }} | |||
{{var | Dashboard--Einstellungen--cap | |||
| Dashboard Einstellungen | |||
| Dashboard settings }} | |||
{{var | Widget | |||
| Widget | |||
| Widget }} | |||
{{var | Widget--desc | |||
| Im Admininterface existiert ein Widget für die Übersicht der WireGuard-Verbindungen. Weitere Informationen sind im [[UTM/Widgets | Wiki-Artikel UTM Widget]] zu finden. | |||
| There is a widget in the admin interface for the overview of WireGuard connections. Further information can be found in the [{{#var:host}}UTM/Widgets Wiki article UTM Widget]. }} | |||
{{var | WireGuard-S2S-Link | |||
| [[UTM/VPN/WireGuard-S2S | WireGuard Site-to-Site]] | |||
| [{{#var:host}}UTM/VPN/WireGuard-S2S WireGuard Site-to-Site] }} | |||
{{var | WireGuard-Roadwarrior-Link | |||
| [[UTM/VPN/WireGuard-S2E | WireGuard Roadwarrior]] | |||
| [{{#var:host}}UTM/VPN/WireGuard-S2E WireGuard Roadwarrior] }} | |||
{{var | WireGuard-Peers-Link | |||
| [[UTM/VPN/WireGuard-Peer | Einzelne Peers hinzufügen]] | |||
| [{{#var:host}}UTM/VPN/WireGuard-Peer Add individual peers] }} | |||
---- | |||
{{var | | {{var | | ||
| | | | ||
| }} | | }} | ||
</div> | </div> |
UTM/VPN/WireGuard.lang: Unterschied zwischen den Versionen
Aus Securepoint Wiki