neue Fragn
This commit is contained in:
1 parent
07dbc01c92
commit
6a8035cced
16 files changed
+3422
-16
No files matched your search
@@ -0,0 +1,311 @@
|
||||
{
|
||||
"$schema": "../schema/questions.schema.json",
|
||||
"format": "lpic-sim-questions",
|
||||
"meta": {
|
||||
"file": "questions_110_set2.json",
|
||||
"brief": "Zweiter Fragensatz zu Topic 110 Sicherheit (LPIC-1 102-500, Objectives 5.0)",
|
||||
"author": "Björn Runden <br@runden.de>",
|
||||
"owner": "Björn Runden <br@runden.de>",
|
||||
"assist": "KI-unterstützt (Claude Opus 5.5), geprüft von Björn Runden <br@runden.de>",
|
||||
"version": "0.1.0 (30.10.2026)"
|
||||
},
|
||||
"exam": "lpic1-102",
|
||||
"questions": [
|
||||
{
|
||||
"id": "110.1-005",
|
||||
"objective": "110.1",
|
||||
"type": "multi",
|
||||
"difficulty": 2,
|
||||
"question": "`umount /mnt/usb` meldet „target is busy“. Mit welchen Befehlen findet man die Prozesse, die das Dateisystem noch verwenden?",
|
||||
"options": [
|
||||
{ "id": "a", "text": "`fuser -vm /mnt/usb`", "correct": true, "explanation": "`-m` betrachtet das ganze eingehängte Dateisystem, `-v` zeigt Benutzer, PID und Zugriffsart." },
|
||||
{ "id": "b", "text": "`lsof /mnt/usb`", "correct": true, "explanation": "Für einen Einhängepunkt listet `lsof` alle offenen Dateien auf diesem Dateisystem." },
|
||||
{ "id": "c", "text": "`df /mnt/usb`", "correct": false, "explanation": "Zeigt nur Belegung und Größe." },
|
||||
{ "id": "d", "text": "`mount -l`", "correct": false, "explanation": "Listet eingehängte Dateisysteme mit Labels." },
|
||||
{ "id": "e", "text": "`ps -m`", "correct": false, "explanation": "`-m` zeigt Threads, keine Dateibezüge." }
|
||||
],
|
||||
"explanation": "Häufige Ursache: Eine Shell steht mit ihrem aktuellen Verzeichnis im Einhängepunkt. `fuser -km` beendet die Prozesse (Vorsicht).",
|
||||
"references": ["man 1 fuser", "man 8 lsof"]
|
||||
},
|
||||
{
|
||||
"id": "110.1-006",
|
||||
"objective": "110.1",
|
||||
"type": "fill",
|
||||
"difficulty": 2,
|
||||
"question": "In welcher Datei (vollständiger Pfad) legt man über PAM dauerhafte Ressourcenlimits (wie bei `ulimit`) für Benutzer und Gruppen fest?",
|
||||
"answers": ["/etc/security/limits.conf"],
|
||||
"explanation": "Zeilen der Form `<domain> <soft|hard> <item> <wert>`, z. B. `@studenten hard nproc 100`. Ergänzungen in `/etc/security/limits.d/`.",
|
||||
"references": ["man 5 limits.conf"]
|
||||
},
|
||||
{
|
||||
"id": "110.1-007",
|
||||
"objective": "110.1",
|
||||
"type": "single",
|
||||
"difficulty": 2,
|
||||
"question": "Was erlaubt die sudoers-Zeile `bob ALL=(root) /usr/bin/systemctl restart nginx`?",
|
||||
"options": [
|
||||
{ "id": "a", "text": "`bob` darf auf allen Hosts genau diesen Befehl als root ausführen (mit seinem eigenen Passwort).", "correct": true, "explanation": "Aufbau: Benutzer Hosts=(Zielbenutzer) Befehle." },
|
||||
{ "id": "b", "text": "`bob` darf alle Befehle als root ausführen.", "correct": false, "explanation": "Dafür stünde am Ende `ALL`." },
|
||||
{ "id": "c", "text": "`bob` darf nginx ohne Passwort neu starten.", "correct": false, "explanation": "Ohne Passwortabfrage nur mit `NOPASSWD:` vor dem Befehl." },
|
||||
{ "id": "d", "text": "root darf Befehle als `bob` ausführen.", "correct": false, "explanation": "Die Zeile berechtigt `bob`, nicht root." },
|
||||
{ "id": "e", "text": "`bob` muss das root-Passwort eingeben.", "correct": false, "explanation": "sudo fragt standardmäßig das Passwort des **aufrufenden** Benutzers." }
|
||||
],
|
||||
"explanation": "Gruppen beginnen mit `%`, z. B. `%admin ALL=(ALL:ALL) ALL`. Erlaubte Befehle zeigt `sudo -l`.",
|
||||
"references": ["man 5 sudoers"]
|
||||
},
|
||||
{
|
||||
"id": "110.1-008",
|
||||
"objective": "110.1",
|
||||
"type": "single",
|
||||
"difficulty": 1,
|
||||
"question": "Was bewirkt `su - anna`?",
|
||||
"options": [
|
||||
{ "id": "a", "text": "Es startet eine Login-Shell als `anna` mit deren Umgebung und Home-Verzeichnis.", "correct": true, "explanation": "`-` (bzw. `-l`) simuliert eine vollständige Anmeldung." },
|
||||
{ "id": "b", "text": "Es wechselt zu `anna`, behält aber Umgebung und Verzeichnis des Aufrufers.", "correct": false, "explanation": "Das macht `su anna` **ohne** Bindestrich." },
|
||||
{ "id": "c", "text": "Es entfernt das Konto `anna`.", "correct": false, "explanation": "Konten löscht `userdel`." },
|
||||
{ "id": "d", "text": "Es führt einen Befehl als root aus und fragt nach dem Passwort von `anna`.", "correct": false, "explanation": "`su` fragt nach dem Passwort des **Zielbenutzers** (hier anna), außer root ruft auf." },
|
||||
{ "id": "e", "text": "Es sperrt `anna` für die Dauer der Sitzung.", "correct": false, "explanation": "`su` sperrt keine Konten." }
|
||||
],
|
||||
"explanation": "Einzelnen Befehl: `su - anna -c \"befehl\"`. Ohne Benutzername wechselt `su` zu root.",
|
||||
"references": ["man 1 su"]
|
||||
},
|
||||
{
|
||||
"id": "110.1-009",
|
||||
"objective": "110.1",
|
||||
"type": "single",
|
||||
"difficulty": 1,
|
||||
"question": "Welcher Befehl zeigt **fehlgeschlagene** Anmeldeversuche aus `/var/log/btmp`?",
|
||||
"options": [
|
||||
{ "id": "a", "text": "`lastb`", "correct": true, "explanation": "„last bad“; nur für root lesbar." },
|
||||
{ "id": "b", "text": "`last`", "correct": false, "explanation": "Zeigt erfolgreiche Anmeldungen aus `wtmp`." },
|
||||
{ "id": "c", "text": "`lastlog`", "correct": false, "explanation": "Zeigt je Benutzer die letzte Anmeldung." },
|
||||
{ "id": "d", "text": "`who`", "correct": false, "explanation": "Zeigt aktuell angemeldete Benutzer." },
|
||||
{ "id": "e", "text": "`w`", "correct": false, "explanation": "Zeigt angemeldete Benutzer und deren Aktivität." }
|
||||
],
|
||||
"explanation": "Viele fehlgeschlagene SSH-Anmeldungen sind ein Hinweis auf Brute-Force-Versuche (Abhilfe z. B. Schlüssel statt Passwort).",
|
||||
"references": ["man 1 last"]
|
||||
},
|
||||
{
|
||||
"id": "110.1-010",
|
||||
"objective": "110.1",
|
||||
"type": "multi",
|
||||
"difficulty": 2,
|
||||
"question": "Welche Aussagen zu `nmap` treffen zu?",
|
||||
"options": [
|
||||
{ "id": "a", "text": "`nmap -sT host01` führt einen TCP-Connect-Scan durch.", "correct": true, "explanation": "Baut vollständige TCP-Verbindungen auf; braucht keine Root-Rechte." },
|
||||
{ "id": "b", "text": "Portscans sollten nur gegen eigene Systeme oder mit ausdrücklicher Erlaubnis laufen.", "correct": true, "explanation": "Fremde Systeme zu scannen kann rechtliche Folgen haben." },
|
||||
{ "id": "c", "text": "`nmap` ändert die Firewall-Regeln des Ziels.", "correct": false, "explanation": "`nmap` beobachtet nur, es konfiguriert nichts." },
|
||||
{ "id": "d", "text": "`nmap -p 22 host01` scannt alle Ports außer 22.", "correct": false, "explanation": "`-p 22` scannt **nur** Port 22." },
|
||||
{ "id": "e", "text": "`nmap` kann nur den eigenen Rechner prüfen.", "correct": false, "explanation": "Es scannt beliebige erreichbare Hosts und Netze." }
|
||||
],
|
||||
"explanation": "Ohne Angabe prüft nmap die 1000 häufigsten Ports. `-sU` scannt UDP, `-sV` erkennt Dienstversionen.",
|
||||
"references": ["man 1 nmap"]
|
||||
},
|
||||
{
|
||||
"id": "110.2-006",
|
||||
"objective": "110.2",
|
||||
"type": "single",
|
||||
"difficulty": 2,
|
||||
"question": "Was bewirkt `systemctl mask cups.service`?",
|
||||
"options": [
|
||||
{ "id": "a", "text": "Die Unit wird auf `/dev/null` verlinkt und kann weder manuell noch als Abhängigkeit gestartet werden.", "correct": true, "explanation": "Stärker als `disable`; rückgängig mit `systemctl unmask`." },
|
||||
{ "id": "b", "text": "Der Dienst wird nur beim nächsten Start nicht automatisch gestartet.", "correct": false, "explanation": "Das ist `disable`; manuell starten ginge weiterhin." },
|
||||
{ "id": "c", "text": "Der Dienst wird versteckt, läuft aber weiter.", "correct": false, "explanation": "`mask` stoppt einen laufenden Dienst nicht automatisch – starten lässt er sich danach aber nicht mehr." },
|
||||
{ "id": "d", "text": "Die Protokollausgabe des Dienstes wird unterdrückt.", "correct": false, "explanation": "`mask` hat mit Logging nichts zu tun." },
|
||||
{ "id": "e", "text": "Der Dienst läuft danach nur noch für root.", "correct": false, "explanation": "`mask` kennt keine Benutzerbeschränkung." }
|
||||
],
|
||||
"explanation": "Zum sofortigen Stoppen zusätzlich `--now` angeben. Status `masked` zeigt `systemctl status` bzw. `list-unit-files`.",
|
||||
"references": ["man 1 systemctl"]
|
||||
},
|
||||
{
|
||||
"id": "110.2-007",
|
||||
"objective": "110.2",
|
||||
"type": "single",
|
||||
"difficulty": 1,
|
||||
"question": "Was passiert, wenn ein Benutzer mit der Login-Shell `/usr/sbin/nologin` sich per SSH anmelden will?",
|
||||
"options": [
|
||||
{ "id": "a", "text": "Eine Meldung wird ausgegeben und die Verbindung beendet; eine interaktive Sitzung entsteht nicht.", "correct": true, "explanation": "`nologin` gibt „This account is currently not available.“ (bzw. `/etc/nologin.txt`) aus und endet mit Fehler." },
|
||||
{ "id": "b", "text": "Der Benutzer erhält eine eingeschränkte Bash.", "correct": false, "explanation": "Es wird gar keine Shell gestartet." },
|
||||
{ "id": "c", "text": "Das Konto wird dauerhaft gelöscht.", "correct": false, "explanation": "`nologin` ändert keine Konten." },
|
||||
{ "id": "d", "text": "Die Anmeldung gelingt nur mit SSH-Schlüssel.", "correct": false, "explanation": "Auch mit Schlüssel endet die Sitzung sofort." },
|
||||
{ "id": "e", "text": "Es gilt nur für root, normale Benutzer sind nicht betroffen.", "correct": false, "explanation": "Es gilt für jedes Konto mit dieser Shell." }
|
||||
],
|
||||
"explanation": "Nicht verwechseln mit `/etc/nologin`: Diese Datei sperrt **alle** Nicht-root-Anmeldungen, solange sie existiert.",
|
||||
"references": ["man 8 nologin"]
|
||||
},
|
||||
{
|
||||
"id": "110.2-008",
|
||||
"objective": "110.2",
|
||||
"type": "fill",
|
||||
"difficulty": 2,
|
||||
"question": "Mit welchem `systemctl`-Aufruf (Befehl und Unterbefehl) listet man alle Socket-Units mit ihren lauschenden Adressen auf?",
|
||||
"answers": ["systemctl list-sockets"],
|
||||
"explanation": "Socket-Units (`*.socket`) lauschen stellvertretend und starten den Dienst bei Bedarf.",
|
||||
"references": ["man 1 systemctl", "man 5 systemd.socket"]
|
||||
},
|
||||
{
|
||||
"id": "110.2-009",
|
||||
"objective": "110.2",
|
||||
"type": "single",
|
||||
"difficulty": 2,
|
||||
"question": "Welche Aussage zu **xinetd** trifft zu?",
|
||||
"options": [
|
||||
{ "id": "a", "text": "Als Super-Server lauscht er für mehrere Dienste und startet sie erst bei einer Verbindung; Konfiguration in `/etc/xinetd.conf` und `/etc/xinetd.d/`.", "correct": true, "explanation": "In `/etc/xinetd.d/<dienst>` schaltet `disable = yes` einen Dienst ab." },
|
||||
{ "id": "b", "text": "xinetd ist eine Firewall auf Paketebene.", "correct": false, "explanation": "Paketfilter sind z. B. nftables/iptables." },
|
||||
{ "id": "c", "text": "xinetd ersetzt den Kernel-Scheduler.", "correct": false, "explanation": "Kein Zusammenhang." },
|
||||
{ "id": "d", "text": "xinetd wird über `/etc/inittab` konfiguriert.", "correct": false, "explanation": "`/etc/inittab` gehört zu SysV-init." },
|
||||
{ "id": "e", "text": "xinetd ist der Nachfolger von systemd.", "correct": false, "explanation": "Umgekehrt: systemd-Socket-Units übernehmen heute meist diese Aufgabe." }
|
||||
],
|
||||
"explanation": "Auf modernen Systemen selten; Prinzip „Dienste nur bei Bedarf starten“ lebt in systemd-Socket-Aktivierung weiter.",
|
||||
"references": ["man 8 xinetd", "man 5 xinetd.conf"]
|
||||
},
|
||||
{
|
||||
"id": "110.2-010",
|
||||
"objective": "110.2",
|
||||
"type": "multi",
|
||||
"difficulty": 1,
|
||||
"question": "Welche Maßnahmen verringern die **Angriffsfläche** eines Servers?",
|
||||
"options": [
|
||||
{ "id": "a", "text": "Nicht benötigte Dienste stoppen und deaktivieren", "correct": true, "explanation": "Jeder laufende Netzwerkdienst ist ein möglicher Angriffspunkt." },
|
||||
{ "id": "b", "text": "Dienste, die nur lokal gebraucht werden, nur an `127.0.0.1` binden", "correct": true, "explanation": "Dann sind sie aus dem Netz nicht erreichbar." },
|
||||
{ "id": "c", "text": "`/etc/shadow` für alle lesbar machen (644)", "correct": false, "explanation": "Damit könnten alle Benutzer die Hashes offline knacken." },
|
||||
{ "id": "d", "text": "SSH-Anmeldung als root mit Passwort erlauben", "correct": false, "explanation": "Erhöht das Risiko durch Passwortraten auf das mächtigste Konto." },
|
||||
{ "id": "e", "text": "Telnet für die Fernwartung verwenden", "correct": false, "explanation": "Telnet überträgt alles inklusive Passwort im Klartext." }
|
||||
],
|
||||
"explanation": "Vorgehen: lauschende Ports ermitteln (`ss -tulpn`), unnötige Dienste abschalten, Rest mit Firewall und Updates absichern.",
|
||||
"references": ["LPI 102-500 Objective 110.2"]
|
||||
},
|
||||
{
|
||||
"id": "110.2-011",
|
||||
"objective": "110.2",
|
||||
"type": "single",
|
||||
"difficulty": 2,
|
||||
"question": "Welche Aussage zur **Socket-Aktivierung** bei systemd trifft zu?",
|
||||
"options": [
|
||||
{ "id": "a", "text": "systemd lauscht selbst auf dem Socket und startet den zugehörigen Dienst erst bei der ersten Verbindung.", "correct": true, "explanation": "Die `.socket`-Unit hält den Port offen und übergibt ihn an den Dienst." },
|
||||
{ "id": "b", "text": "Der Dienst muss vorher manuell gestartet sein, sonst gehen Verbindungen verloren.", "correct": false, "explanation": "Gerade das Gegenteil: Verbindungen werden gepuffert, bis der Dienst läuft." },
|
||||
{ "id": "c", "text": "Socket-Units ersetzen die Firewall.", "correct": false, "explanation": "Sie regeln nicht, **wer** sich verbinden darf." },
|
||||
{ "id": "d", "text": "Socket-Aktivierung funktioniert nur mit UDP.", "correct": false, "explanation": "TCP, UDP und Unix-Sockets werden unterstützt." },
|
||||
{ "id": "e", "text": "Socket-Units werden in `/etc/xinetd.d/` konfiguriert.", "correct": false, "explanation": "Sie liegen wie andere Units z. B. unter `/etc/systemd/system/`." }
|
||||
],
|
||||
"explanation": "Beispiel: `ssh.socket` statt `ssh.service`. Auch eine deaktivierte Service-Unit kann so über ihre aktive Socket-Unit gestartet werden – beim Härten beide prüfen.",
|
||||
"references": ["man 5 systemd.socket"]
|
||||
},
|
||||
{
|
||||
"id": "110.3-007",
|
||||
"objective": "110.3",
|
||||
"type": "single",
|
||||
"difficulty": 1,
|
||||
"question": "Wie überträgt man den eigenen öffentlichen SSH-Schlüssel am einfachsten auf den Server `host01`?",
|
||||
"options": [
|
||||
{ "id": "a", "text": "`ssh-copy-id anna@host01`", "correct": true, "explanation": "Hängt den öffentlichen Schlüssel an `~/.ssh/authorized_keys` auf dem Server an und setzt passende Rechte." },
|
||||
{ "id": "b", "text": "`scp ~/.ssh/id_ed25519 anna@host01:`", "correct": false, "explanation": "Kopiert den **privaten** Schlüssel – ein Sicherheitsproblem und wirkungslos für die Anmeldung." },
|
||||
{ "id": "c", "text": "`ssh-add anna@host01`", "correct": false, "explanation": "`ssh-add` lädt Schlüssel in den lokalen ssh-agent." },
|
||||
{ "id": "d", "text": "`ssh-keyscan host01`", "correct": false, "explanation": "Holt die **Host**-Schlüssel des Servers ab." },
|
||||
{ "id": "e", "text": "`ssh-agent anna@host01`", "correct": false, "explanation": "`ssh-agent` hält Schlüssel im Speicher, überträgt nichts." }
|
||||
],
|
||||
"explanation": "Mit `-i ~/.ssh/datei.pub` wählt man einen bestimmten Schlüssel.",
|
||||
"references": ["man 1 ssh-copy-id"]
|
||||
},
|
||||
{
|
||||
"id": "110.3-008",
|
||||
"objective": "110.3",
|
||||
"type": "fill",
|
||||
"difficulty": 1,
|
||||
"question": "Wie heißt die Konfigurationsdatei des OpenSSH-**Servers**? (vollständiger Pfad)",
|
||||
"answers": ["/etc/ssh/sshd_config"],
|
||||
"explanation": "Die Client-Konfiguration ist `/etc/ssh/ssh_config` bzw. `~/.ssh/config`. Nach Änderungen `sshd -t` prüfen und den Dienst neu laden.",
|
||||
"references": ["man 5 sshd_config"]
|
||||
},
|
||||
{
|
||||
"id": "110.3-009",
|
||||
"objective": "110.3",
|
||||
"type": "single",
|
||||
"difficulty": 1,
|
||||
"question": "Welcher GnuPG-Befehl listet die öffentlichen Schlüssel im eigenen Schlüsselbund auf?",
|
||||
"options": [
|
||||
{ "id": "a", "text": "`gpg --list-keys`", "correct": true, "explanation": "Kurzform `gpg -k`." },
|
||||
{ "id": "b", "text": "`gpg --list-secret-keys`", "correct": false, "explanation": "Listet die **privaten** Schlüssel (`-K`)." },
|
||||
{ "id": "c", "text": "`gpg --export`", "correct": false, "explanation": "Gibt öffentliche Schlüssel zur Weitergabe aus (binär oder mit `--armor`)." },
|
||||
{ "id": "d", "text": "`gpg --import`", "correct": false, "explanation": "Importiert Schlüssel aus einer Datei." },
|
||||
{ "id": "e", "text": "`gpg --verify`", "correct": false, "explanation": "Prüft Signaturen." }
|
||||
],
|
||||
"explanation": "Schlüsselbund liegt in `~/.gnupg/`. Schlüssel verteilen: `gpg --export --armor anna@example.org > anna.asc`.",
|
||||
"references": ["man 1 gpg"]
|
||||
},
|
||||
{
|
||||
"id": "110.3-010",
|
||||
"objective": "110.3",
|
||||
"type": "single",
|
||||
"difficulty": 2,
|
||||
"question": "Zu `release.tar.gz` gibt es die abgetrennte Signatur `release.tar.gz.sig`. Wie prüft man sie?",
|
||||
"options": [
|
||||
{ "id": "a", "text": "`gpg --verify release.tar.gz.sig release.tar.gz`", "correct": true, "explanation": "Erst die Signatur, dann die signierte Datei; der öffentliche Schlüssel des Signierers muss importiert sein." },
|
||||
{ "id": "b", "text": "`gpg --decrypt release.tar.gz`", "correct": false, "explanation": "Die Datei ist nicht verschlüsselt, nur signiert." },
|
||||
{ "id": "c", "text": "`gpg --sign release.tar.gz.sig`", "correct": false, "explanation": "Würde selbst eine neue Signatur erstellen." },
|
||||
{ "id": "d", "text": "`sha256sum release.tar.gz.sig`", "correct": false, "explanation": "Berechnet nur eine Prüfsumme der Signaturdatei." },
|
||||
{ "id": "e", "text": "`gpg --list-keys release.tar.gz`", "correct": false, "explanation": "Listet Schlüssel, prüft nichts." }
|
||||
],
|
||||
"explanation": "„Good signature“ heißt nur: passt zum Schlüssel. Ob der Schlüssel vertrauenswürdig ist, zeigt der Fingerabdruck-Abgleich über einen sicheren Kanal.",
|
||||
"references": ["man 1 gpg"]
|
||||
},
|
||||
{
|
||||
"id": "110.3-011",
|
||||
"objective": "110.3",
|
||||
"type": "single",
|
||||
"difficulty": 1,
|
||||
"question": "Wie lädt man den privaten Schlüssel `~/.ssh/id_ed25519` in einen laufenden **ssh-agent**?",
|
||||
"options": [
|
||||
{ "id": "a", "text": "`ssh-add ~/.ssh/id_ed25519`", "correct": true, "explanation": "Fragt einmal nach der Passphrase; danach nutzt ssh den Schlüssel aus dem Agent. `ssh-add -l` listet geladene Schlüssel." },
|
||||
{ "id": "b", "text": "`ssh -A ~/.ssh/id_ed25519`", "correct": false, "explanation": "`-A` aktiviert Agent-Weiterleitung für eine Verbindung." },
|
||||
{ "id": "c", "text": "`ssh-keygen -a ~/.ssh/id_ed25519`", "correct": false, "explanation": "`-a` legt die Anzahl der KDF-Runden beim Erzeugen fest." },
|
||||
{ "id": "d", "text": "`ssh-copy-id ~/.ssh/id_ed25519`", "correct": false, "explanation": "Überträgt einen öffentlichen Schlüssel auf einen Server." },
|
||||
{ "id": "e", "text": "`ssh-agent -k`", "correct": false, "explanation": "`-k` beendet den laufenden Agent." }
|
||||
],
|
||||
"explanation": "Agent starten (falls nicht durch die Desktop-Sitzung geschehen): `eval \"$(ssh-agent)\"`.",
|
||||
"references": ["man 1 ssh-add", "man 1 ssh-agent"]
|
||||
},
|
||||
{
|
||||
"id": "110.3-012",
|
||||
"objective": "110.3",
|
||||
"type": "multi",
|
||||
"difficulty": 2,
|
||||
"question": "Welche Aussagen zu GnuPG treffen zu?",
|
||||
"options": [
|
||||
{ "id": "a", "text": "Man verschlüsselt mit dem **öffentlichen** Schlüssel des Empfängers.", "correct": true, "explanation": "Nur der Inhaber des passenden privaten Schlüssels kann entschlüsseln." },
|
||||
{ "id": "b", "text": "Man signiert mit dem eigenen **privaten** Schlüssel.", "correct": true, "explanation": "Jeder mit dem öffentlichen Schlüssel kann die Signatur prüfen." },
|
||||
{ "id": "c", "text": "Der Empfänger entschlüsselt mit dem öffentlichen Schlüssel des Absenders.", "correct": false, "explanation": "Entschlüsselt wird mit dem eigenen privaten Schlüssel." },
|
||||
{ "id": "d", "text": "Ein Widerrufszertifikat dient zum Verschlüsseln von Dateien.", "correct": false, "explanation": "Es erklärt einen Schlüssel für ungültig, z. B. nach Verlust." },
|
||||
{ "id": "e", "text": "`~/.gnupg` sollte für alle lesbar sein, damit andere die Schlüssel finden.", "correct": false, "explanation": "Das Verzeichnis enthält private Schlüssel und muss privat bleiben (700); öffentliche Schlüssel verteilt man per Export." }
|
||||
],
|
||||
"explanation": "Hintergrund-Daemon: `gpg-agent` verwaltet Passphrasen; Widerrufszertifikat erzeugen mit `gpg --gen-revoke`.",
|
||||
"references": ["man 1 gpg"]
|
||||
},
|
||||
{
|
||||
"id": "110.3-013",
|
||||
"objective": "110.3",
|
||||
"type": "fill",
|
||||
"difficulty": 1,
|
||||
"question": "Mit welcher `ssh`-Option gibt man eine bestimmte Datei mit dem privaten Schlüssel für die Anmeldung an? (nur die Option)",
|
||||
"answers": ["-i"],
|
||||
"explanation": "Beispiel: `ssh -i ~/.ssh/labor_ed25519 anna@host01`. Dauerhaft in `~/.ssh/config` mit `IdentityFile`.",
|
||||
"references": ["man 1 ssh"]
|
||||
},
|
||||
{
|
||||
"id": "110.3-014",
|
||||
"objective": "110.3",
|
||||
"type": "single",
|
||||
"difficulty": 2,
|
||||
"question": "Welche Einstellung in `/etc/ssh/sshd_config` verbietet die Anmeldung per **Passwort** für alle Benutzer?",
|
||||
"options": [
|
||||
{ "id": "a", "text": "`PasswordAuthentication no`", "correct": true, "explanation": "Danach sind nur noch Schlüssel bzw. andere Verfahren möglich – vorher Schlüssel-Anmeldung testen!" },
|
||||
{ "id": "b", "text": "`PermitRootLogin no`", "correct": false, "explanation": "Verbietet nur die Anmeldung als root." },
|
||||
{ "id": "c", "text": "`PubkeyAuthentication no`", "correct": false, "explanation": "Verbietet die Schlüssel-Anmeldung – das Gegenteil." },
|
||||
{ "id": "d", "text": "`AllowUsers none`", "correct": false, "explanation": "Erlaubt nur einem Benutzer namens `none` die Anmeldung." },
|
||||
{ "id": "e", "text": "`X11Forwarding no`", "correct": false, "explanation": "Betrifft nur die X11-Weiterleitung." }
|
||||
],
|
||||
"explanation": "Abhängig von PAM sollte zusätzlich `KbdInteractiveAuthentication no` gesetzt sein, sonst ist eine Passwortabfrage über PAM noch möglich.",
|
||||
"references": ["man 5 sshd_config"]
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in new issue
Block a user