Gehärtete Distribution Rocky: Unterschied zwischen den Versionen
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)
- 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