RNDMISC-440: First Milestone
This commit is contained in:
93
kapitel2.tex
93
kapitel2.tex
@@ -7,37 +7,37 @@
|
||||
|
||||
\chapter{Grundlagen}
|
||||
|
||||
\section{Aufgabenstellung}
|
||||
\section{Einführung in die Problematik}
|
||||
|
||||
Um im Falle eines \ac{DDoS} Angriffs schnell reagieren zu können, muss es eine bequeme und einfache Möglichkeit geben, Routen zu manipulieren.
|
||||
Hierfür wurde das Projekt Remote Triggered Blackholing gestartet.
|
||||
Im Falle eines \ac{DDoS} Angriffs, könnten somit IP Präfixe des Angreifers gezielt in ein Blackhole geroutet werden.
|
||||
Im Falle eines \ac{DDoS}-Angriffs könnten somit IP Präfixe des Angreifers gezielt in ein Blackhole geroutet werden.
|
||||
Eine Belastung der Zielsysteme könnte somit verhindert werden, da die boshaften Pakete des Angreifers somit nicht beim Zielsystem ankommen würden, sondern in das schwarze Loch (Blackhole) weitergeleitet werden.
|
||||
Um die Routen in Routern manipulieren zu können, müssen diese über Injektoren in diese injiziert werden.
|
||||
Um die Routen in Routern manipulieren zu können, müssen diese über Injektoren in die Router injiziert werden.
|
||||
Im Verlaufe dieser Projektarbeit wird die Entwicklung der Injektoren Komponente und der Aufbau einer Staging(Testing) Umgebung genauer dargelegt.
|
||||
Der Aufbau und die Entwicklung der \ac{API} Komponente wurde bereits zu einem großteil in der T1000 erläutert, jedoch wurde im Rahmen der T2000 diese um einen Delete-Endpunkt erweitert.
|
||||
Der Aufbau und die Entwicklung der \ac{API} Komponente wurde bereits zu einem großteil in der T1000 erläutert, jedoch wurde im Rahmen der T2000 diese um einen Delete-Endpunkt erweitert.~\cite{Schoch.2022}
|
||||
|
||||
\newpage
|
||||
|
||||
|
||||
\section{Genutze Technologien}
|
||||
\section{Technologie Selektion}
|
||||
|
||||
\subsection{Django Rest Framework}
|
||||
|
||||
Django ist ein Web-Framework, dessen Ziel es ist, die Entwicklung von Web Applikationen schnell, einfach und übersichtlich zu machen.
|
||||
\glqq Django ist ein Web-Framework, dessen Ziel es ist, die Entwicklung von Web Applikationen schnell, einfach und übersichtlich zu machen.
|
||||
Das Django \ac{REST} Framework, hier nachfolgend als \ac{DRF} bezeichnet, ist ein \ac{REST} Framework welches auf Django basiert.
|
||||
Mit \ac{DRF} lassen sich \ac{REST}-ful \ac{API}s schnell und einfach gestalten.
|
||||
Hierfür bietet Django eine Reihe an vorgefertigten Hilfestellung an, welche im Verlaufe dieser Projektarbeit näher erläutert werden.
|
||||
Datenbankmodelle werden hier einfach programmatisch deklariert und werden anschließend von Django automatisch verwaltet.
|
||||
Datenbankmodelle werden hier einfach programmatisch deklariert und anschließend von Django automatisch verwaltet.
|
||||
Über Objekte können somit einzelne Werte aus der Datenbank entnommen werden, ohne sich mühsam mit \ac{SQL} Queries auseinandersetzen zu müssen.
|
||||
Sowohl Django als auch \ac{DRF} basieren auf der Programmiersprache Python.
|
||||
Sowohl Django als auch \ac{DRF} basieren auf der Programmiersprache Python.\grqq~\cite[Vgl.][S. 8]{Schoch.2022}
|
||||
|
||||
\subsection{Hashicorp Consul}
|
||||
|
||||
Consul, entwickelt von Hashicorp, ist eine Netzwerk Service Lösung, welche eine sichere Kommunikation zwischen Services und Applikation erlaubt.
|
||||
\glqq Consul, entwickelt von Hashicorp, ist eine Netzwerk Service Lösung, welche eine sichere Kommunikation zwischen Services und Applikation erlaubt.
|
||||
Consul kann sowohl redundant mit mehreren Nodes, als auch standalone genutzt werden.
|
||||
Für diese Projektarbeit, wird eine standalone Lösung eingesetzt und es wird lediglich die Key-Value Store Funktion genutzt.
|
||||
Mit dieser Funktion können Key-Value Paare über das Netzwerk in Consul gespeichert werden.
|
||||
Mit dieser Funktion können Key-Value [\ldots] Paare über das Netzwerk in Consul gespeichert werden.\grqq~\cite{Schoch.2022}
|
||||
|
||||
\subsection{Docker}
|
||||
|
||||
@@ -45,19 +45,35 @@ Docker ist Platform zur Containerisierung von Anwendungen.
|
||||
Hierdurch wird die Möglichkeit geschaffen eine isoliertes und leichtgewichtige Umgebung zu schaffen, welche sonst lediglich mittels \acp{VM} möglich wäre.
|
||||
Durch Docker wird auf produktiven System durch die zusätzliche Isolationsschicht der Containerisierung eine weitere Sicherheitsstufe hinzugefügt, welche potenziellen Angreifern den Zugriff auf das Hostsystem erschwert.
|
||||
|
||||
\subsection{Bird}
|
||||
|
||||
Der Bird Internet Routing Daemon (Bird) ist eine Open-Source-Routing-Software, die als Router fungiert.
|
||||
Bird implementiert unter anderem \ac{BGP}, um Routing-Informationen zwischen Routern auszutauschen und optimale Routenentscheidungen zu treffen.
|
||||
Bird arbeitet neben anderen \ac{BGP}-Routern, um \ac{BGP}-Sessions aufzubauen, Routing-Updates auszutauschen und Routing-Informationen zu speichern.
|
||||
Bird kann \ac{BGP}-Routen exportieren und an andere Router weitergeben, indem es \ac{BGP}-`Update`-Messages verwendet und Exportregeln in seiner Konfigurationsdatei folgt.
|
||||
Diese Regeln definieren, welche Routen exportiert werden sollen und können durch Filter und Richtlinien gesteuert werden.
|
||||
Durch den Export von \ac{BGP}-Routen ermöglicht Bird eine effiziente und zuverlässige Kommunikation und Weiterleitung in großen Netzwerken.
|
||||
|
||||
\newpage
|
||||
|
||||
\section{Stand der Technik}
|
||||
|
||||
Das \ac{BGP} ist ein Protokoll des Internet-Routings, das die \emph{besten} Wege für den Datenverkehr zwischen \acp{AS} bestimmt.
|
||||
Im ursprünglichen Sinne war mit einem \ac{AS} eine Organisation mit einem Standort gemeint, welche intern über ein internes routing Protokoll verfügte.
|
||||
Mit der Zeit hat sich die Bedeutung eines \ac{AS} abgewandelt und eine \ac{ASN} kann von einer Organisation Standortübergreifend verwendet werden bzw. eine Organisation kann über mehrere \acp{ASN} verfügen.
|
||||
Es verwendet Peering-Verbindungen zwischen Routern, um Informationen über erreichbare Netzwerke auszutauschen und die optimalen Pfade für den Datenaustausch zu ermitteln.
|
||||
Anders als bei herkömmlichen Routing Protokollen wie dem \ac{RIP} oder \ac{OSPF}, wird hier eine direkte \ac{TCP} Verbindung zwischen Routern(Neighbours/Nachbarn) hergestellt.
|
||||
Wenn zwei \ac{BGP} Nachbarn eine \ac{BGP} Verbindung aufgebaut haben, beginnen diese \ac{BGP} Informationen in Form von Nachrichten auszutauschen.
|
||||
Jede Nachricht besteht aus einem Header, und dem tatsächlichen Inhalt.
|
||||
\cite[Vgl.][S. 19 f.]{beijnum.2002a}
|
||||
Um eine \ac{BGP} Verbindung herzustellen, müssen sich Router über eine Open-Message verbinden.
|
||||
Diese wird direkt nach dem Aufbau der \ac{TCP} Verbindung ausgetauscht.
|
||||
\cite[Vgl.][S. 20 ff.]{beijnum.2002a}
|
||||
Eine weitere Unterscheidung besteht darin, dass es sich bei \ac{BGP} um 'Policy'-basiertes Routing, im Vergleich zu `Metrik` basierten Routing handelt.
|
||||
Konkret bedeutet dies, dass ein \ac{AS} selbst bestimmen kann, wie Datenverkehr geroutet werden soll, sollte das \ac{AS} über mindestens zwei Uplinks verfügen.
|
||||
|
||||
\begin{table}[h]
|
||||
|
||||
\vspace{1cm}
|
||||
Wenn zwei \ac{BGP} Nachbarn eine \ac{TCP} Verbindung aufgebaut haben, beginnen diese \ac{BGP} Informationen in Form von Nachrichten auszutauschen.
|
||||
Jede Nachricht besteht aus einem Header, und dem tatsächlichen Inhalt.~\cite[Vgl.][S. 19 f.]{beijnum.2002a}
|
||||
Um eine \ac{BGP} Verbindung herzustellen, müssen sich Router über eine `Open`-Message verbinden.
|
||||
Diese wird direkt nach dem Aufbau der \ac{TCP} Verbindung ausgetauscht.~\cite[Vgl.][S. 20 f.]{beijnum.2002a}
|
||||
|
||||
\begin{table}[H]
|
||||
\begin{center}
|
||||
\begin{tabular}{ |c|c|c|c|c|c| }
|
||||
\hline
|
||||
@@ -66,14 +82,15 @@ Diese wird direkt nach dem Aufbau der \ac{TCP} Verbindung ausgetauscht.
|
||||
\hline
|
||||
\end{tabular}
|
||||
\end{center}
|
||||
\caption{\label{bibtex-macros}Aufbau der Open-Message}
|
||||
\centering{Quelle: \cite[RFC4271][]{rfc4271} in Anlehnung an \cite[S. 20]{beijnum.2002a}}
|
||||
\caption{\label{open-message}Aufbau der 'Open'-Message}
|
||||
\centering{Quelle: \cite[RFC4271][]{rfc4271} in Anlehnung an~\cite[S. 20]{beijnum.2002a}}
|
||||
\end{table}
|
||||
|
||||
Sollte die Open-Message erfolgreich vom Gegenstück angenommen worden sein, sendet dieser eine 'Keepalive'-Message zurück.
|
||||
Anschließend wird die BGP-Routentabelle über 'Update'-Messages ausgetauscht.~\cite[Vgl.][S. 20]{beijnum.2002a}
|
||||
|
||||
Um Routen zu \glqq annoncieren\grqq\space oder zurückzuziehen wird die 'UPDATE' Message verwendet.
|
||||
|
||||
\begin{table}[h]
|
||||
\begin{table}[H]
|
||||
\begin{center}
|
||||
\begin{tabular}{ |c|c|c|c|c| }
|
||||
\hline
|
||||
@@ -82,24 +99,32 @@ Um Routen zu \glqq annoncieren\grqq\space oder zurückzuziehen wird die 'UPDATE'
|
||||
\hline
|
||||
\end{tabular}
|
||||
\end{center}
|
||||
\caption{\label{bibtex-macros}Aufbau der Update-Message}
|
||||
\centering{Quelle: \cite[RFC4271][]{rfc4271} in Anlehnung an \cite[S. 20]{beijnum.2002a}}
|
||||
\caption{\label{update-message}Aufbau der 'Update'-Message}
|
||||
\centering{Quelle:~\cite[RFC4271][]{rfc4271} in Anlehnung an~\cite[S. 20]{beijnum.2002a}}
|
||||
\end{table}
|
||||
|
||||
|
||||
Durch die `Update`-Message werden die eigentlichen Informationen übertragen.
|
||||
Hierdurch können neue Routen hinzugefügt, oder alte Routen zurückgezogen werden.
|
||||
Ein nicht optionales Attribute ist der `AS\_PATH`, welcher beschreibt, über welche \ac{AS} bestimmte Präfixe zu erreichen sind.
|
||||
|
||||
\newpage
|
||||
|
||||
\begin{figure}[h]
|
||||
\centering
|
||||
\fbox{\includegraphics[width=\textwidth]{images/BGP_Example.png}}
|
||||
\caption{\label{fig-as-example}Struktur eines beispielhaften BGP-Netzwerks}
|
||||
\centering{Quelle: Eigene Abbildung}
|
||||
\end{figure}
|
||||
%Routepropagation: %TODO Explain how routes are propageted in BGP
|
||||
%
|
||||
%
|
||||
%\begin{figure}[H]
|
||||
% \centering
|
||||
% \fbox{\includegraphics[width=\textwidth]{images/BGP_Example}}
|
||||
% \caption{\label{bgp-network-structure}Struktur eines beispielhaften BGP-Netzwerks}
|
||||
% \centering{Quelle: Eigene Abbildung}
|
||||
%\end{figure}
|
||||
|
||||
|
||||
\ac{BGP}-Communities sind ein Mechanismus, mit welchem Netzwerkbetreiber spezifische Gruppen oder Kategorien von Präfixen markieren können.
|
||||
Diese Markierungen, als \glqq Communities\grqq bezeichnet, können verwendet werden, um Routen zu identifizieren und zu beeinflussen, wie sie von anderen \acp{AS} interpretiert werden.
|
||||
Diese Markierungen, als \glqq Communities\grqq~bezeichnet, können verwendet werden, um Routen zu identifizieren und zu beeinflussen, wie sie von anderen \acp{AS} interpretiert werden.
|
||||
Durch die Verwendung von Communities können Netzwerkbetreiber das Routing auf feinere Weise steuern und anpassen, ohne die Kernstruktur des \ac{BGP}-Netzwerks zu verändern.
|
||||
Die Manipulation von Routen mittels \ac{BGP} Communities erfolgt, indem einem bestimmten Präfix eine oder mehrere Community-Markierungen zugewiesen werden.
|
||||
Die Manipulation von Routen mittels \ac{BGP} Communities erfolgt, indem einem bestimmten Präfix eine oder mehrere \ac{BGP}-Communities zugewiesen werden.
|
||||
Andere \ac{AS} können dann diese Community-Markierungen verwenden, um spezifische Aktionen auszuführen, wie z.B.:
|
||||
|
||||
\begin{itemize}
|
||||
@@ -110,6 +135,7 @@ Dies kann dazu verwendet werden, den bevorzugten Weg für den Datenverkehr zu be
|
||||
Durch Markieren von Präfixen können sie bestimmte \ac{AS} dazu anleiten, den Datenverkehr auf bestimmten Wegen zu leiten, um Netzwerkressourcen effizienter zu nutzen.
|
||||
|
||||
\item Blackhole-Routing: \ac{BGP} Communities können dazu genutzt werden, bestimmte Präfixe zu markieren und den Datenverkehr über Blackholes zu lenken, um Angriffe oder Überlastungen zu bewältigen.
|
||||
Spezielle für Blackholing wurde eine eigene Community definiert: \verb|65535:666|~\cite[Vgl.][]{rfc7999}
|
||||
|
||||
\item Routenfilterung: \ac{AS} können Community-Markierungen verwenden, um präzise Routenfilterung durchzuführen.
|
||||
Damit können sie bestimmte Routen von bestimmten Quellen oder für bestimmte Zwecke filtern oder akzeptieren.
|
||||
@@ -118,11 +144,6 @@ Damit können sie bestimmte Routen von bestimmten Quellen oder für bestimmte Zw
|
||||
Die Verwendung von \ac{BGP} Communities ermöglicht eine flexiblere und zielgerichtete Steuerung des Internet-Routings.
|
||||
Netzwerkbetreiber können so gezielt auf unterschiedliche Anforderungen reagieren und gleichzeitig die Integrität und Stabilität des \ac{BGP}-Netzwerks aufrechterhalten.
|
||||
|
||||
|
||||
\begin{flushleft}
|
||||
Durch den nahezu identischen Technologiestack wie bei der T1000 und um den Lesefluss zu wahren, wurden einige Kurzbeschreibungen in abgeänderter Form wiederverwendet.
|
||||
\end{flushleft}
|
||||
|
||||
\newpage
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
Reference in New Issue
Block a user