Hier fragst du das Verzeichnis ab, stellst das Schulungsportal mit HTTPS ins Netz und lässt das Portal Mails an die Trainer schicken, die das Haus nicht verlassen.

Sprint 5Brückenstufe 3

Eure Story: Ihr richtet DHCP, DNS, NTP, LDAP, Web und Mail ein und testet jeden Dienst, damit die Anmeldung in jeder Schicht klappt.

Input · Verzeichnis-, Web- und Maildienst. Holt ihn euch, wenn eure Storycard danach fragt. Zahlt ein auf AB 5 und 6.

Du richtest ein Dienstkonto ein und fragst Samba verschlüsselt mit LDAP ab, setzt nginx mit Zertifikat auf, richtest Postfix und Dovecot nur intern ein, liest die Protokolle mit und schreibst das Testprotokoll für alle sechs Dienste.

0 von 7 AB abgehakt AB-Liste öffnen

Nutzerdienste auf srv02: Portal, Mail und Postfach, LDAP auf srv01ra-01HTTPS 443srv02.szt3.internal · 10.30.0.11nginxSchulungsportalPostfixSMTP 25, nur internDovecotPostfach trainerIMAPS 993tb-01LDAP-Abfragesrv01 · Samba AD · 10.30.0.10LDAP 389 mit StartTLS · LDAPS 636
Die Nutzerdienste auf srv02: Ein Browser in Raum A ruft das Portal über HTTPS auf, nginx liefert es aus, das Portal gibt Benachrichtigungen an Postfix, Postfix legt sie in das Postfach trainer bei Dovecot, die Trainer holen sie über IMAPS ab. Unten srv01 mit LDAP, das srv02 abfragt. Eigene Darstellung für den Unterricht.

Der wichtigste Satz auf dieser Seite: Ein Dienst läuft erst, wenn ein anderer ihn mit einem Werkzeug prüfen kann. „Bei mir geht es“ ist kein Testergebnis.

Am Ende hast du: eine verschlüsselte LDAP-Abfrage an Samba, das Schulungsportal über HTTPS mit begründeter Zertifikatsentscheidung, einen internen Maildienst für die Trainer und ein Testprotokoll mit OSI-Schicht und RFC für alle sechs Dienste.

Projektdaten des Schulungszentrums: Plätze, Konten, Namen, Adressen und Lizenzpreise: alles, was das Projekt vorgibt, an einer Stelle. Leg es neben jede Aufgabe.

Erst du, dann die anderen

Das Portal soll Trainer per Mail benachrichtigen, aber nichts nach außen schicken. Wie würdest du sicherstellen, dass wirklich nichts nach außen geht?

So gehen andere vor. Such dir einen Weg aus.
  • Am Mailserver: Postfix so einstellen, dass er nur an die eigene Domäne zustellt. Vorteil: an einer Stelle geregelt. Preis: Ein Fehler in einer Zeile, und es geht doch raus.
  • An der Firewall: Port 25 nach außen sperren. Vorteil: wirkt auch, wenn Postfix falsch eingestellt ist. Preis: liegt nicht bei euch, sondern beim Standortnetz.
  • Gar kein Maildienst: Das Portal zeigt Buchungen nur an, ohne Mail. Vorteil: nichts kann rausgehen. Preis: Die Trainer wollen die Mail.

Viele Teams kombinieren die ersten beiden Wege. In Aufgabe 10.3 testet ihr, ob euer Weg hält.

Gegebene Werte für Lernangebot 10 · aufklappen, wenn du sie brauchst

Gegebene Werte für Lernangebot 10

Dienstkonto
svc-portal, nur Lesen im Verzeichnis, Passwort läuft nicht ab
Trainerkonten
12 Konten in OU=Trainer,OU=Benutzer,OU=Schulungszentrum, Gruppe G_Trainer (aus Teil 4)
Portal
portal.szt3.internal auf srv02, Startseite in /var/www/portal
Postfach
Funktionspostfach trainer@szt3.internal, lokales Konto trainer auf srv02
Absender
portal@szt3.internal
Werkzeuge
ldap-utils, curl, openssl, swaks, telnet, tcpdump, auf Windows Test-NetConnection und curl.exe

