Made corrections

This commit is contained in:
Leon Schoch
2023-09-15 14:21:07 +02:00
parent 9361a08689
commit 3cf643bc1b
8 changed files with 31 additions and 27 deletions

View File

@@ -144,3 +144,4 @@ YEAR = 2002
month = oct, month = oct,
abstract = {This document describes the use of a well-known Border Gateway Protocol (BGP) community for destination-based blackholing in IP networks. This well-known advisory transitive BGP community named "BLACKHOLE" allows an origin Autonomous System (AS) to specify that a neighboring network should discard any traffic destined towards the tagged IP prefix.}, abstract = {This document describes the use of a well-known Border Gateway Protocol (BGP) community for destination-based blackholing in IP networks. This well-known advisory transitive BGP community named "BLACKHOLE" allows an origin Autonomous System (AS) to specify that a neighboring network should discard any traffic destined towards the tagged IP prefix.},
} }

Binary file not shown.

View File

@@ -146,17 +146,17 @@ Gutachter der Studienakademie & \BetreuerDHBW \\
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{abstract} \begin{abstract}
Ein \ac{DDoS}-Angriff kann eine starke Auslastung der betroffenen Systeme verursachen. Ein \ac{DDoS} Angriff kann eine starke Auslastung der betroffenen Systeme verursachen.
Dies kann einen Absturz zur Folge haben, oder den Zugriff auf die Systeme verhindern. Dies kann einen Absturz zur Folge haben, oder den Zugriff auf die Systeme verhindern.
Um dieses Problem zu lösen wurde der Route Injection Service entwickelt, mit welchem ein Nutzer in der Lage ist, Netzwerkroute über \ac{BGP}-Communities zu manipulieren. Um dieses Problem zu lösen wurde der Route Injection Service entwickelt, mit welchem ein Nutzer in der Lage ist, Netzwerkrouten über \ac{BGP} Communities zu manipulieren.
Ein \ac{DDoS}-Angriff kann daher in ein Blackhole geroutet, und eine Belastung der Zielsysteme verhindert werden. Ein \ac{DDoS}-Angriff kann daher in ein Blackhole geroutet, und eine Belastung der Zielsysteme verhindert werden.
\vspace{2cm} \vspace{2cm}
\begin{flushleft} \begin{flushleft}
\emph{A \ac{DDoS}-Attack can cause a high load on the attacked systems. \emph{A \ac{DDoS} attack can cause a high load on the attacked systems.
As a result, the systems might be inaccessible or crash. As a result, the systems may become inaccessible or crash.
To solve this problem, we developed the route injection service, which enables a user to manipulate network routes via \ac{BGP}-Communities. To solve this problem, we developed the route injection service, which enables a user to manipulate network routes via \ac{BGP} communities.
A \ac{DDoS}-Attack can then be routed into a blackhole, and a strain on the target systems can be avoided.} A \ac{DDoS} attack can then be routed into a blackhole, and an impact on the target systems can be avoided.}
\end{flushleft} \end{flushleft}
\end{abstract} \end{abstract}

View File

@@ -42,7 +42,7 @@ Mit dieser Funktion können Key-Value [\ldots] Paare über das Netzwerk in Consu
\subsection{Docker} \subsection{Docker}
Docker ist Platform zur Containerisierung von Anwendungen. 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. Hierdurch wird die Möglichkeit geschaffen eine isolierte 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. 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} \subsection{Bird}
@@ -58,8 +58,8 @@ Durch den Export von \ac{BGP}-Routen ermöglicht Bird eine effiziente und zuverl
\section{Stand der Technik} \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. Das \ac{BGP} ist ein Protokoll des Internet-Routings, das die 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. 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. 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. 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. 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.
@@ -131,9 +131,6 @@ Andere \ac{AS} können dann diese Community-Markierungen verwenden, um spezifisc
\item Pfadwahl beeinflussen: Durch das Zuweisen von Communities zu bestimmten Präfixen können Netzwerkbetreiber festlegen, wie andere \ac{AS} ihre Routen interpretieren sollen. \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. 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 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} Spezielle für Blackholing wurde eine eigene Community definiert: \verb|65535:666|~\cite[Vgl.][]{rfc7999}

View File

