Skip to content

Commit e8e2a3b

Browse files
Luis Herrfelbinger
authored andcommitted
refactoring
We again decided to restrure the whole guide...
1 parent 44f1235 commit e8e2a3b

74 files changed

Lines changed: 881 additions & 1021 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

README.md

Lines changed: 1 addition & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,2 @@
11
# Admin Guide
2-
You can find this repository here: [https://adminguide.pages.dev](https://adminguide.pages.dev).
3-
4-
## Contribute
5-
Feel free to open issues / pull requests. Please validate that your changes work as intented!
6-
You can start the mkdocs development server by running `mkdocs serve`.
7-
8-
Contribution Guidelines:
9-
* Web Services are exposed to `[::1]:8000`
10-
* Secret Environment Variables are in an env_file (and not in the `docker-compose.yml` itself, to prevent leaks) with the following format:
11-
```shell
12-
# .servicename.env
13-
KEY=value
14-
```
15-
* environment variables should be in form of a YAML array, not an object:
16-
```yaml
17-
environment:
18-
- "KEY=value"
19-
```
20-
instead of
21-
```yaml
22-
# WRONG - please don't do this
23-
environemnt:
24-
KEY: value
25-
# WRONG
26-
```
27-
* If possible the service should use either mariadb or postgresql.
28-
If it makes sense, other databases (e.g. sqlite) are also quiet fine.
29-
* YAML arrays should be quoted, regardless which data is stored:
30-
```yaml
31-
volumes:
32-
- "/srv/service_name/data:/data"
33-
ports:
34-
- "[::1]:8000:1234"
35-
networks:
36-
- "default"
37-
- "database"
38-
```
39-
* All domain examples should end in `domain.de`
2+
You can find the rendered guide on [adminguide.pages.dev](https://adminguide.pages.dev).

ToDo_reforming.md

Lines changed: 0 additions & 55 deletions
This file was deleted.

docs/10_overview.md

Lines changed: 0 additions & 63 deletions
This file was deleted.

docs/30_Theorie.md

Lines changed: 0 additions & 99 deletions
This file was deleted.
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# 1. Wahl des Reverse Proxies
2+
Im Rahmen dieses Guides werden [nginx](https://www.nginx.com/) auf dem Host sowie
3+
[Traefik](https://traefik.io/) als Container vorgestellt.
4+
5+
Nginx ist ein leistungsstarker und weit verbreiteter Webserver und Reverse Proxy, welcher sich
6+
durch hohe Stabilität, Effizienz und Flexibilität in klassischen Serverumgebungen auszeichnet.
7+
8+
Traefik hingegen ist speziell auf containerisierte Umgebungen ausgelegt und integriert sich
9+
nahtlos mit Plattformen wie Docker oder Kubernetes. Es erkennt neue Services automatisch und
10+
konfiguriert Routing-Regeln dynamisch, was es besonders für moderne, dynamische Deployments
11+
attraktiv macht.

docs/A._Theorie/20_tls.md

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
# 2. TLS
2+
Für die verschlüsselte Kommunikation zwischen Nutzer und Webserver sind TLS-Zertifikate
3+
erforderlich.
4+
5+
In den Standard-Einstellungen von Betriebssystemen und Browsern ist bereits eine Auswahl
6+
vertrauenswürdiger Zertifizierungsstellen (CAs) hinterlegt. Nur Zertifikate, die von einer
7+
dieser anerkannten Stellen ausgestellt oder signiert wurden, werden vom Browser automatisch
8+
als sicher bzw. vertrauenswürdig eingestuft. Diese sogenannte "Trusted Root Certificate Authority
9+
List" wird von den jeweiligen Herstellern (z. B. Microsoft, Apple, Mozilla, Google) gepflegt und
10+
regelmäßig aktualisiert.
11+
12+
Es gibt grundsätzlich drei Möglichkeiten, TLS-Zertifikate zu beziehen bzw. auszustellen:
13+
14+
1. **Kommerzielle Anbieter**
15+
16+
Zertifikate können kostenpflichtig von anerkannten Zertifizierungsstellen wie DigiCert,
17+
GlobalSign oder GoDaddy erworben werden. Sie werden häufig von Unternehmen genutzt, um
18+
zusätzliche Garantieleistungen, erweiterte Validierungen (OV/EV) oder Supportleistungen
19+
zu erhalten.
20+
21+
2. **Kostenlose Zertifikate**
22+
23+
Let’s Encrypt wurde 2015 von der gemeinnützigen Organisation Internet Security Research Group (ISRG)
24+
gegründet. Ziel war es, das Web durch die Bereitstellung kostenloser, automatisierter und offener
25+
Zertifikate sicherer zu machen und so verschlüsselte Verbindungen (HTTPS) zum Standard im Internet
26+
zu etablieren.
27+
28+
Neben Let’s Encrypt existieren weitere Anbieter, die ähnliche kostenlose Zertifizierungsdienste anbieten,
29+
wie beispielsweise ZeroSSL und [Actalis](https://www.actalis.com/). Alle Anbieter unterstützen das
30+
ACME-Protokoll (Automatic Certificate Management Environment), über das die Ausstellung und Verlängerung
31+
von Zertifikaten automatisiert erfolgen kann.
32+
33+
Diese kostenlosen Zertifikate sind von den gängigen Browsern als vertrauenswürdig anerkannt und eignen sich
34+
hervorragend für öffentliche Websites, Webanwendungen und APIs. Im Vergleich zu kommerziellen Angeboten bieten
35+
sie zwar keine zusätzlichen Garantieleistungen oder erweiterte Validierung (z. B. EV-Zertifikate), erfüllen
36+
aber in technischer Hinsicht die gleichen Sicherheitsstandards.
37+
38+
3. **Eigene Zertifizierungsstelle (CA)**
39+
40+
Neben öffentlichen und kommerziellen Anbietern besteht auch die Möglichkeit, eine eigene Zertifizierungsstelle
41+
(Certificate Authority, CA) zu betreiben. Damit können eigene Zertifikate ausgestellt werden – beispielsweise
42+
für interne Server, Entwicklungsumgebungen oder Testsysteme.
43+
44+
Diese Variante ist kostenlos, erfordert jedoch mehr administrativen Aufwand. Damit Browser und Betriebssysteme
45+
den ausgestellten Zertifikaten vertrauen, muss das Root-Zertifikat der eigenen CA manuell auf allen beteiligten
46+
Geräten installiert werden. In kontrollierten Umgebungen (z. B. Firmennetzwerke oder geschlossene Systeme) kann
47+
dies automatisiert über zentrale Verwaltungswerkzeuge erfolgen.
48+
49+
Für den produktiven Einsatz im öffentlichen Internet ist diese Lösung jedoch nicht geeignet, da externe Nutzer
50+
das Root-Zertifikat nicht installiert haben und der Browser die Verbindung daher als nicht vertrauenswürdig
51+
einstufen würde.
52+
53+
!!! warning
54+
Von der Verwendung selbstsignierter Zertifikate und dem Ignorieren von Browserwarnungen ist dringend abzuraten.
55+
56+
Wer sich daran gewöhnt, Sicherheitsmeldungen einfach „wegzuklicken“, entwickelt schnell ein riskantes Verhalten.
57+
58+
Im Rahmen dieses Guides wird auf kostenlose TLS-Zertifikate des Anbieters Let’s Encrypt gesetzt.
59+
60+
Für die Verwaltung dieser stehen verschiedene Tools und Clients zur Verfügung. Wird nginx als Reverse Proxy
61+
eingesetzt, bietet sich die Verwendung von [acme.sh](https://github.com/acmesh-official/acme.sh), ein schlanker,
62+
in Shell geschriebener ACME-Client, der sich einfach in bestehende Umgebungen integrieren lässt, an.
63+
Traefik hingegen verwendet für diesen Zweck standardmäßig den in Go entwickelten ACME-Client [Lego](https://go-acme.github.io/lego/).
64+
65+
Unabhängig von der gewählten Implementierung stehen bei Let’s Encrypt verschiedene [ACME-Challenge-Typen](https://letsencrypt.org/docs/challenge-types/)
66+
zur Verfügung, über die die Domainvalidierung erfolgt.
67+
68+
Während die Challenge-Typen HTTP-01 und TLS-ALPN-01 voraussetzen, dass der Reverse Proxy aus dem Internet
69+
erreichbar ist, bietet die DNS-01-Challenge die Möglichkeit, die Domainvalidierung über einen TXT-Eintrag
70+
im DNS durchzuführen. Dadurch muss der Webserver nicht öffentlich zugänglich sein, und die ausgestellten
71+
Zertifikate können somit auch in internen Umgebungen verwendet werden.
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# 3. Eine IPv6 Adresse pro Service
2+
3+
!!! note
4+
Die meisten Hosting-Provider weisen jedem Server ein /64-IPv6-Präfix zu,
5+
was einem Adressraum von $2^{64}$ Adressen entspricht – eine Zahl, die in
6+
der Praxis quasi unerschöpflich ist.
7+
8+
Ausnahmen gibt es beispielsweise bei Strato: Dort wird nicht ein ganzes /64-IPv6-Präfix,
9+
sondern lediglich eine einzelne IPv6-Adresse pro Server zugewiesen. Dadurch ist es nicht
10+
möglich, jedem Dienst eine eigene IPv6-Adresse zu geben
11+
([siehe YouTube Short](https://www.youtube.com/shorts/oSvU4HXZ_Wc)).
12+
13+
Wird jedem nginx Reverse Proxy eine eigene IPv6-Adresse zugewiesen, kann bereits auf OSI-Layer 3
14+
nachvollzogen werden, an welchen Webservice eine Anfrage gerichtet war. Würde hingegen für alle
15+
Dienste nur eine gemeinsame Adresse verwendet, wäre eine eindeutige Zuordnung frühestens auf
16+
Layer 5 (durch Auswertung des TLS SNI Headers) möglich; ohne ein spezielles Analysewerkzeug sogar
17+
erst auf Layer 7, etwa über die Logdaten des Webservers.
18+
19+
Der Webserver nginx bietet mit der Direktive `listen` die Möglichkeit, virtuelle Hosts an spezifische
20+
IPv4- oder IPv6-Adressen zu binden. Diese Technik erlaubt eine frühzeitige Trennung und Zuordnung des
21+
eingehenden Traffics zu den einzelnen Anwendungen. Soll ein Dienst abgeschaltet oder vorübergehend
22+
blockiert werden, kann dessen zugewiesene Adresse zudem sehr einfach über die Firewall – oder sogar
23+
direkt beim Provider – gesperrt werden, ohne dass Änderungen an der Servicekonfiguration selbst
24+
erforderlich sind.

0 commit comments

Comments
 (0)