Alle Namen sind Unterrichtswerte. Wie das Dienstkonto in die OU-Struktur aus Teil 3 passt, entscheidet ihr; die Befehle unten legen eine OU Dienstkonten an.

Dein Lernprodukt im Einzelnen

Dein Lernprodukt

Nutzerdienste und Testprotokoll aller Dienste

Darauf laufen die Aufgaben dieses Lernangebots zu. Die Aufgaben sind die Stufen dorthin, das Lernprodukt ist das Ergebnis.

Es besteht aus

  • LDAP-Abfragen ohne Verschlüsselung, mit StartTLS und mit LDAPS samt Ergebnis
  • nginx-Konfiguration mit Zertifikat und begründeter Entscheidung
  • Postfix- und Dovecot-Einstellungen mit Testmail nach innen und nach außen
  • kommentierter SMTP-Dialog und DNS-Antwort mit RFC-Stellen
  • Testprotokoll aller sechs Dienste von Linux und Windows aus
  • Entscheidung zur Anmeldung am Portal

Zur Dokumentation

Das Testprotokoll ist eine Tabelle mit den Spalten Dienst, OSI-Schicht, Transport und Port, RFC, Test von Linux, Test von Windows, erwartet, beobachtet. Jede Zeile muss ein anderes Team ohne Rückfrage wiederholen können.

Mit dem Testprotokoll aus Lernangebot 9 ist das Lernprodukt von Teil 5 vollständig. Es ist die Grundlage für das Monitoring in Teil 6.

Deine Aufgaben

10.1Fragt das Verzeichnis mit LDAP verschlüsselt ab
Jetzt seid ihr dran · Zu zweit · 5 Arbeitsschritte
zahlt ein auf AB 5
Öffnen ▾Schließen ▴

Aufgabe 10.1

Stufe I · Abfolge

Fragt das Verzeichnis mit LDAP verschlüsselt ab:

  • Legt auf srv01 das Dienstkonto svc-portal an.
  • Tragt auf srv02 das Zertifikat der Samba-eigenen Zertifizierungsstelle als vertrauenswürdig ein und installiert ldap-utils.
  • Führt die drei Abfragen unten der Reihe nach aus: ohne Verschlüsselung, mit StartTLS, mit LDAPS. Notiert jede Antwort.
  • Zählt die Trainerkonten in der Antwort und vergleicht mit Teil 4.
  • Lest mit openssl aus, wer das Zertifikat von srv01 ausgestellt hat und wie lange es gilt.

Nachschlagen Suchbegriffe für Handbuch, Herstellerdoku und RFC: ldapsearch · ldap server require strong auth · RFC 4511 · RFC 4513

Zu zweit Diese Aufgabe bearbeitet ihr zu zweit.

Befehle

Auf srv01:

sudo samba-tool ou create 'OU=Dienstkonten,OU=Schulungszentrum,DC=szt3,DC=internal'
sudo samba-tool user create svc-portal --userou='OU=Dienstkonten,OU=Schulungszentrum'
sudo samba-tool user setexpiry svc-portal --noexpiry

Zertifikat und Werkzeuge:

# auf srv01: Zertifikat der Samba-eigenen Zertifizierungsstelle
sudo cat /var/lib/samba/private/tls/ca.pem
# auf srv02: als vertrauenswuerdig eintragen
sudo nano /usr/local/share/ca-certificates/szt3-dc-ca.crt
sudo update-ca-certificates
sudo apt install ldap-utils

Abfragen von srv02:

# 1. ohne Verschluesselung
ldapsearch -H ldap://srv01.szt3.internal -x -D 'svc-portal@szt3.internal' -W \
  -b 'DC=szt3,DC=internal' '(sAMAccountName=svc-portal)' dn

# 2. mit StartTLS auf Port 389
ldapsearch -H ldap://srv01.szt3.internal -ZZ -x -D 'svc-portal@szt3.internal' -W \
  -b 'OU=Trainer,OU=Benutzer,OU=Schulungszentrum,DC=szt3,DC=internal' \
  '(&(objectCategory=person)(objectClass=user))' sAMAccountName displayName

