Nginx HTTPS Virtueller Host: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
(7 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
 +
=nginx: HTTPS-VirtualHost für braun.it113.int unter Rocky Linux=
  
=nginx: HTTPS-VirtualHost für braun.it113.int unter Rocky Linux=
+
==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
 +
==SELinux: Zugriff auf Webverzeichnisse freischalten==
 +
Standardmäßig sind manuell angelegte Verzeichnisse wie /var/www/braun durch SELinux blockiert.
 +
 
 +
Damit nginx darauf zugreifen darf, muss der richtige SELinux-Kontext gesetzt werden.
 +
;Zugriff erlauben
 +
*chcon -Rt httpd_sys_content_t /var/www/braun
 +
;nginx neu laden
 +
*systemctl reload nginx
 +
;Kontext prüfen
 +
*ls -Zd /var/www/braun
 +
==Fehleranalyse==
 +
;Letzte SELinux-Blockaden anzeigen
 +
*ausearch -m avc -ts recent
 +
===Exkurs===
 +
* SELinux (Security-Enhanced Linux) ist eine Sicherheitsfunktion im Linux-Kernel zur Zugriffskontrolle.
 +
* Es verwendet Sicherheitskontexte, um genau zu steuern, welche Prozesse auf welche Ressourcen zugreifen dürfen.
 +
* SELinux blockiert Zugriffe auch dann, wenn die Dateiberechtigungen eigentlich ausreichen würden.
 +
* Dadurch wird die Systemsicherheit erhöht und kompromittierte Dienste können isoliert werden.
 +
* Unter Rocky Linux ist SELinux standardmäßig aktiv und muss bei Webservern berücksichtigt werden.
 +
* Nach dem Setzen des SELinux-Kontexts httpd_sys_content_t erkennt SELinux das Verzeichnis als Webinhalt, und der Webserver darf darauf zugreifen.
 +
 
 +
==Konfigurationsdatei anlegen==
  
 
Die folgende Konfiguration wird als Datei gespeichert unter:
 
Die folgende Konfiguration wird als Datei gespeichert unter:
  
 
/etc/nginx/conf.d/braun.it113.int.conf
 
/etc/nginx/conf.d/braun.it113.int.conf
 
Der VirtualHost verwendet HTTPS und liefert seine Inhalte aus dem Verzeichnis /var/www/braun.
 
  
 
<pre>
 
<pre>
Zeile 27: Zeile 56:
 
</pre>
 
</pre>
  
=Vorbereitung der Seite=
+
==Verzeichnisstruktur vorbereiten==
  
 
;Verzeichnis für Inhalte anlegen
 
;Verzeichnis für Inhalte anlegen
 
*mkdir -p /var/www/braun
 
*mkdir -p /var/www/braun
  
;Script zum Erzeugen der Startseite herunterladen (außerhalb des DocumentRoot)
+
==Startseite erzeugen==
 +
 
 +
;Script herunterladen (außerhalb des DocumentRoot)
 
*cd /root
 
*cd /root
 
*wget https://xinux.de/downloads/html/webgen.sh
 
*wget https://xinux.de/downloads/html/webgen.sh
 
*chmod +x webgen.sh
 
*chmod +x webgen.sh
  
;Startseite erzeugen
+
;HTML-Seite erzeugen
 
*./webgen.sh braun > /var/www/braun/index.html
 
*./webgen.sh braun > /var/www/braun/index.html
  
=Vorbereitung der Seite=
+
==nginx neu starten==
  
'''Verzeichnis anlegen'''
+
;Konfiguration übernehmen
*mkdir -p /var/www/braun
+
*systemctl restart nginx
 
 
'''Script zum Erzeugen der index.html herunterladen'''
 
*cd /var/www/braun
 
*wget https://xinux.de/downloads/html/webgen.sh
 
*chmod +x webgen.sh
 
  
'''Seite erzeugen'''
+
;Status prüfen
*./webgen.sh
+
*systemctl status nginx

Aktuelle Version vom 26. März 2025, 17:00 Uhr

nginx: HTTPS-VirtualHost für braun.it113.int unter Rocky Linux

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

SELinux: Zugriff auf Webverzeichnisse freischalten

Standardmäßig sind manuell angelegte Verzeichnisse wie /var/www/braun durch SELinux blockiert.

Damit nginx darauf zugreifen darf, muss der richtige SELinux-Kontext gesetzt werden.

Zugriff erlauben
  • chcon -Rt httpd_sys_content_t /var/www/braun
nginx neu laden
  • systemctl reload nginx
Kontext prüfen
  • ls -Zd /var/www/braun

Fehleranalyse

Letzte SELinux-Blockaden anzeigen
  • ausearch -m avc -ts recent

Exkurs

  • SELinux (Security-Enhanced Linux) ist eine Sicherheitsfunktion im Linux-Kernel zur Zugriffskontrolle.
  • Es verwendet Sicherheitskontexte, um genau zu steuern, welche Prozesse auf welche Ressourcen zugreifen dürfen.
  • SELinux blockiert Zugriffe auch dann, wenn die Dateiberechtigungen eigentlich ausreichen würden.
  • Dadurch wird die Systemsicherheit erhöht und kompromittierte Dienste können isoliert werden.
  • Unter Rocky Linux ist SELinux standardmäßig aktiv und muss bei Webservern berücksichtigt werden.
  • Nach dem Setzen des SELinux-Kontexts httpd_sys_content_t erkennt SELinux das Verzeichnis als Webinhalt, und der Webserver darf darauf zugreifen.

Konfigurationsdatei anlegen

Die folgende Konfiguration wird als Datei gespeichert unter:

/etc/nginx/conf.d/braun.it113.int.conf

server {
    listen 443 ssl;
    listen [::]:443 ssl;

    server_name braun.it113.int;

    root /var/www/braun;
    index index.html index.htm;

    ssl_certificate /etc/nginx/ssl/braun.it113.int.crt;
    ssl_certificate_key /etc/nginx/ssl/braun.it113.int.key;

    location / {
        try_files $uri $uri/ =404;
    }
}

Verzeichnisstruktur vorbereiten

Verzeichnis für Inhalte anlegen
  • mkdir -p /var/www/braun

Startseite erzeugen

Script herunterladen (außerhalb des DocumentRoot)
HTML-Seite erzeugen
  • ./webgen.sh braun > /var/www/braun/index.html

nginx neu starten

Konfiguration übernehmen
  • systemctl restart nginx
Status prüfen
  • systemctl status nginx