Markus Pesch
1579104655
All checks were successful
continuous-integration/drone/push Build is passing
208 lines
11 KiB
TeX
208 lines
11 KiB
TeX
% <#>-----------------------------------------------------------------------<#>
|
|
\section{DNS}%
|
|
\label{sec:dns}
|
|
|
|
% #>------------------------------------------------------------------------<#
|
|
\subsection{Aufbau des DNS}%
|
|
\label{sec:dns.aufbau}
|
|
|
|
Die Adressierung der Rechner in IP-basierten Netzen erfolgt über die IP-Adresse
|
|
des angesprochenen Rechners. Da der Mensch sich Nummernfolgen schlecht merken
|
|
kann, wurde schon früh eine Ersetzung der Nummern durch Namen auf der
|
|
Benutzerschnittstelle eingeführt. Die ursprüngliche Zuordnungsmethode wird auch
|
|
heute noch in kleinen Netzen angewendet: jeder Rechner im Netz verfügt über eine
|
|
Datei mit zuordnungen von Namen zu Nummern. Unter Unix-artigen Betriebssystemen
|
|
ist dies die Datei \textit{/etc/hosts}.
|
|
|
|
\begin{verbatim}
|
|
127.0.0.1 localdomain.localhost localhost
|
|
::1 localdomain.localhost localhost
|
|
\end{verbatim}
|
|
|
|
\begin{itemize}[label={},itemsep=0pt]
|
|
\item \textbf{Aufgabe 1a:} Überprüfen Sie ihre \textit{hosts} Datei, ob dort
|
|
abweichende Zuordungen zu der obrigen Ausgabe definiert sind
|
|
\item \textbf{Aufgabe 1b:} Welche Website wird ihnen im Browser dargestellt,
|
|
wenn Sie den folgenden Eintrag in die Datei \textit{hosts} aufnehmen und per
|
|
Browser die Seite \textit{hello-world.local} aufrufen? \texttt{198.145.29.83
|
|
hello-world.local}
|
|
\item \textbf{Aufgabe 1b:} In welchem Pfad findet man die entsprechende Datei
|
|
in Windows Systemen?
|
|
\end{itemize}
|
|
|
|
Dieses Verfahren der Namensauflösung führt in großen Netzwerken schnell zu
|
|
Problemen. Alle beteiligten Rechner benötigen in ihrer Version der Datei die
|
|
Zuordnungen aller Rechner, was die zentrale Verwaltung der Zuordnungen schnell
|
|
sehr aufwändig macht. Als Folge dieser Erkenntnis wurde das \acrfull{acr:dns}
|
|
entwickelt, das eine verteile Datenbank darstellt, bei der einzelne Server für
|
|
genau beschriebene Teilbereiche verantwortlich sind.
|
|
|
|
Den Namensraum im Internet ist hierarchisch gegliedert, ausgehend von der
|
|
höchsten Ebene, den sog. \acrfullpl{acr:tld}, können viele untergeordnete Ebenen
|
|
(Domains) eingefügt werden. Da die Internet-Entwicklung in den USA begann,
|
|
teilten die ersten \acrshortpl{acr:tld} den amerikanischen Netzbereich auf (z.B.
|
|
com, edu und org). Später kamen dann weitere \acrshortpl{acr:tld} für jedes Land
|
|
hinzu, die den genormten Länderkürzeln entprechen (ISO 3166), beispielsweise be,
|
|
de, nl usw. In der jüngsten Entwicklung wurden weitere allgemeine
|
|
\acrshortpl{acr:tld} hinzugefügt. Beispielsweise info, firm, museum, movie und
|
|
berlin.
|
|
|
|
Bei Domänennamen wird die Groß- und Kleinschreibung nicht beachtet, \textbf{edu}
|
|
und \textbf{EDU} bedeuten das gleiche. Einzelne Teil-Domainnamen dürfen maximal
|
|
63 Zeichen lang sein, der vollständige Domainname, \acrfull{acr:fqdn}, darf
|
|
nicht länger als 255 Zeichen sein. Für die Genehmigung eines neuen Domainnamens
|
|
ist die Verwaltung der nächst höheren Domain zuständig, für die Root-Zone und
|
|
damit die \acrshortpl{acr:tld} ist dies die \acrfull{acr:icann}.
|
|
|
|
\begin{itemize}[label={},itemsep=0pt]
|
|
\item \textbf{Aufgabe 2a:} Für welche Verwaltungsmaßnahmen ist die
|
|
\acrshort{acr:icann} verantwortlich? Nutzen Sie die Internetpräsenz der
|
|
\acrshort{acr:icann}, um die Frage zu beantworten.
|
|
\end{itemize}
|
|
|
|
% #>------------------------------------------------------------------------<#
|
|
\subsection{Betrieb einer Domain}%
|
|
\label{sec:dns.betrieb_einer_domain}
|
|
|
|
Für jede offiziell registrierte Domain müssen mindestens zwei DNS-Server
|
|
eingerichtet werden, die in unterschiedlichen Subnetzen stehen müssen. Einer
|
|
dieser Server wird dann als Primary, der andere als Replica betrieben.
|
|
Änderungen müssen dann nur noch am Primary vorgenommen werden, der oder die
|
|
Replicas werden durch den Primary über die Änderungen informiert, worauf ein
|
|
Zonentransfer der Daten vom Replica veranlast wird.
|
|
|
|
Sucht ein Rechner die IP-Nummer zu einem Namen, wird er zuest den DNS-Server,
|
|
der voreingestellt ist, befragen. Dies ist meist der Server der eigenen Domain
|
|
bzw. des eigenen Providers. Für Heimnetzwerke stellt beispielsweise der Router
|
|
einen DNS-Server bereit. Hat dieser Server den gewünschten Datensatz in seiner
|
|
Datenbank, so kann er die Anfrage sofort beantworten (Authorative Answer). Ist
|
|
der Datensatz nicht vorhanden, kann je nach Konfiguration ein Server aus einer
|
|
höheren Ebene befragt werden, der dann den zuständigen Server kennt oder
|
|
seinerseits die Anfrage wieder nach oben weiterreicht. Der Server kann jedoch
|
|
auch als Antwort dem Client mitteilen, welchen Server er fragen soll, um seine
|
|
Anfrage zu beantworten. Jeder DNS-Server muss mindestens die DNS-Server seiner
|
|
direkt untergeordneten Domains kennen, um Anfragen hierfür weiterreichen zu
|
|
können und er muss die Adressen aller Root-Server kennen.
|
|
|
|
Für die Verwaltung des Namesraums wird dieser in Zonen aufgeteilt. Ein
|
|
DNS-Server kann für eine oder mehrere DNS-Zonen verantwortlich sein. Es gibt
|
|
üblicherweise Zonen für die Vorwärtsauflösung (Forward Lookup) und
|
|
Rückwärtsauflösung (Reverse Lookup). Vorwärtsauflösung bedeutet, dass für einen
|
|
gegebenen Rechnernamen eine IP-Adresse gesucht wird. Rückwärtsauflösung bedeutet
|
|
dementsprechend, dass für eine gegebene IP-Adresse ein Rechnername gesucht wird.
|
|
Für jede Zone werden die Informationen als sogenannte \acrfullpl{acr:rr}
|
|
gespeichert. Dies sind die gängigen \acrshortpl{acr:rr}:
|
|
|
|
\begin{itemize}[itemsep=0pt]
|
|
\item[\textbf{\acrshort{acr:soa}}] \acrfull{acr:soa} markiert den Start einer
|
|
DNS-Zone mit verschiedenen allgemeinen Informationen
|
|
\item[\textbf{A}] Enthält die IPv4-Adresse zu einem gegebenen Rechnernamen
|
|
\item[\textbf{AAAA}] Enthält die IPv6-Adresse zu einem gegebenen Rechnernamen
|
|
\item[\textbf{NS}] Enthält den Rechnernamen eines für die Domain
|
|
verantwortlichen DNS-Servers. Darf nicht auf einen \textit{CNAME} Eintrag
|
|
verweisen!
|
|
\item[\textbf{MX}] Enthält die Prioritätsangabe und den Rechnernamen eines
|
|
zuständigen Mailservers. Darf nicht auf einen \textit{CNAME} Eintrag
|
|
verweisen!
|
|
\item[\textbf{PTR}] Enthält den Rechnernamen zu einer gegebenen IP-Adresse
|
|
(IPv4 oder IPv6)
|
|
\item[\textbf{SSHFP}] Enthält den Fingerabdruck des privaten SSH-Schlüssels,
|
|
welcher auf dem jeweiligen Rechner beim Verbindungsaufbau abgefragt und
|
|
überprüft wird. Ein Vergleich der Fingerabdrücke aus dem DNS mit dem, welcher
|
|
der entfernte Server anbietet, deckt so einen möglichen Man-in-Middle Angriff
|
|
auf.
|
|
\end{itemize}
|
|
|
|
Clientseitig können die Programme \textbf{dig}, \textbf{resolvectl},
|
|
\textbf{nslookup} und \textbf{host} zur Abfrage verwendet werden. Diese Abfragen
|
|
werden normalerweise über das Transportprotokoll UDP abgewickelt und sind an den
|
|
Port 53 gerichtet.
|
|
|
|
Lesen Sie die Dokumentation eines der oben genannten Programme oder informieren
|
|
Sie sich im Internet, um folgende Fragen zu beantworten:
|
|
|
|
\begin{itemize}[label={},itemsep=0pt]
|
|
\item \textbf{Aufgabe 2a:} Wann wird bei DNS das Transportprotokoll TCP eingesetzt?
|
|
\item \textbf{Aufgabe 2b:} Fragen Sie mit Hilfe eines der oben genannten
|
|
Programme den \acrshort{acr:rr} \textit{SSHFP} der Domain
|
|
\textit{pontos.cryptic.systems} ab. Welche Informationen werden zurück
|
|
gegeben?
|
|
\item \textbf{Aufgabe 2c:} Welche DNS-Server sind für die DNS-Zone
|
|
\textit{cryptic.systems} verantwortlich?
|
|
\item \textbf{Aufgabe 2c:} Welcher der DNS-Server ist für die Zone
|
|
\textit{cryptic.systems} der Primary und welcher der Replica DNS-Server?
|
|
\item \textbf{Aufgabe 2d:} Welche Mail-Server sind für die Zone
|
|
\textit{cryptic.systems} verantwortlich?
|
|
\item \textbf{Aufgabe 2e:} Welcher Mail-Server wird zur Zustellung von E-Mails
|
|
für die DNS-Zone \textit{cryptic.systems} privorisiert?
|
|
\item \textbf{Aufgabe 2f:} Welcher DNS-Name steht hinter der IP-Adresse
|
|
\textit{45.9.61.170}?
|
|
\end{itemize}
|
|
|
|
% #>------------------------------------------------------------------------<#
|
|
\subsection{Konfiguration des Clients}%
|
|
\label{sec:dns.konfiguration_des_clients}
|
|
|
|
Für die Namensauflösung auf der Seite des Clients ist der \textbf{Resolver}
|
|
verantwortlich, welcher von den Anwendungsprogrammen bei Bedarf automatisch
|
|
aufgerufen wird. Die Konfiguration erfolgt in Unix-Systemen über die Datei
|
|
\textit{/etc/resolv.conf}. Die wichtigsten Einträge in dieser Datei sind
|
|
\textit{domain} und \textit{nameserver}.
|
|
|
|
Immer seltener muss die Datei \textit{/etc/resolv.conf} manuell gepflegt werden.
|
|
Programme bzw. Dienste wie Beispielsweise der \textit{network-manager} oder
|
|
\textit{systemd-resolved} erstellen die Datei automatisch anhand der
|
|
Informationen, welche Sie per DHCP erhalten haben. Ändert man direkt den Inhalt
|
|
der Datei, kann dies dazu führen, dass das Programm oder der Dienst die
|
|
Einstellungen wieder überschreibt. Dem Programm bzw. dem Dienst muss daher
|
|
direkt mitgeteilt werden, welchen DNS-Server bzw. Domain der Rechner angehört,
|
|
um ein überschreiben zu vermeiden.
|
|
|
|
Mit dem Eintrag \textit{domain} wird festgelegt, welcher Domainname
|
|
standardmäßig an unvollständige Namen angehängt wird, bevor die Anfrage
|
|
abgesendet wird. Als unvollständig werden in der Regel Namen betrachtet, die
|
|
keinen Punkt enthalten. Es kann hier eine Liste mehrere Domainnamen angegeben
|
|
werden.
|
|
|
|
Mit dem Eintrag \textit{nameserver} wird angegeben, welcher DNS-Server für eine
|
|
Anfrage angesprochen wird. Zu Erhöhung der Redundanz ist es möglich, mehrere
|
|
Einträge dieser Art vorzunehmen. Ist der erste DNS-Server nicht erreichbar, wird
|
|
der nächste aus der Liste gefragt.
|
|
|
|
Die Datei \textit{/etc/nsswitch.conf} ist eine weitere Konfigurationsdatei aus
|
|
dem Bereich der Namensauflösung, in der eingestellt wird, in welcher Reihenfolge
|
|
interne und externe Quellen für die Namensauflösung verwendet werden. Wenn
|
|
folgende Zeile enthalten ist, wird zuerst in der lokalen Datei
|
|
\textit{/etc/hosts} gesucht. Wird dort kein passender Eintrag gefunden, wird das
|
|
DNS abfragt.
|
|
|
|
\begin{verbatim}
|
|
hosts: files dns
|
|
\end{verbatim}
|
|
|
|
\begin{itemize}[label={},itemsep=0pt]
|
|
\item \textbf{Aufgabe 3a:} In Kapitel \ref{sec:network} haben Sie erfolgreich
|
|
\textit{systemd-networkd} konfiguriert. Passen Sie ihre Konfiguration so an,
|
|
dass primär der DNS-Server \textit{8.8.8.8} und sekundär der DNS-Server
|
|
\textit{8.8.4.4} für ihren Netzwerkadapter verwendet wird.
|
|
\item \textbf{Aufgabe 3b:} Überprüfen Sie die Konfiguration mit dem Aufruf von
|
|
\textit{resolvectl}. Beide DNS-Server sollten unter Ihrem Netzwerkadapter
|
|
gelistet und zusätzlich in der Datei \textit{/etc/resolv.conf} aufgeführt
|
|
sein.
|
|
\end{itemize}
|
|
|
|
% #>------------------------------------------------------------------------<#
|
|
\subsection{Einstellen des Rechnernamens}%
|
|
\label{sec:dns.einstellen_des_rechnernamens}
|
|
|
|
Der Rechnername ist in der Datei \textit{/etc/hostname} gespeichert. Nach
|
|
Änderung der Datei ist es sinnvoll, den Rechner neu zu starten, um die Änderung
|
|
allen Diensten bekannt zu machen.
|
|
|
|
\begin{itemize}[label={},itemsep=0pt]
|
|
\item \textbf{Aufgabe 4a:} Ändern Sie den Rechnernamen ab und starten Sie das System neu
|
|
\item \textbf{Aufgabe 4b:} Nutzen Sie eines der Programme zur Namensauflösung,
|
|
um die IP-Adresse ihres Rechners anhand des neuen Rechnernamens durch den im
|
|
lokalen Netzwerk befindlichen DNS-Server auflösen zu lassen. Überprüfen Sie,
|
|
ob die IP-Adresse mit der IP-Adresse ihrer Netzwerkkarte übereinstimmt.
|
|
\end{itemize} |