# 3. mit LDAPS auf Port 636
ldapsearch -H ldaps://srv01.szt3.internal -x -D 'svc-portal@szt3.internal' -W \
  -b 'DC=szt3,DC=internal' '(sAMAccountName=G_Trainer)' member

openssl s_client -connect srv01.szt3.internal:636 </dev/null 2>/dev/null \
  | openssl x509 -noout -subject -issuer -dates
10.2Stellt das Schulungsportal mit nginx und HTTPS ins Netz
Jetzt seid ihr dran · Zu zweit · 5 Arbeitsschritte
zahlt ein auf AB 5
Öffnen ▾Schließen ▴

Aufgabe 10.2

Stufe I · Abfolge

Stellt das Schulungsportal mit nginx und HTTPS ins Netz:

  • Installiert nginx und legt eine einfache Startseite für das Portal an.
  • Erzeugt ein Zertifikat für portal.szt3.internal. Für den ersten Test reicht Weg A, selbst signiert; in Aufgabe 10.6 entscheidet ihr endgültig.
  • Legt die Site-Konfiguration unten an, aktiviert sie und prüft sie mit nginx -t.
  • Testet mit curl über HTTP und HTTPS, einmal ohne und einmal mit dem Zertifikat als vertrauenswürdig, und lest das Zertifikat mit openssl aus.
  • Testet von einem Windows-Client aus mit Test-NetConnection und im Browser. Notiert, was der Browser meldet.

Nachschlagen Suchbegriffe für Handbuch, Herstellerdoku und RFC: nginx server_name · ssl_certificate · subjectAltName · RFC 9110 Statuscodes

Zu zweit Diese Aufgabe bearbeitet ihr zu zweit.

Befehle und Konfiguration
# Weg A: selbst signiert
sudo openssl req -x509 -newkey rsa:3072 -sha256 -days 397 -nodes \
  -keyout /etc/ssl/private/portal.key -out /etc/ssl/certs/portal.crt \
  -subj "/CN=portal.szt3.internal" -addext "subjectAltName=DNS:portal.szt3.internal"
# /etc/nginx/sites-available/portal
server {
    listen 80;
    server_name portal.szt3.internal;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name portal.szt3.internal;
    ssl_certificate     /etc/ssl/certs/portal.crt;
    ssl_certificate_key /etc/ssl/private/portal.key;
    ssl_protocols TLSv1.2 TLSv1.3;
    root /var/www/portal;
    index index.html;
}
sudo apt install nginx
sudo mkdir -p /var/www/portal
sudo nano /var/www/portal/index.html
sudo ln -s /etc/nginx/sites-available/portal /etc/nginx/sites-enabled/portal
sudo nginx -t
sudo systemctl reload nginx

curl -I http://portal.szt3.internal
curl -I https://portal.szt3.internal
curl -I --cacert /etc/ssl/certs/portal.crt https://portal.szt3.internal
openssl s_client -connect portal.szt3.internal:443 -servername portal.szt3.internal </dev/null 2>/dev/null \
  | openssl x509 -noout -subject -issuer -dates -ext subjectAltName

Windows (PowerShell):

Test-NetConnection portal.szt3.internal -Port 443
curl.exe -I https://portal.szt3.internal
10.3Richtet Postfix und Dovecot nur für interne Benachrichtigungen ein
Jetzt seid ihr dran · Zu zweit · 5 Arbeitsschritte
zahlt ein auf AB 5
Öffnen ▾Schließen ▴

Aufgabe 10.3

Stufe II · Algorithmus

Richtet Postfix und Dovecot nur für interne Benachrichtigungen ein:

  • Installiert postfix, dovecot-imapd und swaks und legt das lokale Konto trainer an.
  • Legt fest und begründet, welche Werte ihr für myhostname, mydomain, myorigin, mydestination, mynetworks, relayhost und default_transport setzt, damit Postfix nur an @szt3.internal zustellt. Setzt sie mit postconf -e.
  • Sorgt dafür, dass Postfix und Dovecot dasselbe Postfachformat nutzen, und erzwingt TLS für IMAP.
  • Schickt eine Testmail an trainer@szt3.internal und eine an eine Adresse außerhalb. Lest in mail.log, was mit beiden passiert.
  • Ruft das Postfach über IMAPS ab und prüft, ob die Testmail da ist.

