Webproxy mit nginx für HTTP und X.509 Zertifikate: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| (11 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 6: | Zeile 6: | ||
gw: 10.88.2XX.1 | gw: 10.88.2XX.1 | ||
nameserver: 10.88.2XX.21 | nameserver: 10.88.2XX.21 | ||
| − | |||
== Einführung == | == Einführung == | ||
| Zeile 14: | Zeile 13: | ||
== Installation von Nginx == | == Installation von Nginx == | ||
| − | === RHEL/ | + | === RHEL/Rocky === |
Nginx-Repository hinzufügen und installieren: | Nginx-Repository hinzufügen und installieren: | ||
* sudo dnf install nginx | * sudo dnf install nginx | ||
| Zeile 20: | Zeile 19: | ||
* sudo systemctl start nginx | * sudo systemctl start nginx | ||
* sudo systemctl enable nginx | * sudo systemctl enable nginx | ||
| + | |||
| + | ==Firewall konfigurieren== | ||
| + | ;HTTPS (Port 443) freigeben | ||
| + | *firewall-cmd --permanent --add-service=https | ||
| + | ;HTTP (Port 80) freigeben – z. B. für Weiterleitungen | ||
| + | *firewall-cmd --permanent --add-service=http | ||
| + | ;Firewall neu laden | ||
| + | *firewall-cmd --reload | ||
| + | ;Aktive Regeln anzeigen | ||
| + | *firewall-cmd --list-all | ||
| + | == Eine Webseite vorab um zu testen ob unser System soweit geht== | ||
| + | *cat /etc/nginx/conf.d/revproxy.int.conf | ||
| + | <pre> | ||
| + | server { | ||
| + | listen 443 ssl; | ||
| + | listen [::]:443 ssl; | ||
| + | |||
| + | server_name revproxy.it213.int; | ||
| + | |||
| + | root /usr/share/nginx/html; | ||
| + | index index.html index.htm; | ||
| + | |||
| + | ssl_certificate /etc/ssl/own.crt; | ||
| + | ssl_certificate_key /etc/ssl/own.key; | ||
| + | |||
| + | location / { | ||
| + | try_files $uri $uri/ =404; | ||
| + | } | ||
| + | } | ||
| + | </pre> | ||
| + | ;Neu starten | ||
| + | *systemctl restart nginx | ||
== Grundlegende Proxy-Konfiguration == | == Grundlegende Proxy-Konfiguration == | ||
| Zeile 28: | Zeile 59: | ||
server { | server { | ||
listen 443 ssl; | listen 443 ssl; | ||
| − | server_name | + | server_name revproxy.it2XX.int; |
ssl_certificate /etc/ssl/own.crt; | ssl_certificate /etc/ssl/own.crt; | ||
| Zeile 41: | Zeile 72: | ||
} | } | ||
</pre> | </pre> | ||
| − | + | ;Nginx neu laden: | |
* sudo systemctl reload nginx | * sudo systemctl reload nginx | ||
| + | === Bei Problemen === | ||
| + | *ausearch -m avc -ts recent | ||
| + | <pre> | ||
| + | ---- | ||
| + | time->Thu Mar 26 15:50:59 2026 | ||
| + | type=PROCTITLE msg=audit(1774536659.561:435): proctitle=6E67696E783A20776F726B65722070726F63657373 | ||
| + | type=SYSCALL msg=audit(1774536659.561:435): arch=c000003e syscall=42 success=no exit=-13 a0=d a1=5578211d9fb8 a2=10 a3=7ffcb154f60c items=0 ppid=33457 pid=33458 auid=4294967295 uid=985 gid=984 euid=985 suid=985 fsuid=985 egid=984 sgid=984 fsgid=984 tty=(none) ses=4294967295 comm="nginx" exe="/usr/sbin/nginx" subj=system_u:system_r:httpd_t:s0 key=(null) | ||
| + | type=AVC msg=audit(1774536659.561:435): avc: denied { name_connect } for pid=33458 comm="nginx" dest=443 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:http_port_t:s0 tclass=tcp_socket permissive=0 | ||
| + | ---- | ||
| + | time->Thu Mar 26 15:55:25 2026 | ||
| + | type=PROCTITLE msg=audit(1774536925.290:444): proctitle=6E67696E783A20776F726B65722070726F63657373 | ||
| + | type=SYSCALL msg=audit(1774536925.290:444): arch=c000003e syscall=42 success=no exit=-13 a0=d a1=561646091fb8 a2=10 a3=7ffd50ff423c items=0 ppid=33528 pid=33529 auid=4294967295 uid=985 gid=984 euid=985 suid=985 fsuid=985 egid=984 sgid=984 fsgid=984 tty=(none) ses=4294967295 comm="nginx" exe="/usr/sbin/nginx" subj=system_u:system_r:httpd_t:s0 key=(null) | ||
| + | type=AVC msg=audit(1774536925.290:444): avc: denied { name_connect } for pid=33529 comm="nginx" dest=443 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:http_port_t:s0 tclass=tcp_socket permissive=0 | ||
| + | </pre> | ||
| + | ;nginx Netzwerk Zugriff freischalten | ||
| + | *setsebool -P httpd_can_network_connect 1 | ||
| + | |||
<!--- | <!--- | ||
| Zeile 82: | Zeile 130: | ||
* Setze Load Balancing zwischen mehreren Backend-Servern um. | * Setze Load Balancing zwischen mehreren Backend-Servern um. | ||
---> | ---> | ||
| + | |||
== Fazit == | == Fazit == | ||
* Nginx ist ein leistungsfähiger Webproxy für HTTP und HTTPS. | * Nginx ist ein leistungsfähiger Webproxy für HTTP und HTTPS. | ||
* TLS-Zertifikate bieten Sicherheit und Vertrauenswürdigkeit. | * TLS-Zertifikate bieten Sicherheit und Vertrauenswürdigkeit. | ||
* Load Balancing und Zugriffsbeschränkungen erhöhen die Skalierbarkeit und Sicherheit. | * Load Balancing und Zugriffsbeschränkungen erhöhen die Skalierbarkeit und Sicherheit. | ||
Aktuelle Version vom 27. März 2026, 07:35 Uhr
Webproxy mit Nginx für HTTP und X.509-Zertifikate
Rocky Template klonen
netz: DMZ name: revproxy.it2XX.int ip: 10.88.2XX.41 gw: 10.88.2XX.1 nameserver: 10.88.2XX.21
Einführung
- Nginx kann als Reverse Proxy für HTTP- und HTTPS-Dienste verwendet werden.
- X.509-Zertifikate ermöglichen die TLS-Verschlüsselung für sichere Verbindungen.
- Der Proxy kann Anfragen an interne Webserver weiterleiten und dabei SSL/TLS offloaden.
Installation von Nginx
RHEL/Rocky
Nginx-Repository hinzufügen und installieren:
- sudo dnf install nginx
Dienst starten und aktivieren:
- sudo systemctl start nginx
- sudo systemctl enable nginx
Firewall konfigurieren
- HTTPS (Port 443) freigeben
- firewall-cmd --permanent --add-service=https
- HTTP (Port 80) freigeben – z. B. für Weiterleitungen
- firewall-cmd --permanent --add-service=http
- Firewall neu laden
- firewall-cmd --reload
- Aktive Regeln anzeigen
- firewall-cmd --list-all
Eine Webseite vorab um zu testen ob unser System soweit geht
- cat /etc/nginx/conf.d/revproxy.int.conf
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name revproxy.it213.int;
root /usr/share/nginx/html;
index index.html index.htm;
ssl_certificate /etc/ssl/own.crt;
ssl_certificate_key /etc/ssl/own.key;
location / {
try_files $uri $uri/ =404;
}
}
- Neu starten
- systemctl restart nginx
Grundlegende Proxy-Konfiguration
TLS/SSL mit X.509-Zertifikaten
server {
listen 443 ssl;
server_name revproxy.it2XX.int;
ssl_certificate /etc/ssl/own.crt;
ssl_certificate_key /etc/ssl/own.key;
location / {
proxy_pass https://mail.it2XX.int;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
- Nginx neu laden
- sudo systemctl reload nginx
Bei Problemen
- ausearch -m avc -ts recent
----
time->Thu Mar 26 15:50:59 2026
type=PROCTITLE msg=audit(1774536659.561:435): proctitle=6E67696E783A20776F726B65722070726F63657373
type=SYSCALL msg=audit(1774536659.561:435): arch=c000003e syscall=42 success=no exit=-13 a0=d a1=5578211d9fb8 a2=10 a3=7ffcb154f60c items=0 ppid=33457 pid=33458 auid=4294967295 uid=985 gid=984 euid=985 suid=985 fsuid=985 egid=984 sgid=984 fsgid=984 tty=(none) ses=4294967295 comm="nginx" exe="/usr/sbin/nginx" subj=system_u:system_r:httpd_t:s0 key=(null)
type=AVC msg=audit(1774536659.561:435): avc: denied { name_connect } for pid=33458 comm="nginx" dest=443 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:http_port_t:s0 tclass=tcp_socket permissive=0
----
time->Thu Mar 26 15:55:25 2026
type=PROCTITLE msg=audit(1774536925.290:444): proctitle=6E67696E783A20776F726B65722070726F63657373
type=SYSCALL msg=audit(1774536925.290:444): arch=c000003e syscall=42 success=no exit=-13 a0=d a1=561646091fb8 a2=10 a3=7ffd50ff423c items=0 ppid=33528 pid=33529 auid=4294967295 uid=985 gid=984 euid=985 suid=985 fsuid=985 egid=984 sgid=984 fsgid=984 tty=(none) ses=4294967295 comm="nginx" exe="/usr/sbin/nginx" subj=system_u:system_r:httpd_t:s0 key=(null)
type=AVC msg=audit(1774536925.290:444): avc: denied { name_connect } for pid=33529 comm="nginx" dest=443 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:http_port_t:s0 tclass=tcp_socket permissive=0
- nginx Netzwerk Zugriff freischalten
- setsebool -P httpd_can_network_connect 1
Fazit
- Nginx ist ein leistungsfähiger Webproxy für HTTP und HTTPS.
- TLS-Zertifikate bieten Sicherheit und Vertrauenswürdigkeit.
- Load Balancing und Zugriffsbeschränkungen erhöhen die Skalierbarkeit und Sicherheit.