Gehärtete Distribution Rocky: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Zeile 30: Zeile 30:
 
=Installation von Nginx=
 
=Installation von Nginx=
 
*sudo dnf install nginx
 
*sudo dnf install nginx
 +
=nginx: HTTPS-VirtualHost für rocky.it1xx.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/rocky
 +
;nginx neu laden
 +
*systemctl reload nginx
 +
;Kontext prüfen
 +
*ls -Zd /var/www/rocky
 +
==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/rocky.it113.int.conf
 +
 +
<pre>
 +
server {
 +
    listen 443 ssl;
 +
    listen [::]:443 ssl;
 +
 +
    server_name rocky.it1xx.int;
 +
 +
    root /var/www/rocky;
 +
    index index.html index.htm;
 +
 +
    ssl_certificate /etc/nginx/ssl/rocky.it1xx.int.crt;
 +
    ssl_certificate_key /etc/nginx/ssl/rocky.it1xx.int.key;
 +
 +
    location / {
 +
        try_files $uri $uri/ =404;
 +
    }
 +
}
 +
</pre>
 +
 +
==Verzeichnisstruktur vorbereiten==
 +
 +
;Verzeichnis für Inhalte anlegen
 +
*mkdir -p /var/www/rocky
 +
 +
==Startseite erzeugen==
 +
 +
;Script herunterladen (außerhalb des DocumentRoot)
 +
*cd /root
 +
*wget https://xinux.de/downloads/html/webgen.sh
 +
*chmod +x webgen.sh
 +
 +
;HTML-Seite erzeugen
 +
*./webgen.sh rocky > /var/www/rocky/index.html
 +
 +
==nginx neu starten==
 +
 +
;Konfiguration übernehmen
 +
*systemctl restart nginx
 +
 +
;Status prüfen
 +
*systemctl status nginx

Version vom 14. April 2025, 04:57 Uhr

Installation

Einstellung Wert
Name rocky.it1xx.int
IP-Adresse 10.88.1xx.51/24
Gateway 10.88.1xx.1
Nameserver 10.88.1xx.1
Search-Domain it1xx.int
Festplatte 20 GByte
RAM 4 GByte
Benutzername kit
Benutzerpasswort kit
Administrator root
Administratorpasswort radler
Netz DMZ

Installation von Nginx

  • sudo dnf install nginx

nginx: HTTPS-VirtualHost für rocky.it1xx.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/rocky
nginx neu laden
  • systemctl reload nginx
Kontext prüfen
  • ls -Zd /var/www/rocky

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/rocky.it113.int.conf

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

    server_name rocky.it1xx.int;

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

    ssl_certificate /etc/nginx/ssl/rocky.it1xx.int.crt;
    ssl_certificate_key /etc/nginx/ssl/rocky.it1xx.int.key;

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

Verzeichnisstruktur vorbereiten

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

Startseite erzeugen

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

nginx neu starten

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