| FOTO | AUTO | EDV | AUDIO |

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
edv:padawan:projekt_webserver [12 51 2026 14 : 51] – angelegt André Reichert-Creutzedv:padawan:projekt_webserver [13 29 2026 13 : 29] (aktuell) – [Das Projektdokument] André Reichert-Creutz
Zeile 1: Zeile 1:
-====== Abschlussprojekt – Die Jedi-Prüfung ======+====== Azubi-Projekt: DokuWiki auf RHEL 9 ======
  
 <WRAP center round box 90%> <WRAP center round box 90%>
-//Episode V – Das Imperium schlägt zurück · Diesmal bist du allein · 16 Stunden · Zwei Arbeitstage · Kein Netz und kein doppelter Boden//+//Dies ist kein Tutorial. Es gibt keine Schritt-für-Schritt-Anleitung.\\ 
 +Du bekommst einen nackten Server – und eine Anforderung. Der Rest liegt bei dir.//
 </WRAP> </WRAP>
  
 ---- ----
  
-===== Die Stunde der Wahrheit =====+===== Der Auftrag =====
  
-Du hast navigiertDu hast Dateien bearbeitetBenutzer verwaltetRechte gesetztProzesse kontrolliert, Software installiert und eine Firewall konfiguriert. Vier Phasen. Acht Module. Die Kraft fließt.+Die IT-Infrastruktur benötigt ein internes DokumentationssystemDie Wahl ist auf **DokuWiki** gefallen – leichtgewichtigdatenbanklosbewährt. Deine Aufgabe: einen leeren RHEL 9-Server in einen produktionsbereitengehärteten und auditierten Webserver verwandeln.
  
-Jetzt beginnt die **Jedi-Prüfung.**+Das System läuft in einem regulierten Umfeld. Es muss nicht nur funktionieren – es muss **sicher, nachvollziehbar und wartbar** sein. Das sind die drei Anforderungen, die dich bis zur Abnahme begleiten.
  
-Im Tempel auf Coruscant musste jeder Padawan vor dem Rat beweisen, dass er kein Schüler mehr ist. Nicht durch Theorie. Nicht durch Wiederholung. Sondern durch eine echte Aufgabe in einer echten Situation – allein, unter Zeitdruck, mit Verantwortung für das Ergebnis. +Zeitansatz: **16 Stunden** über zwei Arbeitstage.
- +
-Deine AufgabeEinen nackten RHEL 9-Server in einen produktionsbereiten, gehärteten und auditierten Webserver verwandeln. Das System läuft in einem regulierten Umfeld – Versicherungswesen, BaFin, DORA. Es muss nicht nur funktionieren. Es muss **compliant** sein. +
- +
-> //"Die Prüfung zeigt dir nicht, was du kannst. Sie zeigt dir, was du bist."//\\ +
-> – Meister Windu, vor dem Jedi-Rat · und sinngemäß vor dem Abnahme-Gespräch+
  
 ---- ----
  
-===== Die Spielregeln der Prüfung =====+===== Transferleistung – was du dir selbst erarbeitest =====
  
 <WRAP round important 90%> <WRAP round important 90%>
-**Zeitrahmen und Rahmenbedingungen**+Die folgenden Themen wurden im Grundkurs bewusst nicht behandelt. Sie sind Teil dieses Projekts. Du musst sie dir durch Manpages, das Projektdokument oder mit Hilfe einer freigegebenen KI selbst erschließen – das gehört zum Beruf.
  
