Skip to content

Commit 8cbec9e

Browse files
Luis Herrfelbinger
authored andcommitted
removed cloudflare, restructured and created files (see changes in ToDo File
1 parent 85f8a7e commit 8cbec9e

16 files changed

Lines changed: 229 additions & 311 deletions

ToDo_reforming.md

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
#### Admin Guide
2+
- ...
3+
- [x] ~~monitoring~~ <-- Verschoben
4+
- [x] ~~backup~~
5+
- [ ] Theorie
6+
- [x] vergleich nginx / traefik
7+
- [ ] use cases
8+
- [ ] ipv6 pro service
9+
- [ ] layer 3 kontrolle über die services
10+
- [ ] warum ipv4 -> v6 proxy
11+
- [ ] virtualisierung und wenig ipv4 adressen
12+
- [ ] ipv6 only server
13+
- [x] Vergleich der Möglichkeiten -> Grafik anpassen (In das use case Kapitel)
14+
15+
16+
#### Installation
17+
- [ ] Basisinstallation
18+
- [x] Admin Gruppe
19+
- [x] Docker
20+
- [ ] backup
21+
- [ ] monitoring
22+
- [ ] nginx als Reverse Proxy
23+
- [ ] Aktuelle nginx ohne Proxy erklärung übernehmen und Anpassen (siehe unten)
24+
- [ ] usefull scripts
25+
- [ ] searchport
26+
- [ ] ipv6 gen script
27+
- [ ] traefik als Reverse Proxy
28+
- [ ] aktuelle Traefik ohne Proxy übernehmen??
29+
- [ ] IPv4 -> IPv6 Proxy
30+
- [ ] nginx file
31+
32+
- [x] Alles mit Cloudflare raus
33+
- [x] Basisinstallation -> Grafik anpassen (xml in jpg drinne)
34+
35+
- [ ] Backup:
36+
- [ ] Ordner mit SSL Zertifikaten speichern (/root/acme.sh oder /etc/ssl)
37+
- [ ] nginx ohne Proxy
38+
- [ ] Bilder
39+
- ![[Pasted image 20250805224551.png]]
40+
- ![[Pasted image 20250805224712.png]]
41+
- ![[Pasted image 20250805224846.png]]
42+
- [ ] Client IP Address Filtering -> Tipp: Ipv6 Subnet hinzufügen (wenn vorhanden)
43+
- [ ] IPv6
44+
- [ ] add del line beneath every ipv6
45+
- [ ] nginx service datei: erster Server Block löschen
46+
47+
48+
#### Nginx files:
49+
- [ ] http2 im listener testen ob benötigt wenn http2 = on
50+
- [ ] ipv6 redirect global file
51+
- [ ] überall OCSP stapling raus
52+
- [ ] hinzufügen ```
53+
- [ ] ssl_ecdh_curve X25519:prime256v1:secp384r1;
54+
- [ ] http2 on;
55+

docs/30_Theorie.md

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
# Theorie (Namen werden noch überarbeitet)
2+
3+
## Anwendungsbereiche für Teilempfehlungenen
4+
5+
### IPv6 Adresse für jeden Service einzeln
6+
- layer 3 Protokoll "Security" für jeden Service
7+
8+
### Wofür benötigt man einen IPv4 -> IPv6 Proxy?
9+
- Virtualisierungsumgebung und wenig IPv4 Adressen
10+
- IPv6 Only Server
11+
12+
13+
### IPv4-to-IPv6 Proxy
14+
15+
Dieser einfache IPv4-to-IPv6 Proxy unterstützt in seiner ersten Version lediglich HTTP Verbindungen auf Port 80 und TLS
16+
Verbindungen auf Port 443. Eine Anpassung dieser Konfiguration um einige anderen Protokolle (SMTPs, IMAPs, POP3s) welche
17+
TLS verwenden zu unterstützten ist denkbar.
18+
19+
Aus Gründen der Vollständigkeit hier einmal die nginx Konfiguration für den Proxy für Alpine Linux. Die Einrichtung ist
20+
denkbar einfach: nginx installieren, die untenstehende Konfiguration kopieren und den Proxy starten:
21+
22+
```nginx
23+
user nginx;
24+
worker_processes auto;
25+
26+
error_log /var/log/nginx/error.log notice;
27+
pid /var/run/nginx.pid;
28+
29+
30+
events {
31+
worker_connections 1024;
32+
}
33+
34+
http {
35+
include /etc/nginx/mime.types;
36+
default_type application/octet-stream;
37+
38+
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
39+
'$status $body_bytes_sent "$http_referer" '
40+
'"$http_user_agent" "$http_x_forwarded_for"';
41+
access_log /var/log/nginx/access.log main;
42+
43+
sendfile on;
44+
keepalive_timeout 65;
45+
46+
server {
47+
listen 80 default_server;
48+
location / {
49+
return 301 https://$host$request_uri;
50+
}
51+
}
52+
}
53+
54+
stream {
55+
# https://gist.github.com/kekru/c09dbab5e78bf76402966b13fa72b9d2#non-terminating-tls-pass-through
56+
server {
57+
listen 443;
58+
59+
proxy_connect_timeout 1s;
60+
proxy_timeout 3s;
61+
62+
resolver 1.1.1.1 1.0.0.1 [2606:4700:4700::1111] [2606:4700:4700::1001] ipv6=on ipv4=off;
63+
64+
proxy_pass $ssl_preread_server_name:443;
65+
ssl_preread on;
66+
}
67+
}
68+
```
69+
70+
### Vergleich der Proxy Möglichkeiten
71+
72+
![Schaubild](../img/schaubild_cloudflare-vs-transparent-proxy.png){: loading=lazy }
73+
74+
Aus meiner Sicht ergibt die Verwendung eines eigenen vorgeschaltenen Proxies nur Sinn, wenn mehr als ein
75+
Server administriert wird und die Web-Server über IPv6 Adressen exposiert bereitstellt werden.
76+
77+
Wird lediglich ein System betreut (wie z.B. der oben erwähnte Cloudserver), kann die zugewiesene IPv4
78+
Adresse natürlich ebenfalls auf den Ports 80 und 443 verwendet werden und dann auf den Reverse Proxy
79+
zeigen. Dadurch entfällt die Abhängigkeit zu anderen Systemen.
80+
81+
Sofern der Cloudserver über keine eigene IPv4 Adresse oder keine
82+
eigenen IPv6 Adressen verfügt, sollte ein Proxy vorgeschaltet werden,
83+
um den Nutzern, die keine IPv4/IPv6 Adresse verfügen den Zugriff zu
84+
ermöglichen.
85+
86+
Wird Cloudflare Proxy verwendet erkauft man sich neben der Erreichbarkeit
87+
diverse Vorteile (DDoS Protection,
88+
[Web Application Firewall](https://developers.cloudflare.com/waf/managed-rules/),
89+
[Page Rules](https://www.cloudflare.com/features-page-rules/)).
90+
91+
Jedoch sollte man einige Details beachten, bevor man sich auf Cloudflare festlegt.
92+
Der Datenverkehr der Nutzer liegt bei Cloudflare unverschlüsselt vor, da diese die
93+
TLS Pakete terminieren. In der kostenfreien Version von Cloudflare Proxy können
94+
des Weiteren keine gestackten Subdomains (`sub.sub.domain.de`) eingerichtet werden,
95+
da dafür kein TLS Zertifikat angefordert werden kann.
96+
97+
98+
99+
## Vergleich nginx / traefik

docs/30_backup.md

Lines changed: 0 additions & 20 deletions
This file was deleted.
-114 KB
Binary file not shown.
-148 KB
Binary file not shown.
-77.4 KB
Binary file not shown.
-83.1 KB
Binary file not shown.
Lines changed: 75 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,75 @@
1-
<mxfile host="Electron" modified="2023-02-10T23:10:18.002Z" agent="5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/20.6.2 Chrome/106.0.5249.199 Electron/21.3.3 Safari/537.36" version="20.6.2" etag="sFu-EArZlYoDhIFpad0w" type="device"><diagram id="njIiju-AVSU0POU4GLiy" name="Page-1">7Vpbb5swFP41kbaHVtxCyGOSppdpnaK1054dcIhVB2fGue3X7wCGxJisbVbCRCtVFT7YB/v7/Nk+x+nYo8X2hqPl/J4FmHYsI9h27KuOZbm9HvxPDLvM4Jh2Zgg5CTKTuTc8kN9YGg1pXZEAx0pFwRgVZKkafRZF2BeKDXHONmq1GaPqV5coxJrhwUdUt/4kgZhnVq9r7O23mITz/MumId8sUF5ZGuI5CtjmwGSPO/aIMyayp8V2hGmCXY5L1u76yNuiYxxH4iUNvuEv7uPdzdyhP8b99f1Tj/ZvL6SXNaIrOeCBLxiXPRa7HAbo/DJ5XC1oVsEerjEXBID6iqaYTlhMBGERVJkyIdjioMKAkjB5IdgSrHOxoFAw4ZGtBCURHhXUGWCUHYK2eHt0pGaBH8w7zBZY8B1UkQ0cifhOLW72/NnSND+gzpU2JGdMWPjdgwoPEtdXYGy9A4wto2GQbQ3kEWWrYEZhRB3LpfD94RQwd8PkacLZdqcRAJ+BZQUKw5wKP/EB5c2cCPywRH5i3MBCp4L8BngWAB6ftKZVAahXF6COBuiYhDjCXEdTcBTF2VCrXv//YJvdptF2NbR1wKJgkGxoKVIojomv4sLZKgpwoEgcB9ruVsIItlPEQyyek5aO5QFW3QqochvHFAmyVrtRhZ/8woQR6GBBlacyVSYgZivuY9nmcPMruTFLfvolPxkImp+Uy2LMp9Pb0+i9m6xBYdALYMqAgqvzDdyl675KM5IrvZ+pTd8CFiQIEh9DjmPyG01Tf8mUWCajS8fbHXa6V3+TkjxNycbF0UKZPsfn8VHdGZdWTxXem8yRC9NVvOZw5x7YbBbjWnj1mpJtU3K0LVVHvf6ld5oiHec5TzVrsl+lyZbI0HtfMsyDxfejw9J2VhwXX6tC7SR05o3R1APQbGdsgwpNo3qKtFaGeqT7IcOTNkPNUd0y1MPn9myG2bQ8vwytvqrD/tl0qMfuLddh+Vhqem92Lj27FLttlqLTiBQ9VYg5xGdQop7X+Y4B0BiDUebFyumyT48c4Rl5SrMD1/A/Ckm0/axNgL1CzbMkzcrCyFO5hzkzo0LiZf28Wc7M1LMqOZozlvK/R8v9tWL5i4s4vWUaQAVvuU3ByV/nHCQSgArwlwhh4Dh27hl6mjmXFcusAL5ChT4WnD3hEaNJRv8qYlEivhmhtGR6uXKruK5ar/+NblOl27M1uqsS/GZtbOu5ltZIqVhAm9OSng350FJtWrKchsVk6WF3++4k7QpVnffiV4+HW7Nk2VUXlGddsiw9ZtVQaleUU8o22N3+Zc9VnZwa5VT5qjnQsfQotbgUSyZ+e6Ie68gNas1Rj9NU/sHSQ9iPw0Rthwnbre0wAcX979Oy2bH/kZ89/gM=</diagram></mxfile>
1+
<mxfile host="Electron" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/26.1.1 Chrome/138.0.7204.157 Electron/37.2.4 Safari/537.36" version="26.1.1">
2+
<diagram id="njIiju-AVSU0POU4GLiy" name="Page-1">
3+
<mxGraphModel dx="1195" dy="696" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
4+
<root>
5+
<mxCell id="0" />
6+
<mxCell id="1" parent="0" />
7+
<mxCell id="NeJ6TIGh4lUE9vMk7l9H-2" value="Actor" style="shape=umlActor;verticalLabelPosition=bottom;verticalAlign=top;html=1;outlineConnect=0;" parent="1" vertex="1">
8+
<mxGeometry x="40" y="200" width="30" height="60" as="geometry" />
9+
</mxCell>
10+
<mxCell id="NeJ6TIGh4lUE9vMk7l9H-4" value="Eigener&lt;br&gt;transparenter&lt;br&gt;Proxy" style="ellipse;shape=cloud;whiteSpace=wrap;html=1;" parent="1" vertex="1">
11+
<mxGeometry x="200" y="150" width="120" height="80" as="geometry" />
12+
</mxCell>
13+
<mxCell id="NeJ6TIGh4lUE9vMk7l9H-10" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
14+
<mxGeometry width="50" height="50" relative="1" as="geometry">
15+
<mxPoint x="80" y="240" as="sourcePoint" />
16+
<mxPoint x="200" y="190" as="targetPoint" />
17+
</mxGeometry>
18+
</mxCell>
19+
<mxCell id="NeJ6TIGh4lUE9vMk7l9H-11" value="IPv4" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="NeJ6TIGh4lUE9vMk7l9H-10" vertex="1" connectable="0">
20+
<mxGeometry x="0.27" y="1" relative="1" as="geometry">
21+
<mxPoint x="-16" y="-7" as="offset" />
22+
</mxGeometry>
23+
</mxCell>
24+
<mxCell id="NeJ6TIGh4lUE9vMk7l9H-12" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
25+
<mxGeometry width="50" height="50" relative="1" as="geometry">
26+
<mxPoint x="80" y="240" as="sourcePoint" />
27+
<mxPoint x="440" y="240" as="targetPoint" />
28+
</mxGeometry>
29+
</mxCell>
30+
<mxCell id="NeJ6TIGh4lUE9vMk7l9H-13" value="IPv6" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="NeJ6TIGh4lUE9vMk7l9H-12" vertex="1" connectable="0">
31+
<mxGeometry x="0.27" y="1" relative="1" as="geometry">
32+
<mxPoint x="-129" y="-9" as="offset" />
33+
</mxGeometry>
34+
</mxCell>
35+
<mxCell id="NeJ6TIGh4lUE9vMk7l9H-14" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
36+
<mxGeometry width="50" height="50" relative="1" as="geometry">
37+
<mxPoint x="320" y="189.8" as="sourcePoint" />
38+
<mxPoint x="440" y="240" as="targetPoint" />
39+
</mxGeometry>
40+
</mxCell>
41+
<mxCell id="NeJ6TIGh4lUE9vMk7l9H-15" value="IPv6" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="NeJ6TIGh4lUE9vMk7l9H-14" vertex="1" connectable="0">
42+
<mxGeometry x="0.27" y="1" relative="1" as="geometry">
43+
<mxPoint x="-8" y="-15" as="offset" />
44+
</mxGeometry>
45+
</mxCell>
46+
<mxCell id="NeJ6TIGh4lUE9vMk7l9H-18" value="Reverse Proxy&lt;br&gt;(Traefik / nginx)" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
47+
<mxGeometry x="440" y="220" width="100" height="40" as="geometry" />
48+
</mxCell>
49+
<mxCell id="NeJ6TIGh4lUE9vMk7l9H-19" value="&lt;font style=&quot;font-size: 8px;&quot;&gt;[::]:443&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
50+
<mxGeometry x="410" y="243" width="30" height="10" as="geometry" />
51+
</mxCell>
52+
<mxCell id="NeJ6TIGh4lUE9vMk7l9H-21" value="Actor" style="shape=umlActor;verticalLabelPosition=bottom;verticalAlign=top;html=1;outlineConnect=0;" parent="1" vertex="1">
53+
<mxGeometry x="40" y="320" width="30" height="60" as="geometry" />
54+
</mxCell>
55+
<mxCell id="NeJ6TIGh4lUE9vMk7l9H-22" value="Reverse Proxy&lt;br&gt;(Traefik / nginx)" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
56+
<mxGeometry x="440" y="340" width="100" height="40" as="geometry" />
57+
</mxCell>
58+
<mxCell id="NeJ6TIGh4lUE9vMk7l9H-23" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
59+
<mxGeometry width="50" height="50" relative="1" as="geometry">
60+
<mxPoint x="80" y="359.76" as="sourcePoint" />
61+
<mxPoint x="440" y="359.76" as="targetPoint" />
62+
</mxGeometry>
63+
</mxCell>
64+
<mxCell id="NeJ6TIGh4lUE9vMk7l9H-24" value="IPv4 / IPv6" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="NeJ6TIGh4lUE9vMk7l9H-23" vertex="1" connectable="0">
65+
<mxGeometry x="0.27" y="1" relative="1" as="geometry">
66+
<mxPoint x="-49" y="-9" as="offset" />
67+
</mxGeometry>
68+
</mxCell>
69+
<mxCell id="NeJ6TIGh4lUE9vMk7l9H-25" value="&lt;font style=&quot;font-size: 8px;&quot;&gt;[::]:443&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
70+
<mxGeometry x="410" y="363" width="30" height="10" as="geometry" />
71+
</mxCell>
72+
</root>
73+
</mxGraphModel>
74+
</diagram>
75+
</mxfile>
-52.2 KB
Loading

docs/installation/05_base.md

Lines changed: 0 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -79,89 +79,6 @@ Webservers, sodass die Nutzer sich direkt mit diesem Verbinden können. Falls di
7979
verfügen, nutzen Sie den im IPv4 (DNS A-Record) hinterlegten IPv4-to-IPv6 Proxy, der die Anfragen dann über IPv6
8080
weiterleitet, OHNE die TLS Verbindung zu terminieren. Dies hat den Vorteil das keine TLS Zertifikate benötigt werden.
8181

82-
### IPv4-to-IPv6 Proxy
83-
84-
Dieser einfache IPv4-to-IPv6 Proxy unterstützt in seiner ersten Version lediglich HTTP Verbindungen auf Port 80 und TLS
85-
Verbindungen auf Port 443. Eine Anpassung dieser Konfiguration um einige anderen Protokolle (SMTPs, IMAPs, POP3s) welche
86-
TLS verwenden zu unterstützten ist denkbar.
87-
88-
Aus Gründen der Vollständigkeit hier einmal die nginx Konfiguration für den Proxy für Alpine Linux. Die Einrichtung ist
89-
denkbar einfach: nginx installieren, die untenstehende Konfiguration kopieren und den Proxy starten:
90-
91-
```nginx
92-
user nginx;
93-
worker_processes auto;
94-
95-
error_log /var/log/nginx/error.log notice;
96-
pid /var/run/nginx.pid;
97-
98-
99-
events {
100-
worker_connections 1024;
101-
}
102-
103-
http {
104-
include /etc/nginx/mime.types;
105-
default_type application/octet-stream;
106-
107-
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
108-
'$status $body_bytes_sent "$http_referer" '
109-
'"$http_user_agent" "$http_x_forwarded_for"';
110-
access_log /var/log/nginx/access.log main;
111-
112-
sendfile on;
113-
keepalive_timeout 65;
114-
115-
server {
116-
listen 80 default_server;
117-
location / {
118-
return 301 https://$host$request_uri;
119-
}
120-
}
121-
}
122-
123-
stream {
124-
# https://gist.github.com/kekru/c09dbab5e78bf76402966b13fa72b9d2#non-terminating-tls-pass-through
125-
server {
126-
listen 443;
127-
128-
proxy_connect_timeout 1s;
129-
proxy_timeout 3s;
130-
131-
resolver 1.1.1.1 1.0.0.1 [2606:4700:4700::1111] [2606:4700:4700::1001] ipv6=on ipv4=off;
132-
133-
proxy_pass $ssl_preread_server_name:443;
134-
ssl_preread on;
135-
}
136-
}
137-
```
138-
139-
### Vergleich der Möglichkeiten
140-
141-
![Schaubild](../img/schaubild_cloudflare-vs-transparent-proxy.png){: loading=lazy }
142-
143-
Aus meiner Sicht ergibt die Verwendung eines eigenen vorgeschaltenen Proxies nur Sinn, wenn mehr als ein
144-
Server administriert wird und die Web-Server über IPv6 Adressen exposiert bereitstellt werden.
145-
146-
Wird lediglich ein System betreut (wie z.B. der oben erwähnte Cloudserver), kann die zugewiesene IPv4
147-
Adresse natürlich ebenfalls auf den Ports 80 und 443 verwendet werden und dann auf den Reverse Proxy
148-
zeigen. Dadurch entfällt die Abhängigkeit zu anderen Systemen.
149-
150-
Sofern der Cloudserver über keine eigene IPv4 Adresse oder keine
151-
eigenen IPv6 Adressen verfügt, sollte ein Proxy vorgeschaltet werden,
152-
um den Nutzern, die keine IPv4/IPv6 Adresse verfügen den Zugriff zu
153-
ermöglichen.
154-
155-
Wird Cloudflare Proxy verwendet erkauft man sich neben der Erreichbarkeit
156-
diverse Vorteile (DDoS Protection,
157-
[Web Application Firewall](https://developers.cloudflare.com/waf/managed-rules/),
158-
[Page Rules](https://www.cloudflare.com/features-page-rules/)).
159-
160-
Jedoch sollte man einige Details beachten, bevor man sich auf Cloudflare festlegt.
161-
Der Datenverkehr der Nutzer liegt bei Cloudflare unverschlüsselt vor, da diese die
162-
TLS Pakete terminieren. In der kostenfreien Version von Cloudflare Proxy können
163-
des Weiteren keine gestackten Subdomains (`sub.sub.domain.de`) eingerichtet werden,
164-
da dafür kein TLS Zertifikat angefordert werden kann.
16582

16683
### Reverse Proxy
16784

0 commit comments

Comments
 (0)