Gehärtete Distribution Rocky: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| 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. | + | *Das Beispiel basiert auf dem Hostnamen '''rocky.it113.int''' und verwendet reale Konfigurationsbefehle und typische Pfade. |
| − | + | ==Installation== | |
| − | =Installation= | ||
{| class="wikitable" | {| class="wikitable" | ||
! Einstellung !! Wert | ! Einstellung !! Wert | ||
|- | |- | ||
| − | | '''Name''' || rocky. | + | | '''Name''' || rocky.it113.int |
|- | |- | ||
| − | | '''IP-Adresse''' || 10.88.1xx. | + | | '''IP-Adresse''' || 10.88.1xx.81/24 |
|- | |- | ||
| '''Gateway''' || 10.88.1xx.1 | | '''Gateway''' || 10.88.1xx.1 | ||
| Zeile 19: | Zeile 18: | ||
| '''Nameserver''' || 10.88.1xx.1 | | '''Nameserver''' || 10.88.1xx.1 | ||
|- | |- | ||
| − | | '''Search-Domain''' || | + | | '''Search-Domain''' || it113.int |
|- | |- | ||
| '''Festplatte''' || 20 GByte | | '''Festplatte''' || 20 GByte | ||
| Zeile 36: | Zeile 35: | ||
|} | |} | ||
| − | =Installation von Nginx= | + | ==Installation von Nginx== |
*sudo dnf install nginx | *sudo dnf install nginx | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | ==nginx: HTTPS-VirtualHost für rocky.it113.int== | |
| − | + | ===Zertifikate besorgen=== | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | == | ||
| − | |||
| − | |||
| − | = | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | ==Zertifikate besorgen== | ||
*cd /etc/nginx/ssl/ | *cd /etc/nginx/ssl/ | ||
| − | *wget https://web.samogo.de/certs/rocky. | + | *wget https://web.samogo.de/certs/rocky.it113.int.crt |
| − | *wget https://web.samogo.de/certs/rocky. | + | *wget https://web.samogo.de/certs/rocky.it113.int.key |
| − | |||
| − | |||
| − | |||
| − | /etc/nginx/conf.d/rocky.it113.int.conf | + | ===Konfigurationsdatei anlegen=== |
| + | */etc/nginx/conf.d/rocky.it113.int.conf | ||
| − | + | server { | |
| − | 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; | ||
| + | } | ||
| + | } | ||
| + | ===Verzeichnisstruktur vorbereiten=== | ||
;Verzeichnis für Inhalte anlegen | ;Verzeichnis für Inhalte anlegen | ||
*mkdir -p /var/www/rocky | *mkdir -p /var/www/rocky | ||
| − | ==Startseite erzeugen== | + | ===Startseite erzeugen=== |
| − | |||
;Script herunterladen (außerhalb des DocumentRoot) | ;Script herunterladen (außerhalb des DocumentRoot) | ||
*cd /root | *cd /root | ||
| Zeile 113: | Zeile 84: | ||
*./webgen.sh rocky > /var/www/rocky/index.html | *./webgen.sh rocky > /var/www/rocky/index.html | ||
| − | ==nginx neu starten== | + | ===nginx neu starten=== |
| − | |||
;Konfiguration übernehmen | ;Konfiguration übernehmen | ||
*systemctl restart nginx | *systemctl restart nginx | ||
| Zeile 120: | Zeile 90: | ||
;Status prüfen | ;Status prüfen | ||
*systemctl status nginx | *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. | ||
Version vom 25. April 2025, 12:09 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.it113.int und verwendet reale Konfigurationsbefehle und typische Pfade.
Installation
| Einstellung | Wert |
|---|---|
| Name | rocky.it113.int |
| IP-Adresse | 10.88.1xx.81/24 |
| Gateway | 10.88.1xx.1 |
| Nameserver | 10.88.1xx.1 |
| Search-Domain | it113.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.it113.int
Zertifikate besorgen
- cd /etc/nginx/ssl/
- wget https://web.samogo.de/certs/rocky.it113.int.crt
- wget https://web.samogo.de/certs/rocky.it113.int.key
Konfigurationsdatei anlegen
- /etc/nginx/conf.d/rocky.it113.int.conf
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;
}
}
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.