Gehärtete Distribution Rocky nginx

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen


Installation von Nginx

  • sudo dnf install nginx

nginx: HTTPS-VirtualHost für rocky.it213.int

Zertifikate besorgen

Konfigurationsdatei anlegen

  • vi /etc/nginx/conf.d/rocky.it213.int.conf
 server {
     listen 80;
     listen [::]:80;
     server_name rocky.it213.int;
     return 301 https://$host$request_uri;
 }

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

     server_name rocky.it113.int;

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

     ssl_certificate /etc/nginx/ssl/star.it213.int.crt;
     ssl_certificate_key /etc/nginx/ssl/star.it213.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

Zugriff

Erster Versuch

  • Beim ersten Zugriffsversuch schlägt die Verbindung fehl – die Ursache liegt in der aktiven Host-Firewall.

Firewall konfigurieren

HTTPS (Port 443) freigeben
  • firewall-cmd --permanent --add-service=https
HTTP (Port 80) freigeben – notwendig für Redirect
  • firewall-cmd --permanent --add-service=http
Firewall neu laden
  • firewall-cmd --reload
Aktive Regeln anzeigen
  • firewall-cmd --list-all

Zweiter Versuch

  • Auch der zweite Versuch schlägt fehl – diesmal verhindert SELinux den Zugriff auf das Verzeichnis.

SELinux

Fehleranalyse

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

Lösung

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

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.

Fazit

  • Rocky Linux ist bereits in der Standardinstallation mit sicherheitsrelevanten Features wie SELinux und einer restriktiven Firewall ausgestattet.
  • Diese Anleitung zeigt exemplarisch, wie mit wenigen Schritten ein Webserver aufgesetzt werden kann, der diese Mechanismen berücksichtigt.
  • Damit ist Rocky eine solide Grundlage für den sicheren Betrieb produktiver Dienste – bereits „ab Werk“ leicht gehärtet.