@@ -18,6 +18,12 @@ Die Architektur des Route Injection Service besteht aus drei wesentlichen Bestan
\newpage \newpage
\section{Anexia Engine}
Mit der Anexia Engine können Benutzer über ein Webportal verschiedene von der Anexia zur Verfügung gestellte Services steuern.
Die Engine verfügt auch über eine \ac{API}, mit welcher Entwickler Ihre eigenen Applikationen, an Anexia Services koppeln können.
Intern kommuniziert die Engine wiederum mit den \ac{API}s der einzelnen Services.
\section{\ac{API}} \section{\ac{API}}
Die \ac{API} ist dafür verantwortlich die Eingaben des Users, welche über die Engine übermittelt wurden zu überprüfen und zu validieren. Die \ac{API} ist dafür verantwortlich die Eingaben des Users, welche über die Engine übermittelt wurden zu überprüfen und zu validieren.

View File

@@ -246,7 +246,7 @@ def generate_bird_files(v4_routes, v6_routes, pybird, pybird6):
\newpage \newpage
Die Methode \verb|bird_config|, welche um eine gute Struktur zu wahren zu einer gesonderten Datei und Klasse angehört, ruft die \verb|get_communities| Methode der Route Dataclass auf, um die Routen in einer von Bird lesbares Format zu wandeln. Die Methode \verb|bird_config|, welche um eine gute Struktur zu wahren zu einer gesonderten Datei und Klasse angehört, ruft die \verb|get_communities| Methode der Route Dataclass auf, um die Routen in ein von Bird lesbares Format zu wandeln.
Hier wurde das Prinzip des `Separation of Concerns` nicht eingehalten. Hier wurde das Prinzip des `Separation of Concerns` nicht eingehalten.
Im Idealfall sollte die Routenlogik und Birdlogik vollkommen voneinander getrennt sein. Im Idealfall sollte die Routenlogik und Birdlogik vollkommen voneinander getrennt sein.
Durch die Aufteilung des Codes in abgegrenzte Bereiche wird der Code übersichtlicher und leichter verständlich. Durch die Aufteilung des Codes in abgegrenzte Bereiche wird der Code übersichtlicher und leichter verständlich.
@@ -533,7 +533,7 @@ def create_heartbeat(consul, injector_id):
return session_id return session_id
\end{lstlisting} \end{lstlisting}
Nach dem initialen Anlegen des Heartbeateintrages wird dieser alle fünf Sekunden erneuert und sicherzustellen, dass die \ac{TTL} des Eintrages nicht abläuft. Nach dem initialen Anlegen des Heartbeateintrages wird dieser alle fünf Sekunden erneuert um sicherzustellen, dass die \ac{TTL} des Eintrages nicht abläuft.
\subsection{Emergency-Mode} %TODO RNDMISC-363 \subsection{Emergency-Mode} %TODO RNDMISC-363
@@ -544,7 +544,7 @@ Der Emergency-Mode fungiert als eine Art Sicherheitsvorkehrung, die sicherstellt
Der Namensteil `Mode` lässt vermuten, dass es sich um einen tatsächlichen Operationsmodus handelt. Der Namensteil `Mode` lässt vermuten, dass es sich um einen tatsächlichen Operationsmodus handelt.
Dies ist allerdings nicht ganz korrekt. Dies ist allerdings nicht ganz korrekt.
Der Emergency-Mode ist eher als Funktionalitätserweiterung zu sehen und kann selbst dann aktiviert werden, wenn die Kommunikation zwischen \ac{API} und Injector intakt ist. Der Emergency-Mode ist eher als Funktionalitätserweiterung zu sehen und kann selbst dann aktiviert werden, wenn die Kommunikation zwischen \ac{API} und Injector intakt ist.
Dies ist insbesondere nützlich, wenn dringende Änderungen an den Routingeinstellungen erforderlich sind, die nicht auf die normale Kommunikation warten können. %Dies ist insbesondere nützlich, wenn dringende Änderungen an den Routingeinstellungen erforderlich sind, die nicht auf die normale Kommunikation warten können.
Um Zugriff auf die Kommandozeile zu erhalten, muss ein Nutzer sich über \ac{SSH} auf den Injector einloggen. Um Zugriff auf die Kommandozeile zu erhalten, muss ein Nutzer sich über \ac{SSH} auf den Injector einloggen.
Firmeninterne Automatismen stellen sicher, dass nur befugte Nutzer Zugriff auf das System haben. Firmeninterne Automatismen stellen sicher, dass nur befugte Nutzer Zugriff auf das System haben.
@@ -636,7 +636,7 @@ Zur Vermeidung des Dirty read Problems, welches in der Vorlesung Datenbanken erl
So kann ein zweiter Prozess das Emergency File erst lesen, wenn der erste Prozess den Schreibvorgang abgeschlossen hat. So kann ein zweiter Prozess das Emergency File erst lesen, wenn der erste Prozess den Schreibvorgang abgeschlossen hat.
Dies dient nicht nur zur Mehrbenutzersynchronisation von mehreren Menschen, sondern hauptsächlich, dass der Hauptprozess nicht versucht das Emergency File zu lesen, während ein Operator mittels des Emergency Mode Änderungen vornimmt. Dies dient nicht nur zur Mehrbenutzersynchronisation von mehreren Menschen, sondern hauptsächlich, dass der Hauptprozess nicht versucht das Emergency File zu lesen, während ein Operator mittels des Emergency Mode Änderungen vornimmt.
Da Python, beziehungsweise die benutze \ac{JSON} Bibliothek Probleme damit hatte verschachtelte \ac{JSON}s zu de- und enkodieren, wurde eine weitere Dataclass angelegt. Da Python, beziehungsweise die benutzte \ac{JSON} Bibliothek Probleme damit hatte verschachtelte \ac{JSON}s zu de- und enkodieren, wurde eine weitere Dataclass angelegt.
Diese Dataclass dient nur als Container, um eine Liste an Routenobjekten anzulegen. Diese Dataclass dient nur als Container, um eine Liste an Routenobjekten anzulegen.
\begin{lstlisting}[language=python, \begin{lstlisting}[language=python,
@@ -772,9 +772,9 @@ Dieser Abschnitt erläutert die Bedeutung und den Prozess des Unit-Testings für
Die Verwendung von Unit-Tests bietet mehrere Vorteile. Die Verwendung von Unit-Tests bietet mehrere Vorteile.
Sie ermöglichen die frühzeitige Erkennung von Fehlern und Unstimmigkeiten im Code. Sie ermöglichen die frühzeitige Erkennung von Fehlern und Unstimmigkeiten im Code.
Darüber hinaus dienen sie als Form der Dokumentation und unterstützen Refactoring-Bemühungen, um sicherzustellen, dass Änderungen den erwarteten Verhalten nicht beeinträchtigen. Darüber hinaus dienen sie als Form der Dokumentation und unterstützen Refactoring-Bemühungen, um sicherzustellen, dass Änderungen das erwarteten Verhalten nicht beeinträchtigen.
Unit-Tests schaffen Vertrauen in die Software, da sie Fehler und Probleme offenlegen, bevor sie zu potenziell schwerwiegenden Problemen werden können. Unit-Tests schaffen Vertrauen in die Software, da sie Fehler und Probleme offenlegen, bevor sie zu potenziell schwerwiegenden Problemen werden können.
Im Fall des Route Injection Service wurde das pytest als Testwerkzeug eingesetzt. Im Fall des Route Injection Service wurde pytest als Testwerkzeug eingesetzt.
Die Testabdeckung ist von zentraler Bedeutung, da sie sicherstellt, dass jeder relevante Teil des Codes getestet wird. Die Testabdeckung ist von zentraler Bedeutung, da sie sicherstellt, dass jeder relevante Teil des Codes getestet wird.
Über den gesamten Route Injection Service wurde hier eine Codeabdeckung von 97\% erreicht. Über den gesamten Route Injection Service wurde hier eine Codeabdeckung von 97\% erreicht.
Die Automatisierung von Unit-Tests gewährleistet, dass Tests konsistent und wiederholbar durchgeführt werden können. Die Automatisierung von Unit-Tests gewährleistet, dass Tests konsistent und wiederholbar durchgeführt werden können.
@@ -787,8 +787,8 @@ Unit Testing ist ein fortlaufender Prozess, der die Qualität und Stabilität de
Die regelmäßige Aktualisierung und Erweiterung der Test Suite ist unerlässlich, um sicherzustellen, dass der Service den sich ändernden Anforderungen gerecht wird und robust bleibt. Die regelmäßige Aktualisierung und Erweiterung der Test Suite ist unerlässlich, um sicherzustellen, dass der Service den sich ändernden Anforderungen gerecht wird und robust bleibt.
Insgesamt trägt das Unit Testing maßgeblich zur Zuverlässigkeit und Leistungsfähigkeit des Route Injection Service bei. Insgesamt trägt das Unit Testing maßgeblich zur Zuverlässigkeit und Leistungsfähigkeit des Route Injection Service bei.
Die Überprüfung der Funktionalität einer einzelnen Methode ist eines der Hauptaufgaben von Unit-Testing. Die Überprüfung der Funktionalität einer einzelnen Methode ist eine der Hauptaufgaben von Unit-Testing.
Da viele Methoden jedoch voneinander oder anderen Komponenten abhängig sind, müssen diese über `Mockings` ersetzt werden. Da viele Methoden jedoch voneinander oder anderen Komponenten abhängig sind, müssen diese über `Mocks` ersetzt werden.
Mittels der Python `unittest` Bibliothek ist dies sehr einfach möglich. Mittels der Python `unittest` Bibliothek ist dies sehr einfach möglich.
\newpage \newpage
@@ -831,11 +831,11 @@ class TestRespondStateToConsul(TestCase):
) )
\end{lstlisting} \end{lstlisting}
Die Mockings werden hier als Decorator übergeben, da die Methode anderen Methoden des Injectors aufruft und externe Abhängigkeiten wie die Consul oder Pybird Bibliothek besitzt. Die Mocks werden hier als Decorator übergeben, da die Methode anderen Methoden des Injectors aufruft und externe Abhängigkeiten wie die Consul oder Pybird Bibliothek besitzt.
\textbf{Arrange (Vorbereiten):} \textbf{Arrange (Vorbereiten):}
In Zeile 8--21 werden die Rückgabewerte der Mockings und Parameter der zu überprüfenden Methode festgelegt. In Zeile 8--21 werden die Rückgabewerte der Mocks und Parameter der zu überprüfenden Methode festgelegt.
\textbf{Act (Ausführen):} \textbf{Act (Ausführen):}

