open:it:vpn
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
open:it:vpn [2024/08/15 15:03] – [Schlüssel generieren] Kai | open:it:vpn [2024/12/22 20:23] (aktuell) – [Schlüssel generieren] Kai | ||
---|---|---|---|
Zeile 17: | Zeile 17: | ||
<WRAP important> | <WRAP important> | ||
Für den Server und für jeden Client wird je ein privater und ein daran gebundener öffentlicher Schlüssel generiert. Für die Funktionalität dürfen sie weder vertauscht noch verändert werden. \\ | Für den Server und für jeden Client wird je ein privater und ein daran gebundener öffentlicher Schlüssel generiert. Für die Funktionalität dürfen sie weder vertauscht noch verändert werden. \\ | ||
- | Der private Schlüssel ist sicherheitsrelevant und sollte entsprechend behandelt werden. \\ | + | Der jeweils |
+ | Schlüssel bedeutet hier: eine lange Zeichenkette, | ||
</ | </ | ||
- | Die Schlüssel | + | Die Schlüsseldateien |
+ | Eine eindeutige Bezeichnung hilft die Schlüssel zu identifizieren, | ||
Eine Kopie der Schlüssel/ | Eine Kopie der Schlüssel/ | ||
- | Die Generierung erfolgt hier als root (ohne sudo)\\ | ||
**Server-Schlüssel - privat (key)** | **Server-Schlüssel - privat (key)** | ||
wg genkey | sudo tee / | wg genkey | sudo tee / | ||
Leserechte des privaten Server-Keys auf root begrenzen | Leserechte des privaten Server-Keys auf root begrenzen | ||
- | chmod 0400 / | + | |
**Server-Schlüssel öffentlich (pub) aus dem privaten Schlüssel generieren** | **Server-Schlüssel öffentlich (pub) aus dem privaten Schlüssel generieren** | ||
- | cat / | + | |
- | **Client-Schlüssel - privat (key)** | + | **Client-Schlüssel - privat (key)** |
- | mkdir -p / | + | Werden die Client-Schlüssel auf dem Server generiert, dann sollten diese in das Unterverzeichnis Clients gelegt werden. In diesem Fall muss der geheime private Schlüssel zum Client transferiert werden.\\ |
+ | Besser ist es daher, die Client-Schlüssel auf dem Client-System zu erstellen und nur den öffentlichen Schlüssel zum Server zu transferieren. \\ | ||
+ | | ||
- | wg genkey | tee / | + | |
**Client-Schlüssel öffentlich (pub) aus dem privaten Schlüssel generieren** | **Client-Schlüssel öffentlich (pub) aus dem privaten Schlüssel generieren** | ||
- | cat / | + | |
- | + | ||
- | Client1 kann beliebig benannt werden - z.B. mit dem Namen eines Users oder eines Laptops. Eine eindeutige Bezeichnung hilft die Schlüssel zu identifizieren, | + | |
**Zur Nutzung werden die Schlüssel wie folgt hinterlegt: | **Zur Nutzung werden die Schlüssel wie folgt hinterlegt: | ||
Zeile 49: | Zeile 50: | ||
* privater Key des Clients | * privater Key des Clients | ||
* öffentlicher Key des Servers | * öffentlicher Key des Servers | ||
- | |||
===== Server einrichten ===== | ===== Server einrichten ===== | ||
==== Server-Konfiguration erstellen ==== | ==== Server-Konfiguration erstellen ==== | ||
- | nano / | + | |
[Interface] | [Interface] | ||
Zeile 64: | Zeile 64: | ||
# Ensure any changes will be saved to the Wireguard config file | # Ensure any changes will be saved to the Wireguard config file | ||
SaveConfig = true | SaveConfig = true | ||
+ | PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE | ||
+ | PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE | ||
| | ||
[Peer] | [Peer] | ||
Zeile 76: | Zeile 78: | ||
AllowedIPs = 10.8.0.3/32 | AllowedIPs = 10.8.0.3/32 | ||
+ | Muss ein einzelner Peer gelöscht werden: | ||
- | ==== Tunnel, Port-Forwarding ==== | + | wg set < |
- | Um den gesamten Traffic über den Tunnel zu leiten (erforderlich für den aktiven Client für Internetdaten, | + | interfache z.B. wg0 \\ |
- | | + | ==== Tunnel, Port-Forwarding ==== |
+ | Um den gesamten Traffic über den Tunnel zu leiten (erforderlich für den aktiven Client für Internetdaten, | ||
+ | === Debian === | ||
+ | sudo nano / | ||
Einfügen in die Datei | Einfügen in die Datei | ||
# Port Forwarding for IPv4 | # Port Forwarding for IPv4 | ||
Zeile 88: | Zeile 94: | ||
Änderungen übernehmen | Änderungen übernehmen | ||
- | sysctl -p | + | |
- | + | === Ubuntu === | |
+ | Ist die Netzverwaltung auf dem Server mit Netplan realisiert, siehe: \\ | ||
+ | [[https:// | ||
+ | [[https:// | ||
+ | [[https:// | ||
==== Firewall ==== | ==== Firewall ==== | ||
siehe [[open: | siehe [[open: | ||
- | ufw allow OpenSSH | + | |
# Tunnelendpunkt erreichbar machen | # Tunnelendpunkt erreichbar machen | ||
Zeile 104: | Zeile 115: | ||
sudo ufw route allow out on wg0 | sudo ufw route allow out on wg0 | ||
- | ufw reload | + | |
==== Wireguard-Server starten ==== | ==== Wireguard-Server starten ==== | ||
- | systemctl start wg-quick@wg0.service | + | |
enable = in Zukunft automatisch mit dem System starten | enable = in Zukunft automatisch mit dem System starten | ||
- | systemctl enable wg-quick@wg0.service | + | |
- | systemctl status wg-quick@wg0.service | + | |
Schnittstelle wg0 überprüfen | Schnittstelle wg0 überprüfen | ||
Zeile 121: | Zeile 132: | ||
===== Linux Client einrichten ===== | ===== Linux Client einrichten ===== | ||
sudo apt install wireguard-tools | sudo apt install wireguard-tools | ||
+ | |||
+ | |||
+ | **Schlüssel generieren**\\ | ||
+ | siehe [[# | ||
**Konfigurationsdatei erstellen. **\\ | **Konfigurationsdatei erstellen. **\\ | ||
Diese Datei kann auch für den Import mit einem entsprechenden Client-Programm genutzt werden - Windows oder Linux. | Diese Datei kann auch für den Import mit einem entsprechenden Client-Programm genutzt werden - Windows oder Linux. | ||
+ | <WRAP important> | ||
+ | ACHTUNG: In dieser Datei ist der private Schlüssel enthalten, sie ist daher sicherheitsrelevant und sollte entsprechend behandelt werden. | ||
+ | </ | ||
sudo nano / | sudo nano / | ||
Zeile 144: | Zeile 162: | ||
PersistentKeepalive = 25 | PersistentKeepalive = 25 | ||
- | Unter DNS ist die IP-Adresse für den Internetzugang auf dem Server einzutragen. Da sämtliche Internetdaten durch den Tunnel geleitet werden, benötigt der Client die Route auf dem Server, wenn er parallel eine Internetverbindung nutzen möchte((Webseiten aufrufen, E-Mail abrufen, etc.)). | + | Unter DNS ist die IP-Adresse für den Internetzugang auf dem Server einzutragen. Da sämtliche Internetdaten durch den Tunnel geleitet werden, benötigt der Client die Route auf dem Server, wenn er parallel eine Internetverbindung nutzen möchte((Webseiten aufrufen, E-Mail abrufen, etc.)). |
+ | Ist die DNS-Adresse des Servers nicht bekannt, kann diese wie folgt abgerufen werden: | ||
+ | |||
+ | cat / | ||
==== Wireguard starten ==== | ==== Wireguard starten ==== | ||
Hier wird die Verwaltung über die Konsole beschrieben. Wird das Linux-System über eine GUI betrieben, ist es auch möglich, die o.a. client1.conf-Datei über die Netzwerk-Verwaltung zu importieren. | Hier wird die Verwaltung über die Konsole beschrieben. Wird das Linux-System über eine GUI betrieben, ist es auch möglich, die o.a. client1.conf-Datei über die Netzwerk-Verwaltung zu importieren. | ||
- | wg-quick up client1 | + | |
Evtl. installieren bei Fehlermeldung beim Start VPN | Evtl. installieren bei Fehlermeldung beim Start VPN | ||
Zeile 168: | Zeile 190: | ||
Wireguard beenden (Server und Client) | Wireguard beenden (Server und Client) | ||
- | wg-quick down client1 | + | |
===== Windows-Client einrichten ===== | ===== Windows-Client einrichten ===== |
open/it/vpn.1723727008.txt.gz · Zuletzt geändert: 2024/08/15 15:03 von Kai