Gehärtete Distribution Rocky: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
(8 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 4: Zeile 4:
 
*In dieser Anleitung wird exemplarisch gezeigt, wie ein Webserver unter Rocky Linux eingerichtet wird – inklusive HTTPS, SELinux-Anpassungen und Firewallkonfiguration.   
 
*In dieser Anleitung wird exemplarisch gezeigt, wie ein Webserver unter Rocky Linux eingerichtet wird – inklusive HTTPS, SELinux-Anpassungen und Firewallkonfiguration.   
 
*Dabei wird besonders auf sicherheitsrelevante Aspekte geachtet, die den gehärteten Zustand des Systems unterstreichen.   
 
*Dabei wird besonders auf sicherheitsrelevante Aspekte geachtet, die den gehärteten Zustand des Systems unterstreichen.   
*Das Beispiel basiert auf dem Hostnamen '''rocky.it113.int''' und verwendet reale Konfigurationsbefehle und typische Pfade.
+
*Das Beispiel basiert auf dem Hostnamen '''rocky.it213.int''' und verwendet reale Konfigurationsbefehle und typische Pfade.
 +
==Vorbereitung==
 +
Folgendes in die it2xx.int Zone eintragen
 +
rocky IN A 10.88.2xx.81
 +
revproxy IN A 10.88.2xx.81
 +
;Nicht vergessen den Nameserver neu zustarten
  
 
==Installation==
 
==Installation==
Zeile 10: Zeile 15:
 
! Einstellung !! Wert
 
! Einstellung !! Wert
 
|-
 
|-
| '''Name''' || rocky.it113.int
+
| '''Name''' || rocky.it213.int
 
|-
 
|-
| '''IP-Adresse''' || 10.88.1xx.81/24
+
| '''IP-Adresse''' || 10.88.2xx.81/24
 
|-
 
|-
| '''Gateway''' || 10.88.1xx.1
+
| '''Gateway''' || 10.88.2xx.1
 
|-
 
|-
| '''Nameserver''' || 10.88.1xx.1
+
| '''Nameserver''' || 10.88.2xx.21
 
|-
 
|-
| '''Search-Domain''' || it113.int
+
| '''Search-Domain''' || it213.int
 
|-
 
|-
 
| '''Festplatte''' || 20 GByte
 
| '''Festplatte''' || 20 GByte
Zeile 34: Zeile 39:
 
| '''Netz''' || DMZ
 
| '''Netz''' || DMZ
 
|}
 
|}
 +
;Es gibt ein rocky-setup.sh das alles automatisch macht - Danach rebooten und gut ist.
  
==Installation von Nginx==
+
=Erste Amtshandlung=
*sudo dnf install nginx
+
*Rocky als JumpHost eintragen
  
==nginx: HTTPS-VirtualHost für rocky.it113.int==
+
=Beispiele=
===Zertifikate besorgen===
+
*[[Gehärtete Distribution Rocky nginx]]
*cd /etc/nginx/ssl/
+
*[[Gehärtete Distribution Rocky nginx Webproxy]]
*wget https://web.samogo.de/certs/rocky.it113.int.crt
+
*[[Gehärtete Distribution Rocky ssh]]
*wget https://web.samogo.de/certs/rocky.it113.int.key
 
 
 
===Konfigurationsdatei anlegen===
 
*vi /etc/nginx/conf.d/rocky.it113.int.conf
 
<pre>
 
server {
 
    listen 80;
 
    listen [::]:80;
 
    server_name rocky.it113.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/rocky.it113.int.crt;
 
    ssl_certificate_key /etc/nginx/ssl/rocky.it113.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
 
 
 
==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.
 

Aktuelle Version vom 3. Juli 2025, 09:25 Uhr

Einführung

  • Rocky Linux ist eine auf Stabilität und Sicherheit ausgelegte Enterprise-Distribution und eignet sich besonders gut für produktive Serverumgebungen.
  • Ein zentrales Merkmal von Rocky ist die konsequente Voreinstellung sicherheitsrelevanter Mechanismen wie SELinux und einer restriktiven Firewall.
  • In dieser Anleitung wird exemplarisch gezeigt, wie ein Webserver unter Rocky Linux eingerichtet wird – inklusive HTTPS, SELinux-Anpassungen und Firewallkonfiguration.
  • Dabei wird besonders auf sicherheitsrelevante Aspekte geachtet, die den gehärteten Zustand des Systems unterstreichen.
  • Das Beispiel basiert auf dem Hostnamen rocky.it213.int und verwendet reale Konfigurationsbefehle und typische Pfade.

Vorbereitung

Folgendes in die it2xx.int Zone eintragen

rocky IN A 10.88.2xx.81
revproxy IN A 10.88.2xx.81
Nicht vergessen den Nameserver neu zustarten

Installation

Einstellung Wert
Name rocky.it213.int
IP-Adresse 10.88.2xx.81/24
Gateway 10.88.2xx.1
Nameserver 10.88.2xx.21
Search-Domain it213.int
Festplatte 20 GByte
RAM 4 GByte
Benutzername kit
Benutzerpasswort kit
Administrator root
Administratorpasswort radler
Netz DMZ
Es gibt ein rocky-setup.sh das alles automatisch macht - Danach rebooten und gut ist.

Erste Amtshandlung

  • Rocky als JumpHost eintragen

Beispiele