View File

@@ -14,7 +14,7 @@ Dies dient dazu, eine chaotische unstrukturierte Umsetzung zu vermeiden und somi
Des Weiteren kann durch eine gute Planung, weiteres Feedback von Kollegen eingeholt werden, welche oftmals mit einer anderen Perspektive neue Erkenntnisse und Ideen einbringen können. Des Weiteren kann durch eine gute Planung, weiteres Feedback von Kollegen eingeholt werden, welche oftmals mit einer anderen Perspektive neue Erkenntnisse und Ideen einbringen können.
Somit kann vermieden werden, dass die Umsetzung mittendrin unterbrochen wird, da Komponenten noch nicht bereit sind, oder konkrete Einzelheiten noch ungeklärt sind. Somit kann vermieden werden, dass die Umsetzung mittendrin unterbrochen wird, da Komponenten noch nicht bereit sind, oder konkrete Einzelheiten noch ungeklärt sind.
Im Route Injection Projekt musste hier spezielle noch geklärt werden, wie die \ac{BGP}-Sessions konfiguriert werden und welcher Router sich hierfür eignen würde. Im Route Injection Projekt musste hier speziell noch geklärt werden, wie die \ac{BGP}-Sessions konfiguriert werden und welcher Router sich hierfür eignen würde.
\newpage \newpage
@@ -41,7 +41,7 @@ Daher wurden folgende Richtwerte für die \acp{VM} festgelegt.
\begin{itemize} \begin{itemize}
\item Die Arbeitsspeicherauslastung darf 25\% freien Speicher nicht unterschreiten \item Die Arbeitsspeicherauslastung darf 25\% freien Speicher nicht unterschreiten
\item Die Festplattenspeicherauslastung darf 20\% freien Speicher nicht unterschreiten \item Die Festplattenspeicherauslastung darf 20\% freien Speicher nicht unterschreiten
\item Die CPU Auslastung dark 80\% nicht überschreiten \item Die CPU Auslastung darf 80\% nicht überschreiten
\item Die \ac{BGP} Sessions müssen etabliert sein \item Die \ac{BGP} Sessions müssen etabliert sein
\end{itemize} \end{itemize}

View File

@@ -18,7 +18,7 @@ Insbesondere im Bereich der Netzwerke konnte ein tieferes Verständnis des \ac{B
Aufgrund eines zeitlichen Mangels konnte die Staging Umgebung noch nicht vollständig ausgerollt werden. Aufgrund eines zeitlichen Mangels konnte die Staging Umgebung noch nicht vollständig ausgerollt werden.
Ein funktionaler erster Test war dadurch nicht möglich. Ein funktionaler erster Test war dadurch nicht möglich.
Ebenfalls davon abhängig war die Anbindung der Anexia Engine, da dies ohne eine bestehende Staging Umgebung unsinnig wäre. Ebenfalls davon abhängig war die Anbindung der Anexia Engine, da dies ohne eine bestehende Staging Umgebung nicht möglich wäre.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%