2024-06-24 18:48:13 +00:00
|
|
|
# Projektarbeit Modul 306 / 300
|
|
|
|
|
|
|
|
Gruppenarbeit à la Hermes
|
|
|
|
|
|
|
|
## RaspyDock
|
|
|
|
- [01 Projektinitialisierungsantrag](Hermes/01%20Projektinitialisierungsantrag.md)
|
|
|
|
- [02 Initialisierungs Studie](Hermes/02%20Initialisierungs%20Studie.md)
|
|
|
|
|
|
|
|
## Setup
|
|
|
|
### Wireguard
|
|
|
|
Wireguard ist eine VPN Lösung und wird in diesem Projekt verwendet, um den Raspberry Pi mit dem VPS zu verbinden.
|
|
|
|
Auf dem VPS und dem Server kann Wireguard mit `apt install wireguard` installiert werden.
|
|
|
|
|
|
|
|
#### Erstellung Keys
|
|
|
|
`wg genkey | tee privatekey | wg pubkey > publickey`
|
|
|
|
|
|
|
|
#### Config VPS
|
|
|
|
```yaml
|
|
|
|
# file: /etc/wireguard/wg0.conf
|
|
|
|
[Interface]
|
|
|
|
Address = 10.10.10.1/24
|
|
|
|
ListenPort = 51820
|
|
|
|
PrivateKey = PRIVATE_VPS_KEY
|
|
|
|
|
|
|
|
[Peer]
|
|
|
|
PublicKey = PUBLIC_SERVER_KEY
|
|
|
|
AllowedIPs = 10.10.10.10/32
|
|
|
|
```
|
|
|
|
|
|
|
|
#### Config Raspberry Pi
|
|
|
|
```yaml
|
|
|
|
# file: /etc/wireguard/wg0.conf
|
|
|
|
[Interface]
|
|
|
|
Address = 10.10.10.10/32
|
|
|
|
PrivateKey = PRIVATE_DMZ_KEY
|
|
|
|
DNS = 9.9.9.9, 149.112.112.112
|
|
|
|
|
|
|
|
[Peer]
|
|
|
|
PublicKey = PUBLIC_VPS_KEY
|
|
|
|
Endpoint = VPS_IP_ADDRESS:51820
|
|
|
|
AllowedIPs = 10.10.10.1/32
|
|
|
|
PersistentKeepalive = 25
|
|
|
|
```
|
|
|
|
|
|
|
|
#### Inbetriebnahme
|
|
|
|
Nach erstellen der Config Files müssen diese Befehle eingegeben werden
|
|
|
|
(Auf dem VPS und dem Raspberry Pi):
|
|
|
|
```bash
|
|
|
|
sudo systemctl enable wg-quick@wg0.service
|
|
|
|
sudo systemctl start wg-quick@wg0.service
|
|
|
|
```
|
|
|
|
|
|
|
|
Der Status kann mit dem Befehl `sudo systemctl status wg-quick@wg0.service` geprüft werden.
|
|
|
|
|
|
|
|
|
|
|
|
### VPN Heatlh Check
|
|
|
|
> [Health-Check.sh](Wireguard/health-check.sh)
|
|
|
|
> Abgespeichert unter `/script/wg-health-check.sh`
|
|
|
|
|
|
|
|
```sh
|
|
|
|
$> chmod +x /script/wg-health-check.sh
|
|
|
|
$> crontab -e
|
|
|
|
|
|
|
|
-> # m h dom mon dow command
|
|
|
|
-> 5 * * * * /script/wg-health-check.sh
|
|
|
|
```
|
|
|
|
|
|
|
|
Dieses Shell Script pingt den Wireguard Gateway 3 Mal hintereinander. Sollte der Ping fehlschlagen, wird der Service neu gestartet
|
|
|
|
|
|
|
|
### Hostname Ändern
|
|
|
|
hostnamectl hostname raspydock
|
|
|
|
|
|
|
|
### DNS Einträge
|
|
|
|
2 A-Records:
|
|
|
|
| Domain | IP |
|
|
|
|
| -------------- | -------------- |
|
|
|
|
| raspydock.ch | 85.215.132.141 |
|
|
|
|
| *.raspydock.ch | 85.215.132.141 |
|
|
|
|
|
|
|
|
### User vmadmin erstellen
|
|
|
|
```sh
|
|
|
|
#> useradd vmadmin
|
|
|
|
#> passwd vmadmin
|
|
|
|
New password: sml12345
|
|
|
|
Retype new password: sml12345
|
|
|
|
passwd: password updated successfully
|
|
|
|
#> usermod -aG sudo vmadmin
|
|
|
|
```
|
|
|
|
|
|
|
|
### Routing der Requests
|
|
|
|
#### VPS
|
|
|
|
##### Routing Konfigurieren
|
|
|
|
IP Forwarding Aktivieren:
|
|
|
|
```sh
|
|
|
|
$> sudo sysctl -w net.ipv4.ip_forward=1
|
|
|
|
```
|
|
|
|
|
|
|
|
Die NAT zwischen dem WireGuard Tunnel un dem Internet müssen Maskiert werden
|
|
|
|
```sh
|
|
|
|
# ens6 ist das LAN Interface mit der öffentlichen IP auf dem VPS
|
|
|
|
sudo iptables -t nat -A POSTROUTING -o ens6 -j MASQUERADE
|
|
|
|
```
|
|
|
|
|
|
|
|
##### IPTables Konfigurieren
|
|
|
|
```sh
|
|
|
|
# Traffic aus dem Wireguard Tunnel Zulassen
|
|
|
|
sudo iptables -A INPUT -i wg0 -j ACCEPT
|
|
|
|
|
|
|
|
# Verwandte oder bereits bestehende Verbindungen Zulassen
|
|
|
|
sudo iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
|
|
|
|
|
|
|
|
# Traffic von Wireguard zum Server Zulassen
|
|
|
|
sudo iptables -A FORWARD -i wg0 -o ens6 -d 10.10.10.10 -j ACCEPT
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2024-05-29 07:33:23 +00:00
|
|
|
|