# Vogel # 300 - Plattformübergreifende Dienste in ein Netzwerk integrieren # Marktplatz - WPAD [![image.png](https://bbw.schule/uploads/images/gallery/2024-03/scaled-1680-/V9rDHwgeEIFI6fVL-image.png)](https://bbw.schule/uploads/images/gallery/2024-03/V9rDHwgeEIFI6fVL-image.png)
**Was passiert bei DHCP Discovery?** **Kurzfassung**
Bei DHCP wird eine bestimmte Option weitergegeben WPAD DHCP Option = 252
Diese Option enthält den DNS Namen oder direkt die IP auf der die WPAD Konfiguration liegt Value = «example.com»
Die normale Abfrage erfolgt über den Link auf der rechten Seite. Webserver = «http(s)://example.com/wpad.dat»
**Was passiert bei DNS Discovery?** **Kurzfassung**
Der Host führt einen Reverse-Lookup auf sich selbst durch und findet so seinen FQDN heraus. 1.2.3.4 è host-1-2-3-4.pop1.isp.net
Der Host prüft dann, ob es einen WPAD-Eintrag in der gleichen Domain gibt. wpad.pop1.isp.net
Wenn er nichts findet, sind die meisten Clients so konfiguriert, dass sie einen Fallback verwenden, d.h. sie prüfen, ob die übergeordnete Domain einen WPAD-Eintrag hat. wpad.isp.net
Wurde der Eintrag gefunden, wird die WPAD-Datei wie bei DHCP abgerufen. Webserver = «http(s)://wpad.isp.net/wpad.dat»
**Vorteile** **Nachteile**
Automatische Konfiguration Sicherheitsrisiken (Überwachung von Traffic)
Netzwerkmanagement (Zentrales Steuern des Internetzugriffes) Fehlkonfigurationen
Flexibilität (Änderungen sind schnell umsetzbar) Komplexität
Entstehungsgeschichte: Das Web Proxy Auto-Discovery Protocol (WPAD) wurde in den späten 1990er Jahren entwickelt, um die automatische Erkennung von Web-Proxy-Servern in Netzwerken zu ermöglichen und die Konfiguration von Client-Computern zu vereinfachen. Es wurde ursprünglich von Microsoft unterstützt und in Produkten wie Internet Explorer integriert, bevor es zu einem weit verbreiteten Standard für die automatische Proxy-Konfiguration in verschiedenen Betriebssystemen und Browsern wurde. # Marktplatz - DHCP [![image.png](https://bbw.schule/uploads/images/gallery/2024-03/scaled-1680-/wnLsPkRndfV2A6qk-image.png)](https://bbw.schule/uploads/images/gallery/2024-03/wnLsPkRndfV2A6qk-image.png) # Marktplatz - Kollaboration [![image.png](https://bbw.schule/uploads/images/gallery/2024-03/scaled-1680-/ipf4jLA6Pnzwuf2A-image.png)](https://bbw.schule/uploads/images/gallery/2024-03/ipf4jLA6Pnzwuf2A-image.png) ### Zweck Kollaborationstools wie Teams und Slack dienen dazu, die Kommunikation und Zusammenarbeit in Teams bzw. Unternehmen zu erleichtern. Kollaborationstools bieten unter anderem folgende Funktionen: - Chat - Dateifreigabe - Videoanrufe - Aufgabenmanagement Sie bieten auch Integrationen mit anderen Tools, um die Effizienz und Produktivität bei der Zusammenarbeit (→ Kollaboration) zu steigern. ### Entstehung Es ist schwer zu bestimmen, welches das erste Kollaborationstool war. Tools für die Zusammenarbeit gibt es schon seit eh und je, beispielsweise kann man die E-Mail-Kommunikation als grobe Form von Kollaboration sehen. Ein Pionier für die Kollaboration ist Lotus Notes von IBM, welches in den 1980er Jahren entwickelt wurde. Lotus Notes ermöglicht das Erstellen, Teilen und gemeinsame Bearbeiten von Dokumenten. Zudem ermöglichte Lotus Notes, einen Gruppenkalender zu führen. Dieses Kollaborationstool gibt es heute noch, jedoch wird es seit 2019 unter dem Namen HCL Notes weiterentwickelt. ### Funktionsweise Heute werden die meisten Kollaborationstools als Software as a Service (SaaS) angeboten. Die Infrastruktur von Skype for Business, dem Vorgänger von Teams, konnte man noch On-Premise betreiben. Diese Möglichkeit wurde jedoch mit dem Rollout von Teams abgeschafft und kann nur noch als SaaS bezogen werden. [![image.png](https://bbw.schule/uploads/images/gallery/2024-03/scaled-1680-/CIcziUwzmiO1eDT2-image.png)](https://bbw.schule/uploads/images/gallery/2024-03/CIcziUwzmiO1eDT2-image.png) ### Produkte
[![image.png](https://bbw.schule/uploads/images/gallery/2024-03/scaled-1680-/Oqru9EzX2S1z8KQS-image.png)](https://bbw.schule/uploads/images/gallery/2024-03/Oqru9EzX2S1z8KQS-image.png) #### Microsoft Teams Teams ist eine Kollaborationsplattform, welche es Usern ermöglicht, in real-time miteinander zu kommunizieren und arbeiten. Es ermöglicht Chat, Videoanrufe, Dateifreigabe, Aufgabenverwaltung und die Zusammenarbeit an Dokumenten in einer einzigen Software. Teams ist das weitverbreitetste Kollaborationstool und wird vor allem von Schulen und Unternehmen verwendet.
[![image.png](https://bbw.schule/uploads/images/gallery/2024-03/scaled-1680-/MiSSBUyLYYj69DTj-image.png)](https://bbw.schule/uploads/images/gallery/2024-03/MiSSBUyLYYj69DTj-image.png) #### Slack Slack ist hauptsächlich eine Messaging-Plattform, welche für den Datei- & Informationsaustausch verwendet wird. Man kann verschiedene Kanäle und Gruppen erstellen, was die Organisation und den Überblick enorm erleichtert. Gleich wie bei Teams ist Slack nur als SaaS erhältlich und hat verschiedene Abonnementmöglichkeiten.
[![image.png](https://bbw.schule/uploads/images/gallery/2024-03/scaled-1680-/AggTC9B1SuzY28tV-image.png)](https://bbw.schule/uploads/images/gallery/2024-03/AggTC9B1SuzY28tV-image.png) #### Google Workspace Google Workspace ist eine Suite von verschiedenen Kollaborationstools im Web (SaaS). Folgende Tools sind die wichtigsten: **Gmail** Mail-Lösung **Google** Drive Cloudspeicher & Dateifreigabe **Google** Meet Videokonferenzplattform **Google** Calendar Kalender-Lösung
### Anwendungsfall Ein neuer Virus, COVID-20, bricht aus. Alle Mitarbeiter müssen wieder ins Homeoffice verlegen. Die Arbeitsmoral und die Produktivität sinken, Projekte werden verzögert. Mitarbeiter kommen nicht mehr in den Austausch miteinander. Durch die Einführung von MS Teams kommt man wieder täglich in den Austausch mit anderen Mitarbeitern. Dazu könnte man zum Beispiel ein Daily Standup einführen. (Projekt-)Meetings kann man Dank Teams (fast) wie gewohnt durchführen. Die Zusammenarbeit kann durch das Teilen von Dateien ebenfalls gewährleistet werden. Schauen sie nur, wie fröhlich alle Mitarbeiter wieder sind: [![image.png](https://bbw.schule/uploads/images/gallery/2024-03/scaled-1680-/tiiRUhwdEHY44vTR-image.png)](https://bbw.schule/uploads/images/gallery/2024-03/tiiRUhwdEHY44vTR-image.png) ### Plattformübergreifend? Natürlich! Kollaborationstools würden ihren Zweck nicht erfüllen, wenn ein Teamkollege mit einem MacOS ausgeschlossen werden würde. Die Tools sind meistens auf jedem gängigen Desktop OS (Windows, MacOS, Linux), sowie Mobile OS (iOS, Android) erhältlich. Zudem kann man sich im Web einloggen und eine teils abgespeckte Version ist im Browser erhältlich. # Marktplatz - Mailempfang ### Zweck E-Mail ist eine der am häufigsten verwendeten Kommunikationsmethoden in der heutigen digitalen Welt und wird für persönliche und geschäftliche Zwecke genutzt. Der Mailempfang dient dazu, EMails von anderen Personen oder Systemen zu empfangen und in einem E-Mail-Postfach anzuzeigen, damit man sie lesen und darauf antworten kann. [![image.png](https://bbw.schule/uploads/images/gallery/2024-03/scaled-1680-/XZw6wE1iKBTZUgKG-image.png)](https://bbw.schule/uploads/images/gallery/2024-03/XZw6wE1iKBTZUgKG-image.png) ### Entstehung E-Mail ist eine wichtige Erfindung für die Kommunikation. Früher haben die Leute Nachrichten per Brief, Telegramm oder Fax verschickt. Dann, Ende der 1980er Jahre, hat sich die E-Mail auf der ganzen Welt verbreitet, besonders durch das Arpanet. Ein Mann namens Ray Tomlinson gilt als Erfinder, weil er 1971 den ersten elektronischen Brief verschickt hat. Heute benutzen wir oft SMTP, um E-Mails zu verschicken, und es gibt verschiedene Wege, um E-Mails abzurufen, wie zum Beispiel POP3, IMAP und Webmail. ### Funktionsweise Die Funktionsweise des Mailempfangs beinhaltet das Synchronisieren der E-Mails von einem Mailserver zu einem Mail-Client. Es basiert auf verschiedenen Protokollen, die für den Austausch von E-Mails zwischen Servern und Clients verwendet werden. Das häufigste Protokoll für den Mailempfang ist das Internet Message Access Protocol (IMAP) oder das Post Office Protocol (POP). #### Vergleich IMAP / POP ##### IMAP IMAP ermöglicht es, E-Mails auf dem Server zu lassen und sie synchronisiert zwischen Server und Client zu halten. Dies ist nützlich, wenn man von mehreren Geräten auf ein E-Mail-Konto zugreifen möchte, da der Zustand der E-Mails überall gleich bleibt. ##### POP Bei POP werden E-Mails vom Server auf den Client heruntergeladen und vom Server gelöscht. Es ist eine einfachere Methode, die für Offline-Zugriff geeignet ist. Ein Anwendungsfall für POP3 ist das Abrufen von E-Mails aus einem Ticketsystem. Dabei ist es nicht erforderlich, dass die E-Mails der bearbeiteten Tickets weiterhin auf dem Mailserver bestehen bleiben.
**IMAP****POP3**
Verbindung auf Port 143 (Verschlüsselt: 993)Verbindung auf Port 110 (Verschlüsselt: 995)
Dauerhafte VerbindungVerbindung nur zum E-Mail-Abruf
Antwort auf Kommandos wird nicht abgewartetKommandos benötigen sofortige Antwort
E-Mails bleiben auf dem Server, bis sie gelöscht werdenE-Mails werden nach erfolgreichem Abrufen vom Mailserver gelöscht
Abruf der Nachrichten von mehreren Clients möglichAbruf der Nachrichten nur von einem einzige Client möglich
Nur gewünschte Mails werden abgerufenAlle erhaltenen Mails werden abgerufen
[![image.png](https://bbw.schule/uploads/images/gallery/2024-03/scaled-1680-/i5rIbznBCkY4Pw7S-image.png)](https://bbw.schule/uploads/images/gallery/2024-03/i5rIbznBCkY4Pw7S-image.png) ### Produkte Es gibt eine Vielzahl von E-Mail-Client-Software und Dienstleistern, die den Mailempfang ermöglichen. Einige der bekanntesten sind Microsoft Outlook, Mozilla Thunderbird, Mailbird und viele mehr. Darüber hinaus bieten verschiedene Unternehmen E-Mail-Hosting-Dienste an, die den Mailempfang auf Serverebene ermöglichen. ### Anwendungsfall Ein Anwendungsfall für plattformübergreifenden Mailempfang könnte die Verwaltung von GeschäftsE-Mails sein. Ein Mitarbeiter, der mehrere Geräte und Plattformen nutzt, muss in der Lage sein, EMails nahtlos auf verschiedenen Geräten wie Desktops, Laptops, Tablets und Smartphones zu empfangen und zu verwalten. Eine plattformübergreifende Maillösung würde es ermöglichen, dass alle eingehenden E-Mails unabhängig vom Gerät oder der Plattform sofort empfangen und bearbeitet werden können. Dies würde die Effizienz und Produktivität in geschäftlichen Kommunikationsprozessen verbessern, unabhängig davon, welches Gerät gerade genutzt wird. ### Plattformübergreifend? E-Mails können von verschiedenen Geräten und Betriebssystemen empfangen werden, da standardisierte Protokolle wie SMTP, POP3 und IMAP von Mail-Clients auf allen Betriebssystemen unterstützt werden. Dies ermöglicht eine reibungslose und universelle E-Mail-Kommunikation, unabhängig vom verwendeten Gerät oder Betriebssystem. # Marktplatz - Datenbanken ### Wozu dient’s? Für effiziente, dauerhafte und fehlerfreie Speicherung großer Datenmengen sowie in der bedarfsgerechten Bereitstellung benötigter Informationen. ### Wie entstand’s? IBM hat die ersten grossen DBMS (Datenbank Management System) erfunden. (1970) NoSQL kam in den 2000ern richtig auf. ### Wie funktioniert’s? [![image.png](https://bbw.schule/uploads/images/gallery/2024-03/scaled-1680-/AiInhXVQyuYkIDwx-image.png)](https://bbw.schule/uploads/images/gallery/2024-03/AiInhXVQyuYkIDwx-image.png) # Marktplatz - HTTP 1989-XXXX HTTP wurde zusammen mit dem WWW für Zugriffe auf Webserver entwickelt. Durch die Standardisierung des Protokolls wird es bis heute in der HTTPS Variante eingesetzt. Mit sogenannten Methods können verschiedene Arten von Anfragen an einen Server gesendet werden. ##### Client Jeglicher moderner Browser oder cli. ##### Server nginx, Apache, Flask, IIS # Marktplatz - GOPHER 1991-1993 Daten Zugriff ohne Authentifizierung für Universitäten und Regierungen. Als Ersatz für das aufwendige File Transfer Protokoll. Nachdem OS Visuell besser wurden und FTP sich weiterentwickelte starb das Protokoll aus. Unteranderem weil Spezielle Browser für den Zugriff nötig waren da HTTP nicht verwendet wurde. ##### Client Veronica. Ein Browser mit den Nötigen Tools. ##### Server Gopherd # Marktplatz - Mailversand ##### Wozu dient’s? Der Mailversand ist eine essenzielle elektronische Form der Kommunikation für die zwischen zwei Benutzern, welches durch das Internet oder Private Netzwerk versendet werden. Ausserdem dient es zu wohl als Austausch von Informationen, Dateien und Dokumenten. [![image.png](https://bbw.schule/uploads/images/gallery/2024-03/scaled-1680-/aUJL8L4aHEVjPSth-image.png)](https://bbw.schule/uploads/images/gallery/2024-03/aUJL8L4aHEVjPSth-image.png) ##### Wie entstand’s? **1965** Vermutlich wurde das erste E-Mail-System «Mailbox» am Institut für Technologie in Massachusetts in den USA verwendet. Die Methodik war an diesem Zeitpunkt, dass die Kollegen an den Computern sich gegenseitig eine Nachricht hinterlassen konnten, welches beim nächsten Login angezeigt wird. **1971** 1971 versandte Ray Tomlinson die erste E-Mail im heutigen Sinne, wobei er das @-Zeichen auswählte, um den lokalen Teil von der Domain zu trennen. Er schickte sich selbst eine Nachricht und kreierte somit die erste E-Mail-Adresse der Welt: "tomlinson@bbntenexa". **1984** Auch in Deutschland wurde die erste E-Mail empfangen. Michael Rotert von der Universität Karlsruhe empfing unter seiner eigenen E-Mail-adresse «rotert@germany» eine E-Mail aus den USA, welches 1 Tag zuvor geschickt wurde. Die Antwort kam vom der US Plattform CSNET und lautete «Wilkommen in CSNET! Michael, this is your official welcome to CSNET.» **1996** Auch mit dem Bereitstellen des Internetszugangs in den 90er, bereitstellte sich Mit Hotmail (heute Outlook) stand der Allgemeinheit der erste kostenfreie E-Mail-Anbieter zur Verfügung! Nun konnte man sich selbst eine Adresse anlegen und mit verschiedenem Benutzer kommunizieren. In kürzester Zeit stellten sich weitere Provider auf den Markt. **Heute** Heute ist der Mailvesand nicht mehr wegzudenken. Nachrichten, Dateien und Dokumente werden alltäglich über die Breite Welt versendet. Im Privaten, sowie im Geschäftlichen Teil, ist der Mailversand sehr praktisch für den Austausch. ##### Wie funktioniert’s? Simple Mail Transfer Protocol (SMTP) [![image.png](https://bbw.schule/uploads/images/gallery/2024-03/scaled-1680-/9TcRuOjVwUxoeyh1-image.png)](https://bbw.schule/uploads/images/gallery/2024-03/9TcRuOjVwUxoeyh1-image.png) ##### Überlegen Sie sich einen sinnvollen Anwendungsfall Ein sinnvoller Anwendungsfall für den Mailversand ist beispielsweise die Kommunikation in einem Unternehmen. Mitarbeiter können E-Mails verwenden, um Informationen auszutauschen, Projektupdates zu teilen, Termine zu vereinbaren und wichtige Dokumente zu versenden. Durch die Verwendung von E-Mail können Mitarbeiter effizient kommunizieren, ohne physisch am selben Ort sein zu müssen. [![image.png](https://bbw.schule/uploads/images/gallery/2024-03/scaled-1680-/YhA0XDmpzlIMaFxU-image.png)](https://bbw.schule/uploads/images/gallery/2024-03/YhA0XDmpzlIMaFxU-image.png) ##### Plattformübergreifend? der Mailversand ist in der Regel plattformübergreifend. E-Mails können von verschiedenen Geräten und Betriebssystemen gesendet und empfangen werden, solange sie über einen Internetzugang verfügen und mit einem kompatiblen E-Mail-Client oder Webmail-Dienst verbunden sind. Dies ermöglicht eine nahtlose Kommunikation zwischen Benutzern unabhängig von ihren Geräten oder Betriebssystemen. [![image.png](https://bbw.schule/uploads/images/gallery/2024-03/scaled-1680-/WyjlZ1w4zKRQsSUp-image.png)](https://bbw.schule/uploads/images/gallery/2024-03/WyjlZ1w4zKRQsSUp-image.png) # Marktplatz - FTP ##### Aufgabe / Dienst Wie der Name (Dateitransfer) schon sagt, ermöglicht er es den Austausch von Befehlen und Daten zwischen einem Computer / Programm und dem Server. [![image.png](https://bbw.schule/uploads/images/gallery/2024-03/scaled-1680-/wSq2j5DudXiiWtcS-image.png)](https://bbw.schule/uploads/images/gallery/2024-03/wSq2j5DudXiiWtcS-image.png) ##### Entstehung Das FTP-Protokoll wurde damals 1971 von einem IT-Student mit dem Namen Abhay Bhushan entwickelt. Ursprünglich sollte das Protokoll den Austausch zwischen Computer im ARPANET ermöglichen. [![image.png](https://bbw.schule/uploads/images/gallery/2024-03/scaled-1680-/hZY1UQBd7ICEfDu1-image.png)](https://bbw.schule/uploads/images/gallery/2024-03/hZY1UQBd7ICEfDu1-image.png) ARPANET: Das Arpanet war damals ein Computernetzwerk, welches von der US AirForce genutzt worden ist, es ist bekannt als der Vorgänger des heutigen Internets ##### Funktionalität [![image.png](https://bbw.schule/uploads/images/gallery/2024-03/scaled-1680-/5gJzrCejkDaC432Z-image.png)](https://bbw.schule/uploads/images/gallery/2024-03/5gJzrCejkDaC432Z-image.png) Die Verbindung zu einem FTP-Server, verläuft wie oben abgebildet, über 2 Kanäle. Datenkanal: Hier werden Dateien übertragen. Steuerkanal: Hier werden Kommandos und Befehle übertragen. ##### FTP Produkte Hier in der Tabelle sieht man 9 verschiedene Produkte, Lösungen welche man beziehen kann, wenn man einen FTP Server betreiben möchte.
**Name****Erscheinungsjahr****Entwickler****Plattform****Kosten**
Commander One2015Eltima SoftwaremacOS 29,99 $
Cyberduck2002IterateWindows, macOSKostenfrei
FileZilla2001Tim KosseWindows, macOS, LinuxKostenfrei
FireFTP2004Mime CuvaloPlattformübergreifendKostenfrei
ForkLift 2007BinaryNightsmacOS29,95 $
SmartFTP2001SmartSoft Ltd.Windows40$ / Jahr
Transmit1998 PanicmacOS45 $
WinSCP2000Martin PrikryWindowsKostenfrei
WISE-FTP1998AceBITWindows50 $
##### Anwendungsfall Typischerweise benutzt man den FTP-Server, wenn man eine sehr grosse Menge an Dateien versenden/hochladen möchte. Ablauf: 1. Der Benutzer stellt per IP-Adresse und Port, eine Verbindung zum FTP-Server her. Der Server antwortet anschliessend darauf, das die Verbindung erfolgreich war. 2. Der Benutzer authentifiziert sich nun auf dem Server mit Benutzername und Passwort. 3. Der Benutzer kann nun Befehle auf dem FTP-Server ausführen, z.B. hochladen, herunterladen oder löschen. Anwendungsfall wäre nun, wenn jemand ganz viele Bilder von einem Firmenevent versenden möchte, funktioniert dies über das Mail z.B. nicht. Nun kann der Benutzer, diese Bilder auf den FTP-Server hochladen. All diejenigen, welche diese dann benötigen, können sich auf den Server anmelden und diese Bilder herunterladen. [![image.png](https://bbw.schule/uploads/images/gallery/2024-03/scaled-1680-/2RXhNX8JZ6kpcAoQ-image.png)](https://bbw.schule/uploads/images/gallery/2024-03/2RXhNX8JZ6kpcAoQ-image.png) ##### Plattformübergreifend Dies ist von Produkt zu Produkt unterschiedlich, wie oben in der Tabelle dargestellt, kann man dort sehen welches Produkt für welche Plattformen geeignet ist. # DHCP-Auftrag ## Aufgabenstellung ### Erstellung eines Netzwerklabors ##### 1. Vorbereitung der Geräte:
- Ein Debian Linux-Server wird aufgesetzt, um als DHCP-Server zu fungieren.
- Ein Router wird ausgesetzt der die zwei Subnetze verbindet und zur gleichen Zeit als Gateway ins Internet dient.
- Zwei Windows-PCs werden vorbereitet, um als DHCP-Client zu dienen (Einer im gleichen Subnetz und der andere im DHCP-Relay Subnetz).
##### 2. Netzwerksetup:
- Auf dem Router werden drei Netzwerk-Interfaces eingerichtet: eines für das interne Netzwerk (intnet) mit der Subnetzmaske 192.168.1.0/26, eines für das interne Netzwerk (DHCP-Relay) und eines für die Internetverbindung (externe DHCP-Zuweisung).
### Einrichtungen und Konfiguration des DHCP-Servers ##### 1. Server-Setup auf Debian:
- Der ISC DHCP Server wird auf dem Debian-System installiert.
##### 2. Server-Konfiguration:
- Der DHCP-Server wird so konfiguriert, dass er dem Windows-Client basierend auf dessen MAC-Adresse eine feste IP-Adresse zuweist. Dem Windows-Client wird eine feste IP im intnet-Netzwerk zugewiesen (z.B. 192.168.1.9/26).
##### 3. Überprüfung:
- Der DHCP-Server wird gestartet, um zu überprüfen, ob der Client eine IP-Adresse erhält.
- Mithilfe von Wireshark wird der DHCP-Kommunikationsprozess zwischen Server und Client aufgezeichnet und analysiert. Also es wird mit der Wikipedia Grafik abgeglichen.
### Erweiterte Konfiguration und Analyse ##### 1. DHCP-Relay:
- Es wird mit der Einrichtung eines DHCP-Relays auf Linux oder in einer simulierten Umgebung wie Packet Tracer experimentiert, um den Prozess der Weiterleitung von DHCP-Anfragen über verschiedene Netzwerke hinweg zu verstehen.
##### 2. Vergleich von DHCP-Implementierungen:
- Die Unterschiede zwischen verschiedenen DHCP-Server-Implementierungen, wie udhcpd und isc-dhcp-server, werden durch praktische Tests und Vergleiche ermittelt.
##### 3. Fortgeschrittene Server-Optionen:
- Fortgeschrittene Konfigurationsmöglichkeiten des isc-dhcp-Servers, wie die Gruppierung von Geräten basierend auf Hersteller-spezifischen Informationen, werden erkundet und umgesetzt.
[![image.png](https://bbw.schule/uploads/images/gallery/2024-03/scaled-1680-/nXM1C1GcEx2U9zQK-image.png)](https://bbw.schule/uploads/images/gallery/2024-03/nXM1C1GcEx2U9zQK-image.png) [DHCP Auftrag.excalidraw](https://bbw.schule/attachments/4) ## Theorie #### Grundlagen zu DHCP Das Dynamic Host Configuration Protocol (DHCP) ist ein Netzwerkprotokoll, das in IP-Netzwerken eingesetzt wird, um Computern und anderen Geräten automatisch IP-Adressen und weitere notwendige Netzwerkinformationen zuzuweisen. Dieser Prozess erleichtert die Netzwerkverwaltung erheblich, da die manuelle Konfiguration von Netzwerkgeräten in großen und dynamischen Netzwerken umständlich und fehleranfällig wäre. #### DHCP-Discover und DHCP-Offer Der DHCP-Vorgang beginnt mit einem DHCP-Discover-Paket, das ein Client ins Netzwerk sendet, um einen DHCP-Server zu finden. Dieses Paket wird als Broadcast gesendet, da der Client zu diesem Zeitpunkt noch keine IP-Adresse hat. DHCP-Server im Netzwerk antworten darauf mit einem DHCP-Offer-Paket, das dem Client eine IP-Adresse und eventuell weitere Konfigurationsparameter wie Subnetzmaske, DNS-Server und Standardgateway anbietet. #### DHCP-Request und DHCP-Acknowledgment Nachdem der Client ein oder mehrere Angebote erhalten hat, wählt er eines aus und sendet einen DHCP-Request zurück an den Server, um das Angebot anzunehmen. Der DHCP-Server bestätigt die Zuteilung der IP-Adresse und der Netzwerkeinstellungen mit einem DHCP-Acknowledgment. Erst nach diesem Schritt ist der Client vollständig im Netzwerk konfiguriert und kommunikationsfähig. #### DHCP-Relay In größeren Netzwerken oder Netzwerken mit mehreren Subnetzen ist es oft notwendig, DHCP-Anfragen über Router hinweg weiterzuleiten, da Broadcasts nicht durch Router weitergeleitet werden. Hier kommt das DHCP-Relay ins Spiel. Ein DHCP-Relay-Agent leitet DHCP-Pakete zwischen Clients und Servern über verschiedene Netzwerksegmente hinweg. So können Clients in einem Subnetz IP-Konfigurationen von einem DHCP-Server in einem anderen Subnetz erhalten. #### DHCP-Optionen DHCP ermöglicht die Verwendung verschiedener Optionen, um eine Vielzahl von Konfigurationsparametern zu übermitteln. Zu den gängigen Optionen gehören Router (Standardgateway), DNS-Server, NTP-Server und viele andere. Diese Optionen erlauben eine flexible und detaillierte Konfiguration der Client-Geräte und unterstützen spezifische Netzwerkanforderungen. ## Aufbau der Labor Umgebung ### vogelsrv42001 - Router (VYOS) [![image.png](https://bbw.schule/uploads/images/gallery/2024-03/scaled-1680-/OtSp0s7SBn1hiiaN-image.png)](https://bbw.schule/uploads/images/gallery/2024-03/OtSp0s7SBn1hiiaN-image.png) #### Grundkonfiguration ##### Aktivierung der permanenten Konfiguration Nach dem Einloggen mit den Zugangsdaten (Benutzername: vyos, Passwort: vyos) wurde VyOS dauerhaft auf der Festplatte installiert, indem den Anweisungen des Installationsassistenten gefolgt wurde. Dies gewährleistet, dass die Konfiguration auch nach einem Neustart erhalten bleibt. ```c++ install image ``` ##### Einrichten der Netzwerkschnittstellen Mit der abgeschlossenen Installation begann die Konfiguration der Netzwerkschnittstellen, Routing-Protokolle und NAT-Regeln: 1\. Starten des Konfigurationsmodus. ```c++ configure ``` 2. Konfiguration der Netzwerkschnittstellen mit festen IP-Adressen oder über DHCP und Zuweisung passender Beschreibungen: ```c++ set interfaces ethernet eth0 address dhcp set interfaces ethernet eth0 description 'OUTSIDE' set interfaces ethernet eth1 address 192.168.1.1/26 set interfaces ethernet eth1 description 'VOGEL_INTNET' set interfaces ethernet eth2 address 192.168.1.65/26 set interfaces ethernet eth2 description 'VOGEL_DHCP_RELAY' ``` 3\. Einrichten einer statischen Route für den Internetzugang durch Ersetzen von `` mit der IP des Gateways. ```c++ set protocols static route 0.0.0.0/0 next-hop ``` 4. Einrichten von NAT-Regeln, um internen Netzwerken Zugang zum Internet zu ermöglichen: ```c++ set nat source rule 100 outbound-interface name eth0 set nat source rule 100 source address 192.168.1.0/26 set nat source rule 100 translation address masquerade set nat source rule 101 outbound-interface name eth0 set nat source rule 101 source address 192.168.1.64/26 set nat source rule 101 translation address masquerade ``` 5. Anwenden und Speichern der Konfiguration: ```c++ commit save ``` ##### Überprüfung der Konfiguration Nach dem Speichern der Konfiguration erfolgte eine Überprüfung, um die korrekte Einrichtung sicherzustellen: 1. Überprüfung der Schnittstellenkonfiguration mittels Anzeige aller Konfigurationen der Schnittstellen, inklusive der zugewiesenen IP-Adressen und Beschreibungen. ```c++ show interfaces ``` [![image.png](https://bbw.schule/uploads/images/gallery/2024-03/scaled-1680-/3mRsO4PgerqRPM92-image.png)](https://bbw.schule/uploads/images/gallery/2024-03/3mRsO4PgerqRPM92-image.png) 2. Testen der Konnektivität und Routing-Einstellungen durch erfolgreiches Pingen der IP-Adresse 8.8.8.8 (Google DNS), was die korrekte Funktion der statischen Route und Internetverbindung bestätigte. ```c++ ping 8.8.8.8 ``` [![image.png](https://bbw.schule/uploads/images/gallery/2024-03/scaled-1680-/rcr2PyVdt5hjUGxI-image.png)](https://bbw.schule/uploads/images/gallery/2024-03/rcr2PyVdt5hjUGxI-image.png) 3. Überprüfung der NAT-Regeln, wobei der entsprechende Befehl die konfigurierten NAT-Regeln und ihre Details anzeigte, was bestätigte, dass das NAT korrekt eingerichtet wurde. ```c++ show nat source rules ``` [![image.png](https://bbw.schule/uploads/images/gallery/2024-03/scaled-1680-/Tndmhus4EMSux89h-image.png)](https://bbw.schule/uploads/images/gallery/2024-03/Tndmhus4EMSux89h-image.png) ### vogelsrv42002 - Ubuntu-Server (ISC-DHCP) [![image.png](https://bbw.schule/uploads/images/gallery/2024-03/scaled-1680-/1eZuB9GqdTV22cqq-image.png)](https://bbw.schule/uploads/images/gallery/2024-03/1eZuB9GqdTV22cqq-image.png) #### Grundkonfiguration ##### Überprüfen der aktuellen Netzwerkkonfiguration (Normalerweise nicht nötig): Öffnen eines Terminals auf dem Debian- oder Ubuntu-Server und Ausführen des Befehls `ip a` zur Anzeige der aktuellen Netzwerkeinstellungen und -schnittstellen. ```bash ip a ``` [![image.png](https://bbw.schule/uploads/images/gallery/2024-03/scaled-1680-/C4y6JvvUM7GucKTK-image.png)](https://bbw.schule/uploads/images/gallery/2024-03/C4y6JvvUM7GucKTK-image.png) ##### Konfiguration der Netzwerkschnittstelle ens33 Ziel war es, die Schnittstelle ens33 mit einer statischen IP-Adresse einzurichten, durch Bearbeitung der Netplan-Konfigurationsdatei in einem Texteditor wie nano. ```bash nano /etc/netplan/00-installer-config.yaml ``` Hinzufügen eines Abschnitts zur Datei, der ens33 eine statische IP-Adresse zuweist. ```yaml # This is the network config written by 'subiquity' network: ethernets: ens33: dhcp4: no addresses: [192.168.1.2/26] routes: - to: default via: 192.168.1.1 nameservers: addresses: [1.1.1.1, 1.0.0.1] version: 2 ``` ##### Anwenden der Netzwerkkonfiguration Durch Ausführung des entsprechenden Befehls wurde ens33 mit der in der Netplan-Konfigurationsdatei festgelegten statischen IP-Adresse konfiguriert. ```bash sudo netplan apply ``` #### Einrichten und Konfigurieren eines DHCP-Servers ##### ISC-DHCP-Server Installation Zunächst erfolgte die Installation des ISC-DHCP-Servers durch Öffnen eines Terminals und Eingabe des Installationsbefehls. ```bash sudo apt install isc-dhcp-server ``` ##### DHCP-Server konfigurieren Die Hauptkonfigurationsdatei dhcpd.conf wurde mit einem Texteditor wie nano bearbeitet, um den DHCP-Server zu konfigurieren. ```bash nano /etc/dhcp/dhcpd.conf ``` Es wurde eine Basis-Konfiguration eingefügt, die eine Standard-Lease-Zeit und eine maximale Lease-Zeit festlegt. Ein Subnetz wurde definiert, das einen IP-Bereich für die DHCP-Clients bereitstellt. ```c # minimal sample /etc/dhcp/dhcpd.conf default-lease-time 600; max-lease-time 7200; subnet 192.168.1.0 netmask 255.255.255.192 { range 192.168.1.10 192.168.1.50; option routers 192.168.1.1; option domain-name-servers 1.1.1.1; } ``` ##### Netzwerkschnittstelle für DHCP festlegen Die isc-dhcp-server-Konfigurationsdatei wurde bearbeitet und die INTERFACES-Variable auf die entsprechende Schnittstelle gesetzt, in diesem Fall ens33. ```bash nano /etc/default/isc-dhcp-server ``` [![image.png](https://bbw.schule/uploads/images/gallery/2024-03/scaled-1680-/io0HlLB7TYyM5mAf-image.png)](https://bbw.schule/uploads/images/gallery/2024-03/io0HlLB7TYyM5mAf-image.png) ##### DHCP-Server neu starten Um die Änderungen anzuwenden, wurde der DHCP-Server neu gestartet. ```bash sudo systemctl restart isc-dhcp-server ``` ##### Überprüfung und Analyse Es wurde ein Client im selben Netzwerk getestet, um sicherzustellen, dass der DHCP-Server korrekt arbeitet. [![image.png](https://bbw.schule/uploads/images/gallery/2024-03/scaled-1680-/326brlVL4Xflomce-image.png)](https://bbw.schule/uploads/images/gallery/2024-03/326brlVL4Xflomce-image.png) ##### Konfiguration des DHCP-Servers mit Reservation Die Hauptkonfigurationsdatei dhcpd.conf wurde erneut bearbeitet, um den DHCP-Server weiter zu konfigurieren. ```bash nano /etc/dhcp/dhcpd.conf ``` ``` # minimal sample /etc/dhcp/dhcpd.conf default-lease-time 600; max-lease-time 7200; subnet 192.168.1.0 netmask 255.255.255.192 { range 192.168.1.10 192.168.1.50; option routers 192.168.1.1; option domain-name-servers 1.1.1.1; } host vogelsrv42010 { hardware ethernet 00:50:56:9e:c7:d7; fixed-address 192.168.1.9; } ``` Es wurde eine spezielle Konfiguration hinzugefügt, die einem Gerät mit der MAC-Adresse 00:50:56:9e:c7:d7 immer die IP-Adresse 192.168.1.9 zuweist, wenn es eine DHCP-Anfrage stellt. Nachdem diese Einstellung vorgenommen wurde, wurde der DHCP-Server neu gestartet, um die Änderungen zu übernehmen. ```bash sudo systemctl restart isc-dhcp-server ``` [![image.png](https://bbw.schule/uploads/images/gallery/2024-03/scaled-1680-/NWnBKMJrm2jVl0oo-image.png)](https://bbw.schule/uploads/images/gallery/2024-03/NWnBKMJrm2jVl0oo-image.png) ### vogelsrv42010 / vogelsrv42011 - Windows-Server [![image.png](https://bbw.schule/uploads/images/gallery/2024-03/scaled-1680-/bmLDMcnLCTPomrBo-image.png)](https://bbw.schule/uploads/images/gallery/2024-03/bmLDMcnLCTPomrBo-image.png) [![image.png](https://bbw.schule/uploads/images/gallery/2024-03/scaled-1680-/G7QCXgYGxKxaPFpO-image.png)](https://bbw.schule/uploads/images/gallery/2024-03/G7QCXgYGxKxaPFpO-image.png) ### Erweiterte Konfiguration und Analyse #### Einrichtung eines DHCP-Relays Für die Einrichtung eines DHCP-Relays auf einem Router, beispielsweise VyOS, wurden folgende Schritte durchgeführt: 1\. Beginn mit der Konfiguration im Konfigurationsmodus. ```c++ configure ``` 2. Konfiguration des DHCP-Relay-Services, um Anfragen von eth2 zu sammeln und diese über eth1 an den DHCP-Server mit der Adresse 192.168.1.2 weiterzuleiten. ```c++ set service dhcp-relay server 192.168.1.2 set service dhcp-relay upstream-interface eth1 set service dhcp-relay listen-interface eth2 commit save ``` ##### Erstellung neuer DHCP-Subnets Für die Erstellung neuer DHCP-Subnets wurde die DHCP-Konfigurationsdatei bearbeitet: 1. Öffnen der Datei `dhcpd.conf` mit einem Texteditor. ```bash nano /etc/dhcp/dhcpd.conf ``` 2. Hinzufügen der Konfiguration für die neuen Subnets und anschließendes Neustarten des DHCP-Servers, um die Änderungen zu übernehmen. ```c# # minimal sample /etc/dhcp/dhcpd.conf default-lease-time 600; max-lease-time 7200; subnet 192.168.1.0 netmask 255.255.255.192 { range 192.168.1.10 192.168.1.50; option routers 192.168.1.1; option domain-name-servers 1.1.1.1; } subnet 192.168.1.64 netmask 255.255.255.192 { range 192.168.1.70 192.168.1.110; option routers 192.168.1.65; option domain-name-servers 1.1.1.1; } ``` 3. Nachdem die Datei gespeichert und geschlossen wurde, startete den DHCP-Server neu, um die Änderungen zu übernehmen. ```bash sudo systemctl restart isc-dhcp-server ``` ##### Testen des DHCP-Relays Zur Überprüfung des DHCP-Relays wurde ein neuer Windows-Server in das Netzwerk integriert und überprüft, ob dieser eine korrekte IP-Konfiguration vom DHCP-Server erhält. 1. Eine neue Windows-VM wurde im Netzwerk eingerichtet, das von eth2 bedient wird. 2. Nach dem Hochfahren der VM überprüft man, ob sie eine IP-Adresse aus dem entsprechenden DHCP-Bereich erhielt (z.B. 192.168.1.70 bis 192.168.1.110 für das Subnet 192.168.1.64/26). 3. Auf dem Windows-Server führt man in der Befehlszeile (CMD) den Befehl `ipconfig /all` aus, um die erhaltene IP-Konfiguration zu überprüfen. Es bestätigte sich, dass die VM korrekt eine IP-Adresse, Subnetzmaske, den Standardgateway und die DNS-Serverinformationen vom DHCP-Server zugewiesen bekam. [![image.png](https://bbw.schule/uploads/images/gallery/2024-03/scaled-1680-/cJP2ZGyP8REcEJBT-image.png)](https://bbw.schule/uploads/images/gallery/2024-03/cJP2ZGyP8REcEJBT-image.png) #### Einrichtung und Konfiguration eines DHCP-Servers mit udhcpd Wichtig ist, dass DHCP-Relay von udhcpd nicht unterstützt wird und daher nur eine einfache DHCP-Konfiguration verwendet wurde. ##### udhcpd Installation: Zunächst wurde udhcpd durch Öffnen eines Terminals und Eingabe des Installationsbefehls installiert: ```bash sudo apt install udhcpd ``` ##### DHCP-Server konfigurieren: Die Hauptkonfigurationsdatei `/etc/udhcpd.conf` wurde mit einem Texteditor wie nano bearbeitet, um den DHCP-Server zu konfigurieren. Es wurde eine Basis-Konfiguration eingefügt, die einen IP-Bereich für die DHCP-Clients bereitstellt: ```bash sudo nano /etc/udhcpd.conf ``` ```bash start 192.168.1.10 # Start des IP-Bereichs end 192.168.1.50 # Ende des IP-Bereichs option subnet 255.255.255.192 option router 192.168.1.1 option dns 1.1.1.1 option lease 600 # Standard-Lease-Zeit in Sekunden interface ens33 lease_file /var/lib/misc/udhcpd.leases static_lease 00:50:56:9e:c7:d7 192.168.1.9 ``` ##### udhcpd aktivieren und starten: Um udhcpd zu aktivieren und zu starten, wurde zunächst überprüft, ob es nicht durch eine Einstellung in `/etc/default/udhcpd` deaktiviert ist. Anschließend wurde der DHCP-Server neu gestartet, um die vorgenommenen Änderungen anzuwenden: ```bash sed -i '/DHCPD_ENABLED/ s/no/yes/' /etc/default/udhcpd touch /var/lib/misc/udhcpd.leases update-rc.d udhcpd defaults sudo service udhcpd restart ``` ##### udhcpd testen: Nach dem Neustart wurde die Funktionalität von udhcpd getestet, indem ein Client im Netzwerk überprüft wurde, ob er eine IP-Adresse aus dem konfigurierten Bereich erhält. [![image.png](https://bbw.schule/uploads/images/gallery/2024-03/scaled-1680-/FVpTcYKt4z3vk7yd-image.png)](https://bbw.schule/uploads/images/gallery/2024-03/FVpTcYKt4z3vk7yd-image.png) ##### Unterschiede zwischen udhcpd und dem ISC DHCP Server: - **Komplexität und Ressourcenverbrauch:** udhcpd ist für kleinere Netzwerke oder Embedded-Systeme konzipiert und zeichnet sich durch geringeren Ressourcenverbrauch und einfache Konfiguration aus. ISC DHCP bietet umfangreichere Konfigurationsmöglichkeiten für größere Netzwerke, benötigt aber mehr Systemressourcen. - **Konfigurationsdatei:** udhcpd verwendet eine einzige Konfigurationsdatei (`/etc/udhcpd.conf`), die einfacher gestaltet ist. ISC DHCP verwendet die Datei `/etc/dhcp/dhcpd.conf` für komplexe Konfigurationsszenarien. - **Funktionsumfang:** udhcpd konzentriert sich auf Kern-DHCP-Funktionen und ist für einfache Szenarien geeignet. ISC DHCP bietet erweiterte Funktionen wie dynamisches DNS, IPv6-Unterstützung und detaillierte Zugriffskontrollen. #### Einrichten eines ISC DHCP-Servers auf BSD ##### ISC DHCP-Server Installation: Zuerst wurde die passende Version des ISC DHCP-Servers identifiziert und installiert: ```bash pkg search isc-dhcp ``` [![image.png](https://bbw.schule/uploads/images/gallery/2024-03/scaled-1680-/NIpIwpb255ZloWQi-image.png)](https://bbw.schule/uploads/images/gallery/2024-03/NIpIwpb255ZloWQi-image.png) ```bash sudo pkg install isc-dhcp44-server-4.4.3P1 ``` ##### DHCP-Server konfigurieren: Die Hauptkonfigurationsdatei `/usr/local/etc/dhcpd.conf` wurde mit einem Texteditor bearbeitet, um den DHCP-Server zu konfigurieren: ```bash sudo nano /usr/local/etc/dhcpd.conf ``` ```c# default-lease-time 600; max-lease-time 7200; subnet 192.168.1.0 netmask 255.255.255.192 { range 192.168.1.10 192.168.1.50; option routers 192.168.1.1; option domain-name-servers 1.1.1.1; } ``` ##### DHCP-Server aktivieren und starten: Um den DHCP-Server zu aktivieren und beim Systemstart automatisch zu starten, wurde die Datei `/etc/rc.conf` bearbeitet und der DHCP-Server gestartet: ```bash dhcpd_enable="YES" ``` Dann haben wir den DHCP-Server gestartet, um sicherzustellen, dass unsere Konfigurationen angewandt werden: ```bash sudo service isc-dhcpd start ``` ##### FreeBSD DHCP testen: Die Funktion des DHCP-Servers auf FreeBSD wurde getestet, indem überprüft wurde, ob ein Windows Server im Netzwerk eine IP-Konfiguration vom DHCP erhält. [![image.png](https://bbw.schule/uploads/images/gallery/2024-03/scaled-1680-/Sa8I7bzceC2kOybr-image.png)](https://bbw.schule/uploads/images/gallery/2024-03/Sa8I7bzceC2kOybr-image.png) ### Wireshark Analyse Schliesslich wurde der Ablauf einer `ipconfig /renew` Anfrage in Wireshark aufgezeichnet und bestätigte die Übereinstimmung mit der Struktur, wie sie auch auf Wikipedia beschrieben ist. [![image.png](https://bbw.schule/uploads/images/gallery/2024-03/scaled-1680-/UYFUAnXa9UR1kHCN-image.png)](https://bbw.schule/uploads/images/gallery/2024-03/UYFUAnXa9UR1kHCN-image.png) ### Packet Tracer - DHCP Relay [DHCP-Auftrag.pkt](https://bbw.schule/attachments/3) #### Overview Folgend ist der Packet Tracer Aufbau zu sehen um DHCP Relay zu testen. [![image.png](https://bbw.schule/uploads/images/gallery/2024-03/scaled-1680-/QxIDf2aAdl7A9r8o-image.png)](https://bbw.schule/uploads/images/gallery/2024-03/QxIDf2aAdl7A9r8o-image.png) #### vogelsrv42001 ##### GigabitEthernet0/0 Konfiguration vom Router Interface zum VOGEL\_INTNET Switch [![image.png](https://bbw.schule/uploads/images/gallery/2024-03/scaled-1680-/Skqv7tMx0lnd2xZc-image.png)](https://bbw.schule/uploads/images/gallery/2024-03/Skqv7tMx0lnd2xZc-image.png) ##### GigabitEthernet1/0 Konfiguration vom Router Interface zum VOGEL\_DHCP\_RELAY Switch [![image.png](https://bbw.schule/uploads/images/gallery/2024-03/scaled-1680-/9rK7fZxnfXlDRseQ-image.png)](https://bbw.schule/uploads/images/gallery/2024-03/9rK7fZxnfXlDRseQ-image.png) ##### DHCP-Relay konfiguration Die Folgende konfiguration muss man noch extra auf dem Router machen damit der DHCP Relay funktioniert. ```c++ conf t interface GigabitEthernet1/0 ip helper-address 192.168.1.2 exit wr ``` #### vogelsrv42002 ##### Server Netzwerkkonfiguration Netzwerkkonfiguration des DHCP Servers im VOGEL\_INTNET [![image.png](https://bbw.schule/uploads/images/gallery/2024-03/scaled-1680-/64sooZwbDIbGJkxW-image.png)](https://bbw.schule/uploads/images/gallery/2024-03/64sooZwbDIbGJkxW-image.png) ##### DHCP VOGEL\_INTNET Konfiguration DHCP Konfiguration von VOGEL\_INTNET. Der Name darf nicht geändert werden, da der Packet Tracer sonst einen neuen erstellt, was zu Problemen führen kann. [![image.png](https://bbw.schule/uploads/images/gallery/2024-03/scaled-1680-/otPT98gyLeNpBmtq-image.png)](https://bbw.schule/uploads/images/gallery/2024-03/otPT98gyLeNpBmtq-image.png) ##### DHCP VOGEL\_DHCP\_RELAY Konfiguration DHCP Konfiguration von VOGEL\_DHCP\_RELAY. [![image.png](https://bbw.schule/uploads/images/gallery/2024-03/scaled-1680-/PFQWQEku6bkJyQXt-image.png)](https://bbw.schule/uploads/images/gallery/2024-03/PFQWQEku6bkJyQXt-image.png) #### vogelsrv42010 ##### DHCP Konfiguration Prüfen, ob der Client eine DHCP IP im VOGEL\_INTNET erhält. [![image.png](https://bbw.schule/uploads/images/gallery/2024-03/scaled-1680-/WofjVCRIhszHzjmN-image.png)](https://bbw.schule/uploads/images/gallery/2024-03/WofjVCRIhszHzjmN-image.png) #### vogelsrv42011 ##### DHCP Konfiguration Prüfen, ob der Client eine DHCP IP im VOGEL\_DHCP\_RELAY erhält. [![image.png](https://bbw.schule/uploads/images/gallery/2024-03/scaled-1680-/QXL5qW2yO7nIwgau-image.png)](https://bbw.schule/uploads/images/gallery/2024-03/QXL5qW2yO7nIwgau-image.png) # PXE-Auftrag ## Aufgabenstellung #### Vorbereitung der Geräte - Ein Debian Linux-Server wird aufgesetzt, um als TFTP PXE Server zu fungieren. Dieser Server wird für das Netzwerkboot und die Bereitstellung von Betriebssystem-Images für Diskless-Stationen verantwortlich sein. - Ein Client-PC (virtuelle Maschine) wird vorbereitet, um als Diskless-Station zu dienen, die über Netzwerk bootet und das Betriebssystem vom PXE-Server lädt. #### Einrichtung und Konfiguration des TFTP PXE Servers - Installation und Konfiguration des TFTP-Servers auf dem Debian System, der für das Hosting der Boot-Images und des PXE-Boot-Loaders verantwortlich ist. - Einrichtung des PXE-Boot-Loaders (z.B. PXELINUX) und Bereitstellung der notwendigen Boot-Images sowie der Konfigurationsdateien, um den Netzwerkboot zu ermöglichen. #### Testen und Überprüfung - Durchführung eines Boot-Vorgangs auf dem Client-PC (Diskless-Station) über das Netzwerk, um zu überprüfen, ob das Betriebssystem erfolgreich vom TFTP PXE Server geladen und gestartet wird. [![image.png](https://bbw.schule/uploads/images/gallery/2024-04/scaled-1680-/WGkSpn91g12oZ3Dy-image.png)](https://bbw.schule/uploads/images/gallery/2024-04/WGkSpn91g12oZ3Dy-image.png) [PXE Auftrag.excalidraw](https://bbw.schule/attachments/5) ## Theorie ## Aufbau der Umgebung ### Konfiguration des TFTP Servers #### Ubuntu Server ##### TFTP SERVER in Betrieb nehmen **Installation des TFTP-Servers:** ```bash apt install tftpd-hpa systemctl enable tftpd-hpa ``` **Erstellung des TFTP-Verzeichnisses:** ```bash mkdir /srv/tftp ``` ##### PXELinux in Betrieb nehmen **Installation von PXELinux und Syslinux:** Für Netzwerk-Boot-Dienste ist die Installation von PXELinux notwendig. Der Befehl `apt install pxelinux syslinux-common` installiert PXELinux sowie die notwendigen Syslinux-Komponenten auf Ihrem Server. Diese Software ermöglicht es Netzwerkgeräten, über das Netzwerk zu booten, indem sie die erforderlichen Boot-Dateien bereitstellt. ```bash apt install pxelinux syslinux-common ``` **Kopieren der PXELinux Boot-Dateien:** Nach der Installation müssen die PXELinux Boot-Dateien in das TFTP-Verzeichnis kopiert werden. Dies wird durch die Befehle `cp /usr/lib/PXELINUX/lpxelinux.0 /srv/tftp/.` und `cp /usr/lib/syslinux/modules/bios/ldlinux.c32 /srv/tftp/.` erreicht. Diese Dateien sind notwendig, um den Boot-Prozess über das Netzwerk zu initiieren. ```bash cp /usr/lib/PXELINUX/lpxelinux.0 /srv/tftp/. cp /usr/lib/syslinux/modules/bios/ldlinux.c32 /srv/tftp/. ``` **Erstellung des PXELinux Konfigurationsverzeichnisses:** ```bash mkdir /srv/tftp/pxelinux.cfg ``` **Konfiguration des Boot-Menüs:** In der Konfigurationsdatei `default` unter `/srv/tftp/pxelinux.cfg` fügen Sie die notwendigen Einträge für das Booten des Slitaz Betriebssystems hinzu. Dies beinhaltet den Namen der Boot-Option, das zu startende Menü-Label, den Pfad zum Kernel und die Kernel-Optionen, einschließlich der Spezifikation der Initrd-Dateien und Boot-Parameter. ```bash nano /srv/tftp/pxelinux.cfg/default ``` ```c# default slitaz prompt 0 label slitaz menu label Slitaz kernel slitaz/bzImage append initrd=slitaz/rootfs4.gz,slitaz/rootfs3.gz,slitaz/rootfs2.gz,slitaz/rootfs1.gz rw root=/dev/null vga=normal autologin ``` ##### Slitaz-Dateien bereitstellen **Kopieren der Slitaz-Dateien:** Die letzten Schritte umfassen das Kopieren der Slitaz-Betriebssystemdateien in das TFTP-Serververzeichnis. Dazu gehören der Kernel (`bzImage`) und die Initrd-Dateien (`rootfs*.gz`). Diese Dateien müssen in den entsprechenden Unterverzeichnissen innerhalb des `/srv/tftp` Verzeichnisses platziert werden, damit sie während des Boot-Prozesses über das Netzwerk zugänglich sind. ```bash cd ~ wget http://mirror.slitaz.org/iso/4.0/slitaz-4.0.iso mount -o loop slitaz-4.0.iso /mnt mkdir /srv/tftp/slitaz cp /mnt/boot/bzImage /mnt/boot/rootfs* /srv/tftp/slitaz/. umount /mnt ``` ### Konfiguration des DHCP Servers Voraussetzung des folgenden ist das man den DHCP Auftrag bereits erledigt hat: [DHCP-Auftrag](https://bbw.schule/books/vogel/page/dhcp-auftrag "DHCP-Auftrag") Wenn man einen funktionierenden DHCP hat kann man die folgende host Konfiguration hinzufügen (Wichtig ist es die richtige MAC-Adresse zu verwenden) ```bash nano /etc/dhcp/dhcpd.conf ``` ```c# host vogelsrv42012 { hardware ethernet 00:50:56:9e:27:5e; fixed-address 192.168.1.8; next-server 192.168.1.3; filename "lpxelinux.0"; } ``` ```bash sudo systemctl restart isc-dhcp-server ``` ### Testen des PXE Boots **Durchführung eines Boot-Tests** über das Netzwerk, um die Konfiguration und Funktionsfähigkeit des gesamten Setups zu überprüfen. [![image.png](https://bbw.schule/uploads/images/gallery/2024-04/scaled-1680-/t1lskRtVkXAdb0lz-image.png)](https://bbw.schule/uploads/images/gallery/2024-04/t1lskRtVkXAdb0lz-image.png) # DNS-Auftrag ## Aufgabenstellung #### Einrichtung des Labors: - Ein Debian Linux-Server wird konfiguriert, um als DNS-Server zu dienen, wobei BIND (Berkeley Internet Name Domain) als Softwarelösung zum Einsatz kommt. #### Konfiguration des DNS-Servers: - **Installation von BIND:** Der BIND-DNS-Server wird auf dem Debian Linux-System installiert. - **Einrichtung der Zonen-Dateien:** Konfiguration und Einrichtung der primären DNS-Zone für eine Domäne. Dabei wird besonderer Wert auf die Erstellung und Konfiguration der Zonendatei gelegt, einschließlich aller relevanten DNS-Einträge und des SOA (Start of Authority) Records. - **Konfiguration eines sekundären DNS-Servers:** Einrichtung eines sekundären (Slave) DNS-Servers für Redundanz und zur Demonstration der automatisierten Zonensynchronisation. #### Analyse und erweiterte Konfiguration: - **Analyse der DNS-Anfragen:** Verwendung von Wireshark zur Aufzeichnung und Analyse der DNS-Anfragen. Dies umfasst das Verständnis der rekursiven Anfragen und der Antwortpakete. - **Erforschung verschiedener DNS-Record-Typen:** Untersuchung und Erläuterung unterschiedlicher Arten von DNS-Einträgen (wie A, AAAA, MX, CNAME, TXT) und deren Anwendung. - **Dynamische DNS-Updates:** Experimentieren mit dynamischen Updates von DNS-Einträgen. Nutzung von `tsig-keygen` zur Generierung sicherer Schlüssel für die Authentifizierung von Update-Anfragen. - **Integration in bestehende Netzwerkumgebungen:** Einbeziehung des konfigurierten DNS-Servers in ein bestehendes Netzwerk, eventuell unter Nutzung von exotischen Betriebssystemen, um deren Kompatibilität und Funktionalität in Bezug auf DNS-Anfragen zu testen. - **Erforschung von DNS unter IPv6:** Untersuchung der Besonderheiten und Konfigurationen von DNS in IPv6-Netzwerken, einschließlich Reverse-DNS. [![image.png](https://bbw.schule/uploads/images/gallery/2024-04/scaled-1680-/YAerGvxLsce6jGwi-image.png)](https://bbw.schule/uploads/images/gallery/2024-04/YAerGvxLsce6jGwi-image.png) [DNS-Auftrag.excalidraw](https://bbw.schule/attachments/6) ## Theorie ### DNS Einträge #### A (Address Record) - **Verwendung**: Verknüpft einen Domainnamen mit der IP-Adresse eines Servers. - **Beispiel**: `example.com A 192.0.2.1` - **Seit**: Das A-Record ist einer der ursprünglichen DNS-Einträge, eingeführt mit dem Start des DNS-Systems 1983. #### AAAA (IPv6 Address Record) - **Verwendung**: Ähnlich wie das A-Record, aber für IPv6-Adressen. - **Beispiel**: `example.com AAAA 2001:0db8::1` - **Seit**: Eingeführt Anfang der 1990er Jahre als Teil der Einführung von IPv6. #### PTR (Pointer Record) - **Verwendung**: Wird für Reverse DNS (rDNS) Lookups verwendet, um eine IP-Adresse in den zugehörigen Hostnamen zu übersetzen. - **Beispiel**: `1.2.0.192.in-addr.arpa PTR example.com` - **Seit**: Seit den Anfängen von DNS, 1983. #### TXT (Text Record) - **Verwendung**: Ermöglicht es einem Administrator, beliebigen Text in einem DNS-Eintrag zu speichern. - **Beispiel**: `example.com TXT "v=spf1 include:_spf.google.com ~all"` - **Seit**: Eingeführt in den 1990er Jahren. #### MX (Mail Exchange Record) - **Verwendung**: Definiert die Mailserver, die für den Empfang von E-Mails für eine Domain zuständig sind. - **Beispiel**: `example.com MX 10 mail.example.com` - **Seit**: Seit den Anfängen von DNS, 1983. #### SRV (Service Record) - **Verwendung**: Spezifiziert den Standort der Server für bestimmte Dienste. - **Beispiel**: `_sip._tcp.example.com SRV 10 5 5060 sipserver.example.com` - **Seit**: Eingeführt in den späten 1990ern. #### SPF (Sender Policy Framework) - **Verwendung**: Hilft dabei, E-Mail-Spoofing zu verhindern, indem festgelegt wird, welche Mailserver E-Mails für eine Domain senden dürfen. - **Beispiel**: `example.com TXT "v=spf1 ip4:192.0.2.0/24 -all"` - **Seit**: Eingeführt 2004, aber 2014 offiziell als veraltet erklärt und durch DMARC ersetzt. #### NAPTR (Naming Authority Pointer) - **Verwendung**: Wird verwendet in Verbindung mit SIP und ENUM zum Routing von Telefonanrufen über das Internet. - **Beispiel**: `2.0.2.4.1.2.9.e164.arpa NAPTR 100 10 "u" "E2U+sip" "!^.*$!sip:number@example.com!" .` - **Seit**: Eingeführt in den späten 1990er Jahren. #### CAA (Certificate Authority Authorization) - **Verwendung**: Gibt an, welche Zertifizierungsstellen Zertifikate für eine Domain ausstellen dürfen. - **Beispiel**: `example.com CAA 0 issue "letsencrypt.org"` - **Seit**: Eingeführt 2013. #### NS (Name Server Record) - **Verwendung**: Gibt die Nameserver an, die für eine bestimmte Domain zuständig sind. - **Beispiel**: `example.com NS ns1.example.com` - **Seit**: Seit den Anfängen von DNS, 1983. #### DS (Delegation Signer) - **Verwendung**: Wird im DNSSEC-Protokoll verwendet, um die Authentizität der Nameserver-Informationen einer Domain zu bestätigen. - **Beispiel**: `example.com DS 12345 5 1 49FD46E6C4B45C55D4AC69DB588D2B9411AEDB4F` - **Seit**: Eingeführt mit DNSSEC in den 2000er Jahren. #### Hauptunterschiede und Änderungen bei DNS über IPv6 1. **IPv6-Adressen**: - IPv6-Adressen sind länger und komplexer als IPv4-Adressen. Sie bestehen aus 128 Bit und werden in hexadezimaler Notation dargestellt, z. B. `2001:0db8:85a3:0000:0000:8a2e:0370:7334`. 2. **AAAA-Records**: - Für IPv6-Adressen wird der AAAA-Record (Quad-A-Record) anstelle des A-Records verwendet, um eine Hostadresse zu speichern. Ein AAAA-Record kann eine IPv6-Adresse zu einem Domainnamen auflösen. - Beispiel: ```bash www.example.com. 3600 IN AAAA 2001:0db8:85a3::8a2e:0370:7334 ``` 3. **Reverse DNS**: - Reverse DNS-Lookups für IPv6-Adressen verwenden PTR-Records, die in der `ip6.arpa.`-Domain gespeichert werden. - Ein Beispiel für eine PTR-Zeile für IPv6 sieht folgendermaßen aus: ```bash 4.3.3.7.0.7.3.0.e.2.a.8.0.0.0.0.0.0.0.3.a.5.8.b.0.d.0.1.0.0.2.ip6.arpa. 3600 IN PTR www.example ``` ## Aufbau der Umgebung ### Konfiguration des DNS Servers (Master) #### Schritt 1: Installation von BIND ##### Paketdatenbank aktualisieren: ```bash sudo apt-get update ``` ##### BIND Installieren: Alle nötigen Bind9 Packete installieren ```bash sudo apt-get install bind9 bind9utils bind9-doc dnsutils ``` #### Schritt 2: Konfiguration von BIND ##### Edit the named.conf.options file: Im named.conf.options file stehen allgemeine Konfigurationen drin wie zum beispiel, welches Subnetz abfragen machen darf oder zu welchem DNS die restlichen DNS Abfragen forgewarded werden sollen. ```bash sudo nano /etc/bind/named.conf.options ``` ```c acl LAN { 192.168.1.0/26; }; options { directory "/var/cache/bind"; // default directory allow-query { localhost; LAN; }; // allow queries from localhost and 192.168.1.0-192.168.1.255 forwarders { 1.1.1.1; }; // use CloudFlare 1.1.1.1 DNS as a forwarder recursion yes; // allow recursive queries }; ``` Mit named-checkconf kann man alle bind9 Dateien auf Syntax errors kontrollieren. ```bash named-checkconf /etc/bind/named.conf.options ``` [![image.png](https://bbw.schule/uploads/images/gallery/2024-04/scaled-1680-/1sANawG8kqKvnIGi-image.png)](https://bbw.schule/uploads/images/gallery/2024-04/1sANawG8kqKvnIGi-image.png) ##### Edit the named.conf.local file Im named.conf.local file stehen die Einstellungen für die einzelnen Zonen. ```bash sudo nano /etc/bind/named.conf.local ``` ```c zone "test.local" { type master; file "/etc/bind/zones/db.test.local"; # Pfad zur Zonendatei allow-transfer { 192.168.1.5; }; # IP des sekundären DNS-Servers }; zone "1.168.192.in-addr.arpa" IN { type master; file "/etc/bind/zones/db.test.local.rev"; # Pfad zur Zonendatei allow-transfer { 192.168.1.5; }; # IP des sekundären DNS-Servers } ``` ```bash named-checkconf /etc/bind/named.conf.local ``` [![image.png](https://bbw.schule/uploads/images/gallery/2024-04/scaled-1680-/T0OKaeeCVhotz3Pf-image.png)](https://bbw.schule/uploads/images/gallery/2024-04/T0OKaeeCVhotz3Pf-image.png) ##### Zone Folder erstellen: ```bash mkdir /etc/bind/zones ``` ##### Forward Zone File erstellen: ```bash nano /etc/bind/zones/db.test.local ``` ```c $TTL 604800 @ IN SOA ns1.test.local. admin.test.local. ( 3 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS ns1.test.local. @ IN NS ns2.test.local. ns1 IN A 192.168.1.4 ns2 IN A 192.168.1.5 router IN A 192.168.1.1 ``` ```bash named-checkzone test.local /etc/bind/zones/db.test.local ``` [![image.png](https://bbw.schule/uploads/images/gallery/2024-04/scaled-1680-/yqQPg3P5WHdcux8J-image.png)](https://bbw.schule/uploads/images/gallery/2024-04/yqQPg3P5WHdcux8J-image.png) ##### Reverse Zone File erstellen: ```bash nano /etc/bind/zones/db.test.local.rev ``` ```c $TTL 604800 ; SOA record with MNAME and RNAME updated @ IN SOA cherry.example. root.cherry.example. ( 2 ; Serial Note: increment after each change 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; Name server record @ IN NS ns1.test.local. @ IN NS ns2.test.local. ; A record for name server ns1 IN A 192.168.1.4 ns2 IN A 192.168.1.5 ; PTR record for name server 4 IN PTR ns1.test.local. 5 IN PTR ns2.test.local. ; PTR record for clients 1 IN PTR router.test.local. ``` ```bash named-checkzone test.local /etc/bind/zones/db.test.local.rev ``` [![image.png](https://bbw.schule/uploads/images/gallery/2024-04/scaled-1680-/kgqSGkTtpvDwFnjy-image.png)](https://bbw.schule/uploads/images/gallery/2024-04/kgqSGkTtpvDwFnjy-image.png) ##### Bind Neustarten ```bash systemctl restart bind9 ``` #### Testen des DNS Servers ##### Forward Zone ```powershell nslookup ns1.test.local 192.168.1.4 nslookup ns2.test.local 192.168.1.4 nslookup router.test.local 192.168.1.4 ``` [![image.png](https://bbw.schule/uploads/images/gallery/2024-05/scaled-1680-/zsc8492YOS9JTNFa-image.png)](https://bbw.schule/uploads/images/gallery/2024-05/zsc8492YOS9JTNFa-image.png) ##### Reverse Zone ```powershell nslookup 192.168.1.1 192.168.1.4 nslookup 192.168.1.4 192.168.1.4 nslookup 192.168.1.5 192.168.1.4 ``` [![image.png](https://bbw.schule/uploads/images/gallery/2024-05/scaled-1680-/gIOGflJsoJBono7d-image.png)](https://bbw.schule/uploads/images/gallery/2024-05/gIOGflJsoJBono7d-image.png) ### Konfiguration des DNS Servers (Slave) #### Schritt 1: Installation von BIND ##### Paketdatenbank aktualisieren: ```bash sudo apt-get update ``` ##### BIND Installieren: ```bash sudo apt-get install bind9 bind9utils bind9-doc dnsutils ``` #### Schritt 2: Konfiguration von BIND ##### Edit the named.conf.options file: ```bash sudo nano /etc/bind/named.conf.options ``` ```c acl LAN { 192.168.1.0/26; }; options { directory "/var/cache/bind"; // default directory allow-query { localhost; LAN; }; // allow queries from localhost and 192.168.1.0-192.168.1.255 forwarders { 1.1.1.1; }; // use CloudFlare 1.1.1.1 DNS as a forwarder recursion yes; // allow recursive queries }; ``` ```bash named-checkconf /etc/bind/named.conf.options ``` [![image.png](https://bbw.schule/uploads/images/gallery/2024-04/scaled-1680-/H2Q8lgXCVCKiP9Ke-image.png)](https://bbw.schule/uploads/images/gallery/2024-04/H2Q8lgXCVCKiP9Ke-image.png) ##### Edit the named.conf.local file ```bash sudo nano /etc/bind/named.conf.local ``` ```c zone "test.local" { type slave; file "secondary/db.test.local"; # Pfad für die sekundäre Zonendatei masters { 192.168.1.4; }; # IP des primären DNS-Servers }; zone "1.168.192.in-addr.arpa" IN { type slave; file "secondary/db.test.local.rev"; masters { 192.168.1.4; }; }; ``` ```bash named-checkconf /etc/bind/named.conf.local ``` [![image.png](https://bbw.schule/uploads/images/gallery/2024-04/scaled-1680-/WSlap2FcOUc7yrvn-image.png)](https://bbw.schule/uploads/images/gallery/2024-04/WSlap2FcOUc7yrvn-image.png) ##### Bind Neustarten ```bash systemctl restart bind9 ``` #### Testen des DNS Servers ##### Forward Zone ```powershell nslookup ns1.test.local 192.168.1.5 nslookup ns2.test.local 192.168.1.5 nslookup router.test.local 192.168.1.5 ``` [![image.png](https://bbw.schule/uploads/images/gallery/2024-05/scaled-1680-/9fUKP7BCj0hicegX-image.png)](https://bbw.schule/uploads/images/gallery/2024-05/9fUKP7BCj0hicegX-image.png) ##### Reverse Zone ```powershell nslookup 192.168.1.1 192.168.1.5 nslookup 192.168.1.4 192.168.1.5 nslookup 192.168.1.5 192.168.1.5 ``` [![image.png](https://bbw.schule/uploads/images/gallery/2024-05/scaled-1680-/d8L8jtiqI3G82u1I-image.png)](https://bbw.schule/uploads/images/gallery/2024-05/d8L8jtiqI3G82u1I-image.png) ### Erweiterte Konfiguration und Analyse #### Einbinden in vorhandenes Netzwerk ##### vogelsrv42002 - DHCP Konfiguration ändern ```bash sudo nano /etc/dhcp/dhcpd.conf ``` ```c # minimal sample /etc/dhcp/dhcpd.conf default-lease-time 600; max-lease-time 7200; subnet 192.168.1.0 netmask 255.255.255.192 { range 192.168.1.10 192.168.1.50; option routers 192.168.1.1; option domain-name-servers 192.168.1.4, 192.168.1.5; } ``` ```bash systemctl restart isc-dhcp-server ``` ##### Testen der neuen Konfiguration ```powershell nslookup /release nslookup /all ``` [![image.png](https://bbw.schule/uploads/images/gallery/2024-05/scaled-1680-/xRcb5XRhdQjCBpgG-image.png)](https://bbw.schule/uploads/images/gallery/2024-05/xRcb5XRhdQjCBpgG-image.png) #### Wireshark Analyse der DNS abfragen ##### Forward abfragen [DNS-forward.pcapng](https://bbw.schule/attachments/8) ```powershell nslookup router.test.local ``` [![image.png](https://bbw.schule/uploads/images/gallery/2024-05/scaled-1680-/gMtTYkBECXbnXFlR-image.png)](https://bbw.schule/uploads/images/gallery/2024-05/gMtTYkBECXbnXFlR-image.png) **PTR-Auflösung des DNS-Servers**: - **Beschreibung**: Zeigt eine PTR-Abfrage von einem Client (192.168.1.9) an einen DNS-Server (192.168.1.4) zur Auflösung der IP-Adresse. - **Wireshark-Filter**: `dns and ip.src == 192.168.1.9 and ip.dst == 192.168.1.4` - **Erwartete Anzeige**: - Anfrage: PTR (Pointer) für eine bestimmte IP-Adresse. - Quelle: 192.168.1.9 - Ziel: 192.168.1.4 [![image.png](https://bbw.schule/uploads/images/gallery/2024-05/scaled-1680-/9lHM3yhg85xzqoex-image.png)](https://bbw.schule/uploads/images/gallery/2024-05/9lHM3yhg85xzqoex-image.png) **Response der PTR-Auflösung**: - **Beschreibung**: Antwort des DNS-Servers (192.168.1.4) an den Client (192.168.1.9) mit der aufgelösten Domain. - **Wireshark-Filter**: `dns and ip.src == 192.168.1.4 and ip.dst == 192.168.1.9` - **Erwartete Anzeige**: - Antwort: PTR (Pointer) mit dem entsprechenden Domainnamen. - Quelle: 192.168.1.4 - Ziel: 192.168.1.9 [![image.png](https://bbw.schule/uploads/images/gallery/2024-05/scaled-1680-/AftidpXGnv5a4QPa-image.png)](https://bbw.schule/uploads/images/gallery/2024-05/AftidpXGnv5a4QPa-image.png) **A-Auflösung des DNS-Namens router.test.local**: - **Beschreibung**: Zeigt eine A-Abfrage von einem Client (192.168.1.9) an einen DNS-Server (192.168.1.4) zur Auflösung des DNS-Namens `router.test.local`. - **Wireshark-Filter**: `dns and ip.src == 192.168.1.9 and ip.dst == 192.168.1.4` - **Erwartete Anzeige**: - Anfrage: A (Address) für `router.test.local`. - Quelle: 192.168.1.9 - Ziel: 192.168.1.4 [![image.png](https://bbw.schule/uploads/images/gallery/2024-05/scaled-1680-/UxDLT1LMozO3EkCe-image.png)](https://bbw.schule/uploads/images/gallery/2024-05/UxDLT1LMozO3EkCe-image.png) **Response der A-Auflösung**: - **Beschreibung**: Antwort des DNS-Servers (192.168.1.4) an den Client (192.168.1.9) mit der IP-Adresse von `router.test.local`. - **Wireshark-Filter**: `dns and ip.src == 192.168.1.4 and ip.dst == 192.168.1.9` - **Erwartete Anzeige**: - Antwort: A (Address) mit der IP-Adresse `192.168.1.1`. - Quelle: 192.168.1.4 - Ziel: 192.168.1.9 [![image.png](https://bbw.schule/uploads/images/gallery/2024-05/scaled-1680-/uIoNhY5wD5xCpo4H-image.png)](https://bbw.schule/uploads/images/gallery/2024-05/uIoNhY5wD5xCpo4H-image.png) **AAAA-Auflösung des DNS-Namens router.test.local**: - **Beschreibung**: Zeigt eine AAAA-Abfrage von einem Client (192.168.1.9) an einen DNS-Server (192.168.1.4) zur Auflösung des DNS-Namens `router.test.local`. - **Wireshark-Filter**: `dns and ip.src == 192.168.1.9 and ip.dst == 192.168.1.4` - **Erwartete Anzeige**: - Anfrage: AAAA (IPv6 Address) für `router.test.local`. - Quelle: 192.168.1.9 - Ziel: 192.168.1.4 [![image.png](https://bbw.schule/uploads/images/gallery/2024-05/scaled-1680-/fzUNlroSCThCnpVl-image.png)](https://bbw.schule/uploads/images/gallery/2024-05/fzUNlroSCThCnpVl-image.png) **Response der AAAA-Auflösung**: - **Beschreibung**: Antwort des DNS-Servers (192.168.1.4) an den Client (192.168.1.9) mit der IPv6-Adresse von `router.test.local` oder einer leeren Antwort, wenn keine IPv6-Adresse vorhanden ist. - **Wireshark-Filter**: `dns and ip.src == 192.168.1.4 and ip.dst == 192.168.1.9` - **Erwartete Anzeige**: - Antwort: keine Antwort (leer). - Quelle: 192.168.1.4 - Ziel: 192.168.1.9 [![image.png](https://bbw.schule/uploads/images/gallery/2024-05/scaled-1680-/h8ejwT0Kx18wkod1-image.png)](https://bbw.schule/uploads/images/gallery/2024-05/h8ejwT0Kx18wkod1-image.png) ##### Reverse abfragen [DNS-reverse.pcapng](https://bbw.schule/attachments/9) ``` nslookup 192.168.1.1 ``` [![image.png](https://bbw.schule/uploads/images/gallery/2024-05/scaled-1680-/mEpQKNrkcIdmt82p-image.png)](https://bbw.schule/uploads/images/gallery/2024-05/mEpQKNrkcIdmt82p-image.png) **PTR-Auflösung des DNS-Servers**: - **Beschreibung**: Zeigt eine PTR-Abfrage von einem Client (192.168.1.9) an einen DNS-Server (192.168.1.4) zur Auflösung der IP-Adresse. - **Wireshark-Filter**: `dns and ip.src == 192.168.1.9 and ip.dst == 192.168.1.4` - **Erwartete Anzeige**: - Anfrage: PTR (Pointer) für eine bestimmte IP-Adresse. - Quelle: 192.168.1.9 - Ziel: 192.168.1.4 [![image.png](https://bbw.schule/uploads/images/gallery/2024-05/scaled-1680-/Lik4TsdQuVTDk4C5-image.png)](https://bbw.schule/uploads/images/gallery/2024-05/Lik4TsdQuVTDk4C5-image.png) **Response der PTR-Auflösung**: - **Beschreibung**: Antwort des DNS-Servers (192.168.1.4) an den Client (192.168.1.9) mit der aufgelösten Domain. - **Wireshark-Filter**: `dns and ip.src == 192.168.1.4 and ip.dst == 192.168.1.9` - **Erwartete Anzeige**: - Antwort: PTR (Pointer) mit dem entsprechenden Domainnamen. - Quelle: 192.168.1.4 - Ziel: 192.168.1.9 [![image.png](https://bbw.schule/uploads/images/gallery/2024-05/scaled-1680-/mi5WIGUWWRyzytpF-image.png)](https://bbw.schule/uploads/images/gallery/2024-05/mi5WIGUWWRyzytpF-image.png) **PTR-Auflösung der IP-Adresse**: - **Beschreibung**: Zeigt eine PTR-Abfrage von einem Client (192.168.1.9) an einen DNS-Server (192.168.1.4) zur Auflösung der IP-Adresse. - **Wireshark-Filter**: `dns and ip.src == 192.168.1.9 and ip.dst == 192.168.1.4` - **Erwartete Anzeige**: - Anfrage: PTR (Pointer) für die IP-Adresse `192.168.1.1`. - Quelle: 192.168.1.9 - Ziel: 192.168.1.4 [![image.png](https://bbw.schule/uploads/images/gallery/2024-05/scaled-1680-/9mnXny7YeeKdjiZm-image.png)](https://bbw.schule/uploads/images/gallery/2024-05/9mnXny7YeeKdjiZm-image.png) **Response der PTR-Auflösung**: - **Beschreibung**: Antwort des DNS-Servers (192.168.1.4) an den Client (192.168.1.9) mit der aufgelösten Domain. - **Wireshark-Filter**: `dns and ip.src == 192.168.1.4 and ip.dst == 192.168.1.9` - **Erwartete Anzeige**: - Antwort: router.test.local. - Quelle: 192.168.1.4 - Ziel: 192.168.1.9 [![image.png](https://bbw.schule/uploads/images/gallery/2024-05/scaled-1680-/6yQoarZHlmVByNfr-image.png)](https://bbw.schule/uploads/images/gallery/2024-05/6yQoarZHlmVByNfr-image.png) #### Host File **Editor als Administrator öffnen:** Um die Hosts-Datei zu bearbeiten, müssen Sie den Editor mit Administratorrechten öffnen. Klicken Sie dazu auf das Startmenü, geben Sie "Editor" ein, klicken Sie mit der rechten Maustaste auf "Editor" und wählen Sie "Als Administrator ausführen". [![image.png](https://bbw.schule/uploads/images/gallery/2024-05/scaled-1680-/zKivEGlcTEHNi3ou-image.png)](https://bbw.schule/uploads/images/gallery/2024-05/zKivEGlcTEHNi3ou-image.png) **Hosts-Datei öffnen:** Im Editor, den Sie als Administrator geöffnet haben, navigieren Sie zu der Hosts-Datei. Gehen Sie zu "Datei" > "Öffnen" und geben Sie den folgenden Pfad ein: `C:\Windows\System32\drivers\etc` Stellen Sie sicher, dass Sie "Alle Dateien (*.*)" auswählen, um die Hosts-Datei sichtbar zu machen. **DNS-Einträge hinzufügen:** Fügen Sie am Ende der Hosts-Datei die gewünschten DNS-Einträge hinzu. Die Syntax ist einfach: zuerst die IP-Adresse, gefolgt von einem oder mehreren Domain-Namen, die zu dieser IP-Adresse aufgelöst werden sollen. Zum Beispiel:
```c++ 1.1.1.1 bbw-it.ch ``` In diesem Beispiel wird `bbw-it.ch` auf die IP-Adresse `1.1.1.1` aufgelöst. 1. **Änderungen speichern:** Nachdem Sie die gewünschten Einträge hinzugefügt haben, speichern Sie die Datei. Gehen Sie dazu auf "Datei" > "Speichern". Stellen Sie sicher, dass Sie die Datei im gleichen Verzeichnis und mit dem gleichen Namen speichern. 2. **DNS-Cache leeren:** Damit die Änderungen sofort wirksam werden, sollten Sie den DNS-Cache leeren. Öffnen Sie dazu die Eingabeaufforderung als Administrator. Klicken Sie auf das Startmenü, geben Sie "cmd" ein, klicken Sie mit der rechten Maustaste auf "Eingabeaufforderung" und wählen Sie "Als Administrator ausführen". Geben Sie dann den folgenden Befehl ein: ```powershell ipconfig /flushdns ``` 3. **Überprüfung der Einträge:** Überprüfen Sie die neuen oder aktualisierten DNS-Einträge, um sicherzustellen, dass die Änderungen korrekt übernommen wurden. Verwenden Sie dazu den Befehl `nslookup` oder versuchen Sie, die entsprechende Domain in Ihrem Browser aufzurufen. Wieso man nicht nslookup gebrauchen kann: [https://serverfault.com/questions/698058/nslookup-not-using-hosts-file](https://serverfault.com/questions/698058/nslookup-not-using-hosts-file) ```powershell ping bbw-it.ch ``` [![image.png](https://bbw.schule/uploads/images/gallery/2024-05/scaled-1680-/jh3c4dIcQOccU0k6-image.png)](https://bbw.schule/uploads/images/gallery/2024-05/jh3c4dIcQOccU0k6-image.png)
#### Cloud DNS (AWS) In AWS besitze Ich bereits eine DNS Zone Namens mregli.cloud. Die Zone wird gemanaged in einem Service Namens Route 53 (DNS-Service). Das UI sieht wie folgt aus: [![image.png](https://bbw.schule/uploads/images/gallery/2024-05/scaled-1680-/GeizEuROjTYJakZH-image.png)](https://bbw.schule/uploads/images/gallery/2024-05/GeizEuROjTYJakZH-image.png) In AWS kann man die folgenden DNS Einträge erstellen: [![image.png](https://bbw.schule/uploads/images/gallery/2024-05/scaled-1680-/ry1aJ2h0BaRdNPul-image.png)](https://bbw.schule/uploads/images/gallery/2024-05/ry1aJ2h0BaRdNPul-image.png) Der Grund wieso man den AWS DNS benutzen soll ist da man die DNS Server im Hintergrund nicht selber Managen muss und da die DNS Server eine 100% Verfügbarkeit versprechen da die DNS Funktion niemals ausfallen darf. #### Dynamische DNS-Updates (Local) **Verzeichnis für Geheimnisse erstellen:** Erstellen Sie ein Verzeichnis, um die generierten Schlüssel sicher zu speichern. ```bash mkdir /secrets tsig-keygen ddns >> /secrets/ddns ``` **TSIG-Schlüssel (Transaction Signature) generieren:** Erstellen Sie einen TSIG-Schlüssel, der zur Authentifizierung von DNS-Updates verwendet wird. ```bash key "ddns" { algorithm hmac-sha256; secret "TYkYPXTJXYVc9gM3cDvSbuwSaZ73bLf6LVfeKmDCB78="; }; ``` **DNS-Zonendatei konfigurieren:** Konfigurieren Sie Ihre DNS-Zonendatei, um dynamische Updates zu ermöglichen. Diese Konfiguration definiert die Zone, die als Master fungiert, und legt die Datei fest, in der die Zonendaten gespeichert werden. ```c# key "ddns" { algorithm hmac-sha256; secret "D/Y0qfay469q2Nk7ROASD48oSCnjfUUvw1hLirl6Gqc="; }; ... zone "test.local" { type master; file "/etc/bind/zones/db.test.local"; # Pfad zur Zonendatei allow-transfer { 192.168.1.5; }; # IP des sekundären DNS-Servers allow-update { key "ddns"; }; }; ... ``` **Anpassung des AppArmor-Profils für BIND** AppArmor ist ein Sicherheitsmodul, das die Berechtigungen von Anwendungen auf Systemebene einschränkt. Um dynamische DNS-Updates zuzulassen, müssen Sie das AppArmor-Profil für den BIND-DNS-Server anpassen: **AppArmor-Profil für BIND lokalisieren**: Das AppArmor-Profil für BIND befindet sich normalerweise unter `/etc/apparmor.d/usr.sbin.named`. Öffnen Sie diese Datei zur Bearbeitung: ```bash sudo nano /etc/apparmor.d/usr.sbin.named ``` **AppArmor-Profil ändern**: Fügen Sie die erforderlichen Berechtigungen für das Verzeichnis und die Dateien hinzu, die mit den DNS-Updates verbunden sind. Stellen Sie sicher, dass die folgenden Zeilen (oder ähnliche) enthalten und korrekt konfiguriert sind: [![image.png](https://bbw.schule/uploads/images/gallery/2024-05/scaled-1680-/mtj2qOFRBBci4JLP-image.png)](https://bbw.schule/uploads/images/gallery/2024-05/mtj2qOFRBBci4JLP-image.png) **AppArmor-Profile neu laden**: Nachdem Sie das Profil geändert haben, laden Sie die AppArmor-Profile neu, um die Änderungen anzuwenden: ```bash sudo apparmor_parser -r /etc/apparmor.d/usr.sbin.named ``` **Berechtigungen überprüfen**: Stellen Sie sicher, dass der BIND-Benutzer (`named` oder ähnlich) die erforderlichen Berechtigungen hat, um in das Verzeichnis `/etc/bind/zones` zu schreiben und die Datei `db.test.local.jnl` zu erstellen oder zu ändern. Falls dies noch nicht geschehen ist, passen Sie die Berechtigungen an: ```bash sudo chown -R bind:bind /etc/bind/zones sudo chmod -R 755 /etc/bind/zones ``` **BIND neu starten**: Starten Sie den BIND-Dienst neu, um die Änderungen anzuwenden: ```bash systemctl restart bind9 ``` **Update erneut versuchen**: Versuchen Sie, das DDNS-Update erneut durchzuführen: ```bash nsupdate -k /secrets/ddns > server ns1.test.local > update add home.test.local 200 A 1.2.3.4 > send ``` Testen kann man es dann über einen einfachen normalen `nslookup`. ```bash nslookup home.test.local ``` [![image.png](https://bbw.schule/uploads/images/gallery/2024-05/scaled-1680-/SyYoq9pTQ7n35FTK-image.png)](https://bbw.schule/uploads/images/gallery/2024-05/SyYoq9pTQ7n35FTK-image.png) #### Dynamische DNS-Updates (Maas) [![image.png](https://bbw.schule/uploads/images/gallery/2024-05/scaled-1680-/L3GWzrfec0OD6OSN-image.png)](https://bbw.schule/uploads/images/gallery/2024-05/L3GWzrfec0OD6OSN-image.png) **TSIG-Schlüssel speichern:** Erstellen Sie die Datei `/secrets/maas` und fügen Sie den TSIG-Schlüssel ein: ```bash nano /secrets/maas ``` Fügen Sie den folgenden Inhalt in die Datei ein: ```c# key "manuel.regli" { algorithm hmac-sha256; secret "m5W38E9ugk8hIsi0dav9FkOoIFIny2yiyISpn0MMDtA="; }; ``` **Berechtigungen setzen:** Stellen Sie sicher, dass die Datei die richtigen Berechtigungen hat, sodass nur der notwendige Benutzer (in diesem Fall der Benutzer, der `nsupdate` ausführt) darauf zugreifen kann: ```bash sudo chown root:root /secrets/maas sudo chmod 600 /secrets/maas ``` **DNS-Update durchführen:** Verwenden Sie `nsupdate`, um den DNS-Eintrag zu aktualisieren: ```bash nsupdate -k /secrets/maas > server ns.users.bbw-it.ch. > update add test.manuel.regli.users.bbw-it.ch. 200 IN A 2.12.21.2 > send ``` **Überprüfung des Updates:** Überprüfen Sie den neuen DNS-Eintrag mit `nslookup`: ```bash nslookup test.manuel.regli.users.bbw-it.ch ``` [![image.png](https://bbw.schule/uploads/images/gallery/2024-05/scaled-1680-/ag8vayXIA6LnZ6Y5-image.png)](https://bbw.schule/uploads/images/gallery/2024-05/ag8vayXIA6LnZ6Y5-image.png) ```bash nslookup test.manuel.regli.users.bbw-it.ch ns.users.bbw-it.ch ``` [![image.png](https://bbw.schule/uploads/images/gallery/2024-05/scaled-1680-/Yb4qs3xDbfGaExoX-image.png)](https://bbw.schule/uploads/images/gallery/2024-05/Yb4qs3xDbfGaExoX-image.png) [![image.png](https://bbw.schule/uploads/images/gallery/2024-05/scaled-1680-/Hq8WGItKEolYIBsv-image.png)](https://bbw.schule/uploads/images/gallery/2024-05/Hq8WGItKEolYIBsv-image.png) #### IPv6 ##### Forward Zone file bearbeiten Öffnen Sie die Zonendatei zur Bearbeitung: ```bash nano /etc/bind/zones/db.test.local ``` Fügen Sie die IPv6-Einträge und andere DNS-Einträge wie folgt hinzu: ```c++ $ORIGIN . $TTL 604800 ; 1 week test.local IN SOA ns1.test.local. admin.test.local. ( 4 ; serial 604800 ; refresh (1 week) 86400 ; retry (1 day) 2419200 ; expire (4 weeks) 604800 ; minimum (1 week) ) NS ns1.test.local. NS ns2.test.local. $ORIGIN test.local. $TTL 200 ; 3 minutes 20 seconds home A 1.2.3.4 $TTL 604800 ; 1 week ns1 A 192.168.1.4 ns1 AAAA fe80::250:56ff:fe9e:7055 ns2 A 192.168.1.5 router A 192.168.1.1 ``` ##### Reverse Zone file bearbeiten Um herauszufinden wie der Eintrag lauten muss kann man den folgenden Trick verwenden: ```bash dig -x fe80::250:56ff:fe9e:7055 ``` [![image.png](https://bbw.schule/uploads/images/gallery/2024-05/scaled-1680-/Bq3qh33idd2mqpN3-image.png)](https://bbw.schule/uploads/images/gallery/2024-05/Bq3qh33idd2mqpN3-image.png) **Reverse Zone Datei bearbeiten**: Öffnen Sie die Datei zur Bearbeitung: ```bash nano /etc/bind/zones/db.8.e.f.ip6.arpa ``` **Inhalt der Reverse Zone Datei**: Fügen Sie die PTR-Einträge hinzu, um die IPv6-Adresse aufzulösen: ```c++ $TTL 3600 @ IN SOA ns1.example.com. admin.example.com. ( 2024052601 ; Seriennummer 3600 ; Refresh 1800 ; Retry 1209600 ; Expire 3600 ) ; Minimum TTL @ IN NS ns1.test.local. @ IN NS ns2.test.local. 5.5.0.7.e.9.e.f.f.f.6.5.0.5.2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.e.f.ip6.arpa. 3600 IN PTR ns1.test.local. ``` ##### Konfiguration in `named.conf.local` **named.conf.local bearbeiten**: Öffnen Sie die Datei zur Bearbeitung: ```bash nano /etc/bind/named.conf.local ``` **Konfigurationsblock für die Reverse Zone hinzufügen**: Fügen Sie den folgenden Block hinzu: ```c++ zone "8.e.f.ip6.arpa" IN { type master; file "/etc/bind/zones/db.8.e.f.ip6.arpa"; allow-transfer { 192.168.1.5; }; }; ``` ##### Testen Forward Zone [![image.png](https://bbw.schule/uploads/images/gallery/2024-05/scaled-1680-/0Wt8JKxMyBJAU0NO-image.png)](https://bbw.schule/uploads/images/gallery/2024-05/0Wt8JKxMyBJAU0NO-image.png) Reverse Zone: ```bash dig -x fe80::250:56ff:fe9e:7055 ``` [![image.png](https://bbw.schule/uploads/images/gallery/2024-05/scaled-1680-/NlwH9Uv4bxh2pDiS-image.png)](https://bbw.schule/uploads/images/gallery/2024-05/NlwH9Uv4bxh2pDiS-image.png) ## Reflexion Zusammenfassend kann ich sagen, dass die Arbeit an sich Spass gemacht hat, ausser vielleicht der Teil mit IPv6, aber das liegt eher an mir und meinem Hass darauf. Probleme an sich hatte ich nur einmal mit Dyndns als der Bind9 Server die Journaldatei nicht erstellen wollte und ich 2 Stunden gebraucht habe um herauszufinden das es am AppArmor lag. Ansonsten war es im Grossen und Ganzen ein angenehmer Auftrag. # TLS-Auftrag [tls.pdf](https://bbw.schule/attachments/10) ## Aufgabenstellung ### Praktische Umsetzung: #### Einrichtung des Labors: Ein Debian Linux-Server wird konfiguriert, um als Webserver zu dienen, der HTTPS-Verbindungen über TLS unterstützt. Der Server wird so konfiguriert, dass er sowohl sichere als auch unsichere Verbindungen akzeptiert, um den Unterschied zu demonstrieren. #### Konfiguration des TLS-Servers: 1. **Installation von Apache/Nginx:** - Der Nginx Webserver wird auf dem Debian Linux-System installiert. 2. **Einrichtung von TLS-Zertifikaten:** - Konfiguration und Einrichtung eines TLS-Zertifikats von einer vertrauenswürdigen Zertifizierungsstelle (CA). 3. **Konfiguration der Webserver-Einstellungen:** - Anpassung der Webserver-Konfigurationsdateien, um TLS zu unterstützen. Dies umfasst die Konfiguration der Zertifikatspfad, Schlüsselpfad und die Definition der TLS-Protokollversionen und Verschlüsselungssuiten. #### Analyse und erweiterte Konfiguration: 1. **Überblick über die Architektur des Protokolls:** - Untersuchung der Schichten von TLS und deren Funktionen (Record Protocol, Handshake Protocol, etc.). 2. **Anwendungsfälle für TLS:** - Untersuchung, wer TLS einsetzt und spezielle Anwendungsfälle, insbesondere für 2-Wege-Authentifizierung (beispielsweise in Banken und sicheren Kommunikationsdiensten). 3. **Vergleich verschiedener HTTPS-Seiten:** - Analyse und Vergleich der Sicherheitsniveaus von Webseiten wie Digitec, OLAT, einer Schweizer Bank und einer Nischenbank wie garantibank.nl. 4. **Beschreibung eines Angriffs und der Abwehrmechanismen:** - Detaillierte Beschreibung eines möglichen Angriffs auf TLS (z.B. Man-in-the-Middle-Angriff) und die Abwehrmechanismen, die TLS bietet. 5. **Verschlüsselungsverfahren in TLS:** - Untersuchung der verschiedenen Verschlüsselungsverfahren, die mit TLS eingesetzt werden können (z.B. AES, RSA, ECC). 6. **SNI (Server Name Indication):** - Erklärung, warum früher pro HTTPS-Subdomain eine eigene IP-Adresse nötig war und wie SNI dieses Problem löste. Diskussion der Nachteile von SNI. 7. **Zusätzliche Informationen aus dem Wikipedia-Artikel:** - Recherche zusätzlicher Informationen aus dem englischsprachigen Wikipedia-Artikel zu TLS. 8. **Mitschnitt des HTTPS-Zugriffs:** - Verwendung von Wireshark, um den HTTPS-Verkehr mitzuschneiden und die verschiedenen Elemente des TLS-Protokolls zu identifizieren und zuzuordnen. 9. **Verwendete Verschlüsselung:** - Untersuchung der bei der Erstellung des TLS-Zugangs verwendeten Verschlüsselung und Reflexion darüber, ob dies bewusst geschah. 10. **Simulation spezieller Protokollabläufe:** - - Versuch, spezielle Protokollabläufe wie Alerts aufzuzeichnen. #### Verschlüsselte Abläufe sniffen: 1. **Mitschnitt von TLS-Traffic:** - Untersuchung des verschlüsselten TLS-Verkehrs mittels Wireshark und Darstellung der Möglichkeit, den Traffic mitzuhören, wenn man Kontrolle über eine der beteiligten Seiten hat. ## Theorie #### Überblick über die Architektur des Protokolls: TLS (Transport Layer Security) besteht aus mehreren Schichten und Protokollen: - **Record Protocol:** Sorgt für die Vertraulichkeit und Integrität der übertragenen Daten. - **Handshake Protocol:** Ermöglicht die Authentifizierung der Kommunikationspartner und die Aushandlung kryptographischer Parameter. - **Change Cipher Spec Protocol:** Signalisiert den Übergang von unverschlüsselter zu verschlüsselter Kommunikation. - **Alert Protocol:** Übermittelt Fehlermeldungen und Warnungen. #### Wer setzt TLS ein? Anwendungsfälle für 2-Wege-Authentifizierung: TLS wird von vielen verschiedenen Diensten eingesetzt, darunter: - **Webseiten:** Für sichere HTTPS-Verbindungen. - **E-Mail:** POP3S, IMAPS für sichere E-Mail-Kommunikation. - **VPNs:** Für sichere Verbindungstunnel. Spezielle Anwendungsfälle für 2-Wege-Authentifizierung umfassen: - **Banken:** Für sichere Online-Banking-Dienste. - **Unternehmenskommunikation:** Für den sicheren Datenaustausch zwischen Geschäftspartnern. #### Vergleich verschiedener HTTPS-Seiten: Ein Vergleich der Sicherheitsniveaus kann durch die Analyse der SSL/TLS-Konfigurationen und Zertifikate der Seiten erfolgen: - **Digitec:** Überprüfung der TLS-Version und Verschlüsselungssuite. - **OLAT:** Untersuchung des Zertifikats und der Sicherheitsfunktionen. - **Schweizer Bank:** Bewertung der Implementierung von 2-Wege-Authentifizierung. - **Garantibank.nl:** Analyse der verwendeten Sicherheitsmechanismen. #### Beschreibung eines Angriffs und der Abwehrmechanismen: **Man-in-the-Middle-Angriff (MitM):** - **Beschreibung:** Ein Angreifer platziert sich zwischen zwei kommunizierenden Parteien und liest oder manipuliert den Datenverkehr. - **Abwehrmechanismen:** Einsatz von Zertifikaten und öffentlicher Schlüsselinfrastruktur (PKI) zur Authentifizierung der Kommunikationspartner und Sicherstellung der Integrität und Vertraulichkeit der Daten. #### Verschlüsselungsverfahren in TLS: TLS kann verschiedene Verschlüsselungsverfahren verwenden, darunter: - **Symmetrische Verschlüsselung:** AES, ChaCha20. - **Asymmetrische Verschlüsselung:** RSA, ECDSA. - **Hash-Funktionen:** SHA-256, SHA-3. #### SNI (Server Name Indication): - **Problem:** Früher war pro HTTPS-Subdomain eine eigene IP-Adresse nötig, weil der Hostname nicht im Klartext übertragen wurde. - **Lösung:** SNI ermöglicht es, den Hostnamen im ClientHello-Paket zu übertragen, sodass der Server das richtige Zertifikat auswählen kann. - **Nachteile:** SNI überträgt den Hostnamen im Klartext, was zu einem Verlust der Vertraulichkeit führen kann. #### Zusätzliche Informationen aus dem Wikipedia-Artikel: Der englischsprachige Wikipedia-Artikel bietet weiterführende Informationen zu: - **Protokollversionen:** Unterschiede zwischen TLS 1.0, 1.1, 1.2 und 1.3. - **Bekannte Schwachstellen:** Beschreibung von Sicherheitslücken wie Heartbleed, BEAST, und POODLE. - **Implementierungsdetails:** Informationen zu verschiedenen TLS-Bibliotheken und deren Einsatz. ## Praktische Umsetzung Http Webserver erstellen auf einem Ubuntu Server. ```bash apt update && apt install nginx -y ``` Nach dem Installieren von nginx sollte der Web Server schon ohne weitere Konfigurationen standartmässig laufen. [![image.png](https://bbw.schule/uploads/images/gallery/2024-06/scaled-1680-/7fzRFMEKq0Dnp3ud-image.png)](https://bbw.schule/uploads/images/gallery/2024-06/7fzRFMEKq0Dnp3ud-image.png) ### Root-Zertifikat und Schlüssel generieren [![image.png](https://bbw.schule/uploads/images/gallery/2024-06/scaled-1680-/om8J9FkwWp7fxlLX-image.png)](https://bbw.schule/uploads/images/gallery/2024-06/om8J9FkwWp7fxlLX-image.png) [Zertifikat CA.excalidraw](https://bbw.schule/attachments/11) Erzeugen eines privaten RSA-Schlüssel der Grösse 2048 ```bash openssl genrsa -des3 -out rootCA.key 2048 ``` [![image.png](https://bbw.schule/uploads/images/gallery/2024-06/scaled-1680-/LNcpj867guvR2K0r-image.png)](https://bbw.schule/uploads/images/gallery/2024-06/LNcpj867guvR2K0r-image.png) Erstellung eines zwei Jahre lang gültigen Stammzertifikates ```bash openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 730 -out rootCert.pem ``` [![image.png](https://bbw.schule/uploads/images/gallery/2024-06/scaled-1680-/xwHU7xGVo9pIIOuM-image.png)](https://bbw.schule/uploads/images/gallery/2024-06/xwHU7xGVo9pIIOuM-image.png) ### Zertifikatssignierungsanforderung (CSR) generieren Erzeugen eines privaten Schlüssel für Ihr Zertifikat ```bash openssl genrsa -out cert.key 2048 ``` Verwende den privaten Schlüssel, um eine Zertifikatssignierungsanforderung (CSR) zu erstellen. ```bash openssl req -new -key cert.key -out cert.csr ``` [![image.png](https://bbw.schule/uploads/images/gallery/2024-06/scaled-1680-/yCaU8cMPqe9o5AHd-image.png)](https://bbw.schule/uploads/images/gallery/2024-06/yCaU8cMPqe9o5AHd-image.png) ### Erstellen einer Konfigurationsdatei Erstellen Sie eine Konfigurationsdatei openssl.cnf mit einer Liste von Domänennamen, die mit dem Zertifikat verbunden sind. Bearbeiten Sie die unter dem Abschnitt \[alt\_names\] aufgelistete(n) Domäne(n) so, dass sie mit dem gewünschten Domänennamen übereinstimmen. ```bash nano openssl.cnf ``` ```c++ # Extensions to add to a certificate request basicConstraints = CA:FALSE authorityKeyIdentifier = keyid:always, issuer:always keyUsage = nonRepudiation, digitalSignature, keyEncipherment, dataEncipherment subjectAltName = @alt_names [ alt_names ] DNS.1 = www.test.local ``` ### Signieren der Zertifikatsanforderung Signieren der CSR mit dem Stammzertifikat und dem Schlüssel: ```bash openssl x509 -req -in cert.csr -CA rootCert.pem -CAkey rootCA.key -CAcreateserial -out cert.crt -days 730 -sha256 -extfile openssl.cnf ``` [![image.png](https://bbw.schule/uploads/images/gallery/2024-06/scaled-1680-/ALobNF0vUu6kx6Pp-image.png)](https://bbw.schule/uploads/images/gallery/2024-06/ALobNF0vUu6kx6Pp-image.png) ```bash openssl verify -CAfile rootCert.pem -verify_hostname www.test.local cert.crt ``` [![image.png](https://bbw.schule/uploads/images/gallery/2024-06/scaled-1680-/RCqhKnxgYcfs7Wxw-image.png)](https://bbw.schule/uploads/images/gallery/2024-06/RCqhKnxgYcfs7Wxw-image.png) ### Root-Zertifikat als vertrauenswürdig zu Chrome hinzufügen Um Browserwarnungen über nicht vertrauenswürdige Zertifikate zu vermeiden, fügen Sie das Stammzertifikat als vertrauenswürdiges Zertifikat in Chrome hinzu, indem Sie diese Schritte ausführen: - Öffnen Sie die Chrome-Einstellungen, und wählen Sie Sicherheit > Zertifikate verwalten. - Klicken Sie auf die Registerkarte Autoritäten und dann auf die Schaltfläche Importieren.... Daraufhin wird der Assistent für den Zertifikatsimport geöffnet. - Klicken Sie auf Weiter, um zum Bildschirm Datei für den Import zu gelangen. - Klicken Sie auf Durchsuchen..., wählen Sie rootCert.pem und klicken Sie auf Weiter. - Aktivieren Sie das Kontrollkästchen Diesem Zertifikat zur Identifizierung von Websites vertrauen und klicken Sie auf OK, um den Vorgang abzuschliessen. ### Nginx konfigurieren Erstellen Sie eine Konfigurationsdatei für Ihre Website im Verzeichnis `sites-available` im nginx-Verzeichnis. Erstellen Sie beispielsweise eine Datei namens `www.test.local.conf` mit folgendem Inhalt: ```c++ server { client_max_body_size 100M; server_name www.test.local; listen 443 ssl; ssl_certificate /etc/ssl/certs/cert.crt; ssl_certificate_key /etc/ssl/private/cert.key; root /var/www/html; # Add index.php to the list if you are using PHP index index.html index.htm index.nginx-debian.html; } ``` Danach im DNS oder im /etc/hosts den DNS Eintrag hinzufügen. Zuvor aber nicht vergessen die Zertifikate an die richtigen Orte zu verschieben. ```bash cp cert.crt /etc/ssl/certs/ cp cert.key /etc/ssl/private/ ``` ### Die Konfiguration aktivieren Erstellen Sie eine symbolische Verknüpfung zwischen der Datei `/etc/nginx/sites-available/www.test.local.conf` und dem Verzeichnis `/etc/nginx/sites-enabled/`. Durch das Erstellen der symbolischen Verknüpfung wird die Konfigurationsdatei für `www.test.local` aktiviert und für Nginx verfügbar gemacht. ```bash sudo ln -s /etc/nginx/sites-available/www.test.local.conf /etc/nginx/sites-enabled/ sudo systemctl restart nginx.service ``` ### Testen [![image.png](https://bbw.schule/uploads/images/gallery/2024-06/scaled-1680-/TLaRKH5sqzQxhWFe-image.png)](https://bbw.schule/uploads/images/gallery/2024-06/TLaRKH5sqzQxhWFe-image.png) ## Verschlüsselte Abläufe sniffen: ### Mitschnitt von TLS-Traffic: - **Untersuchung:** Analyse des TLS-Verkehrs mittels Wireshark und Darstellung der Möglichkeit, den Traffic mitzuhören, wenn man Kontrolle über eine der beteiligten Seiten hat.