Nachschlagen Suchbegriffe für Handbuch, Herstellerdoku und RFC: postconf mydestination · default_transport error · Postfix Running inside an intranet · Dovecot mail_location · RFC 5321

Zu zweit Diese Aufgabe bearbeitet ihr zu zweit.

Testbefehle
swaks --to trainer@szt3.internal --from portal@szt3.internal \
  --server srv02.szt3.internal --header 'Subject: Test Benachrichtigung'
swaks --to test@example.org --from portal@szt3.internal --server srv02.szt3.internal
sudo tail -n 20 /var/log/mail.log
mailq
sudo doveadm auth test trainer
openssl s_client -connect srv02.szt3.internal:993 -quiet
10.4Lest die Protokolle mit und findet die Stelle in der RFC
Jetzt seid ihr dran · Zu zweit · 5 Arbeitsschritte
zahlt ein auf AB 6
Öffnen ▾Schließen ▴

Aufgabe 10.4

Stufe II · Algorithmus

Lest die Protokolle mit und findet die Stelle in der RFC:

  • Führt einen SMTP-Dialog von Hand mit telnet oder swaks und kopiert ihn ins Protokoll (Muster unten).
  • Ordnet jeden Antwortcode dem Abschnitt in RFC 5321 zu und schreibt in eigenen Worten, was er bedeutet.
  • Fragt mit dig einen Namen ab und erklärt die Flags im Kopf der Antwort mit RFC 1035, Abschnitt 4.1.1.
  • Schneidet mit tcpdump eine DNS-Anfrage und eine DHCP-Verlängerung mit. Ordnet jedem Paket Transportprotokoll, Ports und OSI-Schicht zu.
  • Begründet in zwei Sätzen, warum ihr TLS keiner einzelnen OSI-Schicht sicher zuordnen könnt.

Nachschlagen Suchbegriffe für Handbuch, Herstellerdoku und RFC: RFC 5321 4.2 · RFC 1035 4.1.1 · tcpdump · OSI-Modell

Zu zweit Diese Aufgabe bearbeitet ihr zu zweit.

Muster: SMTP-Dialog und DNS-Antwort
$ telnet srv02.szt3.internal 25
220 srv02.szt3.internal ESMTP Postfix (Ubuntu)
EHLO ra-01.szt3.internal
250-srv02.szt3.internal
250-PIPELINING
250-SIZE 10240000
250-STARTTLS
250 8BITMIME
MAIL FROM:<portal@szt3.internal>
250 2.1.0 Ok
RCPT TO:<trainer@szt3.internal>
250 2.1.5 Ok
DATA
354 End data with <CR><LF>.<CR><LF>
Subject: Kurs gebucht

Kurs Schlepper 1, Freitag, Raum A.
.
250 2.0.0 Ok: queued as 4C1F2A3B5D
QUIT
221 2.0.0 Bye
$ dig @10.30.0.10 srv02.szt3.internal
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 31027
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;srv02.szt3.internal.        IN  A
;; ANSWER SECTION:
srv02.szt3.internal.  900    IN  A   10.30.0.11
;; SERVER: 10.30.0.10#53(10.30.0.10) (UDP)
sudo tcpdump -ni ens18 -vv 'port 67 or port 68'     # auf srv02, dann am Client ipconfig /renew
sudo tcpdump -ni ens18 port 53                         # auf srv01, dann am Client nslookup
10.5Schreibt das Testprotokoll für alle sechs Dienste
Jetzt seid ihr dran · Im Team · 4 Arbeitsschritte
zahlt ein auf AB 6
Öffnen ▾Schließen ▴

Aufgabe 10.5

Stufe II · Algorithmus

Schreibt das Testprotokoll für alle sechs Dienste:

  • Legt die Tabelle mit den Spalten aus dem Lernprodukt an, eine Zeile je Dienst und Test.
  • Testet jeden Dienst von einem Linux-Client und von einem Windows-Client aus, jeweils Erreichbarkeit (Port) und Funktion (Antwort).
  • Prüft auf srv01 und srv02 mit ss -tulpn, welcher Prozess auf welchem Port lauscht, und vergleicht mit der Tabelle.
  • Lasst eine andere Person aus eurem Team drei Zeilen blind wiederholen und bessert nach, wo es nachfragen musste.