-^ Eigenschaft ^ Wert ^ +  * **SELinux-Kontexte:** Über das ''rwx''-Modell hinaus – ''semanage fcontext''''restorecon'' 
-| Zeitansatz | 16 Stunden (2 Arbeitstage) | +  * **Systemd-Timer:** Moderne Aufgabenplanung ohne Cron – ''.timer''- und ''.service''-Units 
-| Arbeitsweise | Selbstständig – Rückfragen nur nach Konsultation der Manpage | +  * **Textverarbeitung und Archivierung:** Strukturiertes Parsing mit ''awk'', Sicherung mit ''tar''
-| Hilfsmittel | Manpagesdieses Wiki, Overleaf-Dokument, freigegebene KI | +
-| Ergebnis | Lauffähiges System + Fachpräsentation | +
-| Abnahme | 15 MinPräsentation + 15 MinFachgespräch mit dem Ausbilder |+
 </WRAP> </WRAP>
  
 ---- ----
  
-===== Die Transferleistung – was du dir selbst beibringst =====+===== Hinweis zur KI-Nutzung =====
  
-<WRAP round tip 90%> +<WRAP round warning 90%> 
-**Padawan, aufgepasst:** Folgende Themen wurden im Grundkurs bewusst nicht gelehrt. Sie sind Teil der Prüfung. Du musst sie dir selbst erarbeiten – durch Manpages, das Overleaf-Dokument oder mit KI-Unterstützung. Das ist keine Schwäche, sondern das Kernhandwerk des Systemadministrators: **das eigenständige Erschließen neuer Themen.**+⚠ **DORA · BaFin · DSGVO – nicht verhandelbar**
  
-  * **SELinux-Kontexte** – jenseits des klassischen ''rwx''-Modells: ''semanage fcontext'', ''restorecon'' +KI-Assistenten dürfen für Recherche und Syntaxverständnis genutzt werdenDabei gelten zwingend:
-  * **Systemd-Timer** – als moderne Alternative zu Cronjobs: ''.timer''- und ''.service''-Units +
-  * **Archivierung und Textverarbeitung** – ''tar'' für Backups, ''awk'' für strukturiertes Parsing +
-</WRAP> +
- +
----- +
- +
-===== KI-Nutzung – Jedi-Kodex der Compliance ===== +
- +
-<note warning> +
-**DORA · BaFin · DSGVO – diese Regeln sind nicht verhandelbar** +
- +
-Die Nutzung von KI-Assistenten für Recherche und Syntaxerklärungen ist **ausdrücklich erwünscht**Der Einsatz unterliegt jedoch zwingend den folgenden Regeln: +
- +
-  * **Keine Echtdaten in KI-Prompts:** Keine echten IP-Adressen, internen Hostnamen, Passwörter, Hashes oder Benutzernamen. Nutze Platzhalter wie ''<SERVER-IP>'' oder ''user123''+
-  * **Keine personenbezogenen Daten:** Das Eintippen von Mitarbeiterdaten in externe KI-Systeme ist ein DSGVO-Verstoß – auch wenn es sich um Testdaten handelt. +
-  * **Kein blindes Copy-Paste:** Du musst jede Code-Zeile im Fachgespräch erklären können. Wer das nicht kann, hat nicht gelernt – er hat kopiert. Das wird sichtbar. +
- +
-KI ist dein **Mentor für Syntax**, nicht dein Ghostwriter. Meister Yoda hat auch nicht für Luke Skywalker trainiert. +
-</note> +
- +
----- +
- +
-===== Die vier Prüfungsphasen ===== +
- +
-==== Phase 1 – Identity Management und Härtung (Tag 1) ====+
  
-<WRAP round box 90%+  * **Keine Echtdaten** in KI-Prompts: keine echten IP-Adressen, Hostnamen, Passwörter oder Benutzernamen. Platzhalter wie ''<SERVER-IP>'' verwenden. 
-**Ziel: Sicherer Zugang · Prinzip der geringsten Rechte (Least Privilege)**+  * **Keine personenbezogenen Daten** – auch keine Testdaten, die auf echten Personen basieren. 
 +  * **Kein blindes Copy-Paste** – jede Zeile im Fachgespräch erklären können.
  
-Der Server darf nicht mehr über unsichere Protokolle oder schwache Authentifizierung erreichbar sein.+KI ist ein Hilfsmittel zum Verstehen, kein Ersatz für das Denken.
 </WRAP> </WRAP>
- 
-**Deine Aufgaben:** 
- 
-  - Generiere in deinem SSH-Client ein modernes **ed25519**-Schlüsselpaar und richte den zertifikatsbasierten Login ein. 
-  - Deaktiviere den Root-Login und die passwortbasierte Authentifizierung in der SSH-Konfiguration. 
-  - Lege einen **System-Benutzer** ''dokuwiki'' an, der keine Login-Shell besitzt (''/sbin/nologin''). Unter diesem Account läuft später die Applikation. 
- 
-<code bash> 
-# Schlüsselgenerierung (clientseitig) 
-ssh-keygen -t ed25519 -C "azubi-admin" 
- 
-# SSH-Härtung – relevante Parameter in /etc/ssh/sshd_config: 
-PermitRootLogin no 
-PasswordAuthentication no 
- 
-# Service-User ohne Login anlegen 
-useradd --system --shell /sbin/nologin dokuwiki 
-</code> 
- 
-<note tip> 
-**Warum ed25519?** Nicht weil es der neue Hype ist – sondern weil es mathematisch nachweisbar sicherer und performanter als RSA-2048 ist, bei gleichzeitig kürzeren Schlüsseln. RSA-4096 ist regulatorisch noch akzeptabel, aber ed25519 ist der aktuelle Branchenstandard. Das wirst du im Fachgespräch begründen müssen. 
-</note> 
  
 ---- ----
  
-==== Phase 2 – Applikation und Security (Tag 1) ====+===== Projektphasen =====
  
-<WRAP round box 90%> +Das Projekt gliedert sich in vier aufeinander aufbauende Phasen:
-**ZielBereitstellung der Applikation unter DORA/BSI-Vorgaben**+
  
-Der Webserver muss laufenaber vom Betriebssystem isoliert bleiben. +^ Phase ^ Titel ^ Schwerpunkt ^ 
-</WRAP>+| **1** | Identity Management & Härtung | SSH-SchlüsselRoot-Login sperren, Service-User anlegen | 
 +| **2** | Applikation & Security | Apache, PHP-FPM, DokuWiki deployen, Dateirechte, SELinux, Firewall | 
 +| **3** | Audit & Automatisierung | Audit-Skript, Backup-Skript, Systemd-Timer | 
 +| **4** | Fachpräsentation | 15 Min. Vortrag + 15 Min. Fachgespräch mit dem Ausbilder |
  
-**Deine Aufgaben:** +Phase 4 ist keine Zugabe – sie ist gleichwertigWer nicht erklären kannwas er gebaut hathat es nicht wirklich verstanden.
- +
-  - Installiere ''httpd'' (Apache) und ''php-fpm'' aus den **RHEL-Standard-Repositories** (nur BaseOS/AppStream – keine externen Quellen). +
-  - Lade das aktuelle DokuWiki-Release herunter und entpacke es nach ''/var/www/dokuwiki''+
-  - **Dateiberechtigungen:** Der Webserver (''dokuwiki''-User) darf nur in ''data/'' und ''conf/'' schreiben. Alle anderen Dateien gehören ''root'' und sind nur lesbar. +
-  - **Firewall:** Port 80 in ''firewalld'' freigeben – permanent. +
-  - **SELinux:** SELinux bleibt im ''Enforcing''-Modus. Konfiguriere die Kontexte (''httpd_sys_rw_content_t'') so, dass Apache in die DokuWiki-Datenordner schreiben darf – **persistent via ''semanage''**, nicht temporär via ''chcon''+
- +
-<code bash> +
-# Installation +
-dnf install -y httpd php-fpm wget tar +
- +
-# Least Privilege Dateirechte +
-chown -R root:dokuwiki /var/www/dokuwiki +
-find /var/www/dokuwiki -type d -exec chmod 750 {} \; +
-find /var/www/dokuwiki -type f -exec chmod 640 {} \; +
-chown -R dokuwiki:dokuwiki /var/www/dokuwiki/{data,conf,lib/plugins} +
- +
-# Firewall +
-firewall-cmd --permanent --add-service=http && firewall-cmd --reload +
- +
-# SELinux – persistent (überlebt restorecon und System-Relabeling) +
-semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/dokuwiki/data(/.*)?" +
-semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/dokuwiki/conf(/.*)?" +
-restorecon -Rv /var/www/dokuwiki +
-</code> +
- +
-<note warning> +
-**''chcon'' vs. ''semanage'' – das ist ein Prüfungsthema:**\\ +
-''chcon'' setzt den SELinux-Kontext temporär. Nach einem ''restorecon'' oder System-Relabeling ist er weg. ''semanage fcontext'' schreibt die Regel dauerhaft in die Policy. **Nur ''semanage'' ist die korrekte Produktionslösung.** +
-</note> +
- +
----- +
- +
-==== Phase 3 – Audit und Automatisierung (Tag 2) ==== +
- +
-<WRAP round box 90%> +
-**Ziel: Nachweisbarkeit und Disaster Recovery** +
- +
-Das System muss seine Konfigurationen sichern und unbefugte Accounts automatisch melden. +
-</WRAP> +
- +
-**Deine Aufgaben:** +
- +
-  - **Audit-Skript** ''audit.sh'': Lese ''/etc/passwd'' mit ''awk'' aus und prüfe, ob ein anderer Benutzer als ''root'' die UID 0 besitzt. Alarm bei Fund. +
-  - **Backup-Skript** ''backup.sh'': Archiviere ''/var/www/dokuwiki'' und ''/etc/ssh'' mit ''tar'' und erstelle per ''sha256sum'' einen Integritäts-Hash. +
-  - **Systemd-Timer** (kein Cron!): Führe das Backup täglich um 02:00 Uhr aus. Zwei Dateien erforderlich: ''.service'' und ''.timer''+
- +
-<code bash> +
-# audit.sh – UID-0-Prüfung mit awk +
-BAD=$(awk -F: '$3 == 0 && $1 != "root" {print $1}' /etc/passwd) +
-[ -n "$BAD" ] && echo "ALARM: Illegale Root-Accounts: $BAD" && exit 1 +
-echo "Audit OK." && exit 0 +
- +
-# Systemd-Timer – zwei Dateien in /etc/systemd/system/ +
-# backup.service → Type=oneshot, ExecStart=/usr/local/bin/backup.sh +
-# backup.timer   → OnCalendar=*-*-* 02:00:00, Persistent=true +
- +
-# Aktivieren: +
-systemctl daemon-reload +
-systemctl enable --now backup.timer +
-systemctl list-timers | grep backup +
-</code> +
- +
-<note tip> +
-**Warum Systemd-Timer statt Cron?** Weil systemd-Timer im ''journalctl'' sichtbar sind, exakt steuerbar, in den Start-Abhängigkeitsgraph integriert und auf RHEL 9 der Standard sind. Cron funktioniert – aber wer in einer DORA-Umgebung Cronjobs einrichtet, wenn Systemd-Timer verfügbar sind, muss das sehr gut begründen können. +
-</note> +
- +
----- +
- +
-==== Phase 4 – Die Fachpräsentation ==== +
- +
-<WRAP round box 90%> +
-**Ziel: Vorbereitung auf die IHK-Prüfung und Kundenkommunikation** +
- +
-Technische Umsetzung ist nur die halbe MieteDu musst deine Entscheidungen rechtfertigen können. +
-</WRAP> +
- +
-**15 Minuten Präsentation** (als Folien oder als Seite in deinem neuen DokuWiki): +
- +
-  - **Architektur:** Wie sieht der Datenfluss vom SSH-Client bis zum PHP-Prozess auf dem Server aus? +
-  - **Security Design:** Warum ed25519? Wie schützt uns SELinux in diesem Setup, wenn das Wiki kompromittiert wird? +
-  - **Troubleshooting:** Was war dein größter Fehler – und wie hast du ihn anhand von ''journalctl'' oder Apache-Logs gefunden? +
-  - **Live-Demo:** Lauffähiges Wiki + manueller Start des Systemd-Timers +
- +
-**15 Minuten Fachgespräch** – der Ausbilder stellt Rückfragen zu jedem Aspekt deiner Umsetzung. Typische Fragen: +
- +
-  * Erkläre den Unterschied zwischen ''chcon'' und ''semanage fcontext''+
-  * Warum darf der Apache-Prozess nicht als ''root'' laufen? +
-  * Was passiertwenn jemand ''PasswordAuthentication yes'' wieder aktiviert? +
-  * Wie erkennst du im Journaldass der Backup-Timer nicht ausgeführt wurde?+
  
 ---- ----
  
-===== Das Holocron zu diesem Projekt =====+===== Das Projektdokument =====
  
 <WRAP round important 90%> <WRAP round important 90%>
-**Vollständiges Projektdokument – als LaTeX oder PDF**+**Vollständige Aufgabenstellung, Phasenbeschreibungen und Abnahmekriterien – als LaTeX oder PDF**
  
-Das Dokument enthält: vollständige AufgabenstellungTransferleistungs-Hinweise, KI-Richtlinie sowie den **Lösungsbogen mit Alternativen und Fallstricken** (Abschnitt für Ausbilder).+Das Dokument enthält alle AnforderungenBewertungskriterien und Hinweise zur Transferleistung.\\ 
 +Lösungshinweise für Ausbilder sind im Anhang des Dokuments enthalten und im Fachgespräch nicht einsehbar.
  
 //Overleaf (Quelldatei + Live-Vorschau)://\\ //Overleaf (Quelldatei + Live-Vorschau)://\\
-[[https://de.overleaf.com/project/66570b386561bc85d43f770f|→ Overleaf: Linux Padawan Workshop – Abschlussprojekt]] +[[https://de.overleaf.com/project/66570b386561bc85d43f770f|→ Overleaf: Azubi-Projekt Webserver]]
-</WRAP> +
- +
----- +
- +
-===== Du bist bereit, wenn … ===== +
- +
-<WRAP round tip 90%> +
-Checkliste vor dem Start des Projekts – beantworte jede Frage ohne Nachschlagen: +
- +
-  * [ Ich weiß, was ''useradd %%--%%system %%--%%shell /sbin/nologin'' bewirkt und warum es so gemacht wird. +
-  * [ ] Ich kann ''chmod 640'' und ''chmod 750'' im Schlaf erklären. +
-  * [ ] Ich weiß, was ''Enforcing'' bei SELinux bedeutet und warum ''setenforce 0'' keine Option ist. +
-  * [ ] Ich kann ''journalctl -u httpd -n 50'' ohne Nachdenken eintippen. +
-  * [ ] Ich verstehe den Unterschied zwischen ''--permanent'' und ohne bei ''firewall-cmd''+
-  * [ Ich weiß, dass ''dnf'' für Pakete zuständig ist und welche Repos erlaubt sind. +
- +
-Wenn du alle Häkchen setzen kannst: **Möge die Macht mit dir sein.** Fang an.+
 </WRAP> </WRAP>
  
Zeile 239: Zeile 82:
  
 <WRAP center round box 85%> <WRAP center round box 85%>
-//"Ein Jedi-Ritter ist nicht jemandder keine Fehler macht.//\\ +//"Dokumentierewas du tustNicht für den Ausbilder – für dich in sechs Monaten."//\\
-//Es ist jemand, der seine Fehler im Logfile findet und daraus lernt."//\\ +
-\\ +
-//Möge ''journalctl -xe'' dir den Weg zeigen.//\\+
 \\ \\
 ''[azubi01@rhel9-kurs ~]$'' **_** ''[azubi01@rhel9-kurs ~]$'' **_**
 </WRAP> </WRAP>