%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Descr:       Vorlage für Berichte der DHBW-Karlsruhe, Ein Kapitel
%% Author:      Prof. Dr. Jürgen Vollmer, vollmer@dhbw-karlsruhe.de
%% $Id: kapitel1.tex,v 1.24 2020/03/13 16:02:34 vollmer Exp $
%% -*- coding: utf-8 -*-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\chapter{Grundlagen}

\section{Aufgabenstellung}

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.
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.
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 in der T1000 erläutert.

\newpage


\section{Genutze Technologien}

\subsection{Django Rest Framework}

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.
Ü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.

\subsection{Hashicorp Consul}

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.

\subsection{Docker}

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.

\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.
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}

\begin{table}[h]
\begin{center}
 \begin{tabular}{ |c|c|c|c|c|c| }
 \hline
  Version & My AS & Hold time & Identifier & Parlen & Optional parameters \\
  1 byte & 2 bytes & 2 bytes & 4 bytes & 1 byte & 0-255 bytes \\
  \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}}
\end{table}


Um Routen zu \glqq annoncieren\grqq\space oder zurückzuziehen wird die 'UPDATE' Message verwendet.

\begin{table}[h]
\begin{center}
 \begin{tabular}{ |c|c|c|c|c| }
 \hline
  UR length & Withdrawn routes & PA length & Path attributes & NLRI \\
  2 bytes & Variable & 2 bytes & Variable & Variable \\
  \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}}
\end{table}

\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}


\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.
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.
Andere \ac{AS} können dann diese Community-Markierungen verwenden, um spezifische Aktionen auszuführen, wie z.B.:

\begin{itemize}
\item Pfadwahl beeinflussen: Durch das Zuweisen von Communities zu bestimmten Präfixen können Netzwerkbetreiber festlegen, wie andere \ac{AS} ihre Routen interpretieren sollen.
Dies kann dazu verwendet werden, den bevorzugten Weg für den Datenverkehr zu beeinflussen.

\item Traffic-Engineering: Netzwerkbetreiber können Communities verwenden, um den Datenverkehrsfluss zu steuern.
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.

\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.

\end{itemize}
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

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\endinput
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
