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