Nachschlagen Suchbegriffe für Handbuch, Herstellerdoku und RFC: ss -tulpn · Test-NetConnection · Resolve-DnsName

Im Team Diese Aufgabe bearbeitet ihr im Team.

10.6Entscheidet, welches Zertifikat das Portal für die Übergabe bekommt
Jetzt seid ihr dran · Im Team · 4 Arbeitsschritte
zahlt ein auf AB 5
Öffnen ▾Schließen ▴

Aufgabe 10.6

Stufe III · Heuristik

Entscheidet, welches Zertifikat das Portal für die Übergabe bekommt:

  • Stellt die beiden Wege gegenüber: selbst signiert und eine kleine interne Zertifizierungsstelle, deren Stammzertifikat per Gruppenrichtlinie auf die Windows-Clients kommt.
  • Bewertet beide nach Sicherheit, Aufwand bei Einrichtung und Verlängerung, Verhalten der Nutzer und Folgen für HLG-Notebooks, die nicht in der Domäne sind.
  • Entscheidet euch, setzt den gewählten Weg um und prüft im Browser eines Windows-Clients.
  • Schreibt auf, wann das Zertifikat abläuft und wer es verlängert. Das wird ein Eintrag im Betriebshandbuch in Teil 6.

Nachschlagen Suchbegriffe für Handbuch, Herstellerdoku und RFC: Gruppenrichtlinie Vertrauenswürdige Stammzertifizierungsstellen · openssl x509 -req · basicConstraints

Im Team Diese Aufgabe bearbeitet ihr im Team.

Weg B als Befehlsfolge
# Weg B: kleine interne Zertifizierungsstelle (Schluessel offline aufbewahren)
openssl req -x509 -newkey rsa:4096 -sha256 -days 3650 -nodes \
  -keyout szt3-ca.key -out szt3-ca.crt -subj "/CN=SZT3 Interne CA" \
  -addext "basicConstraints=critical,CA:TRUE" -addext "keyUsage=critical,keyCertSign,cRLSign"
openssl req -newkey rsa:3072 -nodes -keyout portal.key -out portal.csr -subj "/CN=portal.szt3.internal"
printf "subjectAltName=DNS:portal.szt3.internal\nextendedKeyUsage=serverAuth\n" > portal.ext
openssl x509 -req -in portal.csr -CA szt3-ca.crt -CAkey szt3-ca.key -CAcreateserial \
  -days 397 -sha256 -extfile portal.ext -out portal.crt
10.7Entscheidet, wie sich Trainerinnen und Trainer am Portal anmelden
Jetzt seid ihr dran · Im Team · 4 Arbeitsschritte
zahlt ein auf AB 5
Öffnen ▾Schließen ▴

Aufgabe 10.7

Stufe III · Heuristik

Entscheidet, wie sich Trainerinnen und Trainer am Portal anmelden:

  • Sammelt drei Wege: eigene Konten im Portal, Prüfung von Benutzername und Passwort per LDAP gegen Samba, Anmeldung ohne Passworteingabe über Kerberos.
  • Bewertet jeden Weg: Was muss am Portal, an srv01 und an den Clients eingerichtet werden, und was passiert, wenn ein Trainer die Firma verlässt?
  • Prüft für den LDAP-Weg, welche Verbindung, welches Konto und welche Gruppe ihr nehmen würdet, und testet den Bind eines Trainerkontos mit ldapsearch.
  • Schreibt eure Empfehlung in fünf Sätzen an die Leitung Schulung.

Im Team Diese Aufgabe bearbeitet ihr im Team.

Veränderter Fall

zahlt ein auf AB 5

Die Ansprechpartnerin von HLG möchte, dass Buchungsbestätigungen auch an die Firmenadressen ihrer Leute außerhalb gehen. Was müsstet ihr an Postfix, an DNS und an euren Absprachen ändern, und wer muss zustimmen?