aegis-dos-protection/doc/presentation_review2/presentation2.tex

347 lines
11 KiB
TeX

\documentclass{beamer}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[german]{babel}
\usepackage{pdfpages}
\usepackage{amssymb}
\usepackage{enumerate}
\usepackage{array}
\usepackage{lmodern}
\usepackage{url}
\usepackage{hyperref}
\usepackage[all]{xy}
\usepackage[export]{adjustbox}
\usepackage{subcaption}
\usepackage{listings}
\usepackage{graphicx}
\graphicspath{{./img/}}
%Farbschema
\definecolor{tuerkis}{rgb}{0.0, 0.65, 0.76}
\definecolor{weiss}{rgb}{1.0,1.0,1.0}
\definecolor{gruen}{rgb}{0.22, 0.74, 0.07}
\usetheme{metropolis}
%\usecolortheme{whale}
\setbeamercolor{progress bar}{fg=gruen,bg=gruen}
\setbeamercolor{frametitle}{bg = gruen}
\setbeamercolor{background canvas}{bg = weiss}
\setbeamercolor{footline}{fg=gray}
\setbeamerfont{page number in head/foot}{size=\scriptsize}
\setbeamercolor{title}{fg = black}
\setbeamertemplate{frame footer}{ \insertlogo{\includegraphics[width=0.1\textwidth]{aegis_logo_with_name.pdf}} \hfill \insertsection}
\lstset{frame=single}
%\logo{\includegraphics[width=.1\textwidth]{aegis_logo_with_name.pdf}\hspace*{.05\paperwidth}}
%\logo{\includegraphics[width=.1\textwidth]{img/aegis_logo_with_name.pdf}}
\newcommand\pipeline{\center \includegraphics[width=0.6\linewidth]{grobentwurf/packet_diagram_pipeline.png}}
%Information to be included in the title page:
\title[Abwehr von Denial-of-Service-Angriffen durch effiziente User-Space Paketverarbeitung: AEGIS]{Abwehr von Denial-of-Service-Angriffen durch effiziente User-Space Paketverarbeitung: AEGIS}
\subtitle{Review für die Implementierungsphase}
\institute{Technische Universität Ilmenau}
\date{24.06.2021}
\begin{document}
\begin{frame}
\maketitle % Automatically created using the information in the commands above
\end{frame}
\begin{frame}{Aufgabenstellung}
\center
\includegraphics[width=0.3\textwidth]{dpdk_logo.png}
\includegraphics[width=\textwidth]{Netzwerkplan-Real.png}
\center
Abwehrsystem gegen DoS-Angriffe
\end{frame}
\begin{frame}{Aufgabenstellung}
\begin{itemize}
\item Die Software soll mehrere Varianten von Attacken abwehren
\item Nur eine davon ist für diesen Vortrag relevant:
\end{itemize}
\center
\textbf{SYN-Flood-Attacke}
\begin{figure}[h!]
\includegraphics[width=0.5\textwidth]{SYN-FLOOD.png}
\end{figure}
\end{frame}
\begin{frame}{Gliederung}
\begin{enumerate}
\item \textbf{Grobentwurf}
\item \textbf{Feinentwurf}
\begin{enumerate}
\item Komponente: NicManagement
\item Komponente: PacketDissection
\item Komponente: Inspection
\item Komponente: Treatment
\item Einsatz von mehreren Threads
\item Alternative Entwürfe
\end{enumerate}
\item \textbf{Entwurfsmuster}
\item \textbf{Stand des Projekts}
\item \textbf{Ausblick}
\end{enumerate}
\end{frame}
% ===== G R O B E N T W U R F ===== %
\begin{frame}{Grobentwurf}
\begin{center}
%\includegraphics[width=\linewidth]{grobentwurf/packet_diagram.pdf}
\end{center}
\end{frame}
\begin{frame}{Grobentwurf}
\begin{center}
%\includegraphics[width=0.95\linewidth]{roadmap/roadmap2.pdf}
Die Architektur folgt dem Pipeline-Modell.
\end{center}
\end{frame}
% ===== F E I N E N T W U R F ===== %
\begin{frame}{Feinentwurf}
%\includegraphics[width=\textwidth]{roadmap/roadmap2_1.pdf}
\end{frame}
\begin{frame}{Feinentwurf: NicManagement}
\begin{figure}
\includegraphics[width=0.3\textwidth]{dpdk_logo.png}
\includegraphics[width=\linewidth]{polling.png}
\center
effizient Pakete von der NIC bekommen: Polling
\end{figure}
\end{frame}
\begin{frame}{Feinentwurf: PacketDissection}
%\includegraphics[width=\textwidth]{roadmap/roadmap2_2.pdf}
\end{frame}
\begin{frame}{Feinentwurf: PacketDissection}
%\includegraphics[width=\textwidth]{roadmap/roadmap2_2.pdf}
\begin{itemize}
\item extrahiert Informationen aus den Paketen
\item stellt diese für die folgenden Komponenten bereit
\end{itemize}
\end{frame}
\begin{frame}{Feinentwurf: Inspection}
%\includegraphics[width=\textwidth]{roadmap/roadmap2_3.pdf}
\end{frame}
\begin{frame}{Feinentwurf: Inspection}
\begin{minipage}[h]{0.45\textwidth}
\begin{figure}[h!]
\includegraphics[width=\textwidth, center]{inspection.pdf}
\end{figure}
\end{minipage}
\hfill
\begin{minipage}[h]{0.45\textwidth}
\begin{itemize}
\item Klasse Analyzer
\item Filterung aller Pakete der Netzwerkprotokolle UDP, TCP, ICMP
\item Abwehr von SYN-FIN-Angriffen
\end{itemize}
\end{minipage}
\end{frame}
\begin{frame}{Feinentwurf: Inspection}
\includegraphics[width=\textwidth, center]{analyzerDiagram.png}
\end{frame}
\begin{frame}{Feinentwurf: Treatment}
%\includegraphics[width=\textwidth]{roadmap/roadmap2_4.pdf}
\end{frame}
\begin{frame}{Feinentwurf: Treatment}
\includegraphics[width=\textwidth, center]{Treatment_ohne_Container_mit_Schatten.pdf}
\end{frame}
\begin{frame}{Feinentwurf: Treatment}
\begin{minipage}[h]{0.45\textwidth}
\includegraphics[width=\textwidth, center]{SYN-FLOOD.png}
\end{minipage}
\hfill
\begin{minipage}[h]{0.45\textwidth}
\begin{itemize}
\item SYN-Flood-Abwehr mit SYN-Cookies
\item keine Reservierung von Ressourcen beim Aufbau
\end{itemize}
\end{minipage}
\end{frame}
\begin{frame}{Feinentwurf: Treatment}
\begin{minipage}[h]{0.5\textwidth}
\includegraphics[width=\textwidth, center]{splicing.pdf}
\end{minipage}
\hfill
\begin{minipage}[h]{0.45\textwidth}
\begin{itemize}
\item TCP-Proxy
\item Middle-Box als Vermittler
\end{itemize}
\end{minipage}
\end{frame}
\begin{frame}[fragile]
\frametitle{Implementierung Treatment}
{\footnotesize
\begin{lstlisting}
Treatment::treat_packtes(){
for packet in packet_to_inside{
if(packet.get_type() == packet_type_tcp){
flags = packet.get_flags();
if(flags.is_pure_syn()){
syn_cookie = calc_cookie(connection_data);
reply_packet = get_empty_packet_to_outside;
reply_packet.fill(connection_data,syn_cookie);
}
else if(...){...}
...
}
}
}
\end{lstlisting}
}
\end{frame}
\begin{frame}{Feinentwurf: Einsatz von Threads}
\begin{itemize}
\item eine Pipeline \(\rightarrow\) nur ein Thread nötig
\end{itemize}
%\includegraphics[width=\linewidth]{roadmap/roadmap2.pdf}
\end{frame}
\begin{frame}{Feinentwurf: Einsatz von Threads}
\begin{itemize}
\item Wünsche für Effizienz:
\begin{itemize}
\item mehrere Threads parallel
\item gleichmäßig ausgelastet
\item keine Kommunikation
\end{itemize}
\end{itemize}
\includegraphics[width=\linewidth]{multithreading2.pdf}
\end{frame}
\begin{frame}{Feinentwurf: Einsatz von Threads}
\begin{itemize}
\item Pakete aufgeteilt durch ,,RSS'' (Receive Side Scaling)
\begin{itemize}
\item realisiert durch Hashing
\item Schlüssel: \texttt{[Src-IP; Dst-IP; Src-Port; Dst-Port]}
\end{itemize}
\end{itemize}
\begin{figure}
\center
%\includegraphics[width=0.8\linewidth]{rss/rss.pdf}
\end{figure}
\begin{itemize}
\item \textbf{gleichmäßige Auslastung} (wegen Hashing)
\end{itemize}
\end{frame}
\begin{frame}{Feinentwurf: Einsatz von Threads}
\begin{itemize}
\item Problem: Verschiedene Zuordnung je Seite
\begin{itemize}
\item[\(\rightarrow\)] Inter-Thread-Kommunikation nötig!
\end{itemize}
\end{itemize}
\begin{figure}
\center
%\includegraphics[width=\linewidth]{rss/sym_rss_solution.pdf}
\end{figure}
\end{frame}
\begin{frame}{Feinentwurf: Einsatz von Threads}
\begin{itemize}
\item Lösung: ,,Symmetric RSS''
\begin{itemize}
\item \texttt{[\textbf{Src-IP}; \textit{Dst-IP}]} \(\equiv\) \texttt{[\textit{Dst-IP}; \textbf{Src-IP}]}
\item[\(\rightarrow\)] \textbf{keine Inter-Thread-Kommunikation nötig}
\end{itemize}
\end{itemize}
\begin{figure}
\center
%\includegraphics[width=\linewidth]{rss/sym_rss_problem.pdf}
\end{figure}
\end{frame}
\begin{frame}{Feinentwurf: Alternative Entwürfe}
% Alternativen (Implementierungsentscheidungen, Grobentwurfsänderung)
\begin{figure}
\center
\includegraphics[width=\textwidth]{multithreading_old.pdf}
\end{figure}
\begin{itemize}
\item alternativ: ein Thread pro Komponente
\item Nachteil: zu viel Inter-Thread-Kommunikation
\end{itemize}
\end{frame}
\begin{frame}{Entwurfsmuster}
\begin{minipage}[h]{0.45\textwidth}
\begin{figure}[h!]
\includegraphics[width=\textwidth]{singleton.pdf}
\end{figure}
\end{minipage}
\hfill
\begin{minipage}[h]{0.45\textwidth}
\begin{itemize}
\item Erzeugungsmuster
\item Nur ein Objekt dieser Klasse
\item Globale Informationsbereitstellung
\item Verwendung im Configurator
\end{itemize}
\end{minipage}
\end{frame}
\begin{frame}{Was AEGIS bisher kann}
\begin{minipage}[h]{\textwidth}
\center
\begin{minipage}[h]{0.5\textwidth}
\center
\includegraphics[width=\textwidth]{done/done1.png}
Pakete weiterleiten
\end{minipage}
\begin{minipage}[h]{0.25\textwidth}
\center
%\includegraphics[width=\textwidth]{done/done2.pdf}
Multithreading
\end{minipage}
\end{minipage}
\vspace{0.5cm}
\begin{minipage}[h]{\textwidth}
\center
\begin{minipage}[h]{0.3\textwidth}
\center
\includegraphics[width=0.5\textwidth]{done/done3.png}
Informationen aus Paketen extrahieren
\end{minipage}
\end{minipage}
\end{frame}
\begin{frame}{Ausblick}
\begin{itemize}
\item Anforderungen unverändert
\item Überprüfung wichtiger Anforderung
\item Erweiterung um Angriffe und ihre Abwehrmechanismen
\end{itemize}
\end{frame}
\begin{frame}{Bildquellen}
\begin{itemize}
\tiny
\item https://www.onlinewebfonts.com/icon/571002 [Abgerufen am 22.06.2021]
\end{itemize}
\end{frame}
\begin{frame}
\begin{center}
\textbf{Vielen Dank für Ihre Aufmerksamkeit!}
\end{center}
\end{frame}
\end{document}