\documentclass[12pt]{beamer} \usepackage{amsmath} \usepackage{url} \usepackage{ucs} \usepackage[utf8]{inputenc} \usepackage[ngerman]{babel} % Manual syntax highlighting \newcommand{\synfunc} [1]{\color{blue!50!black}#1\color{black}} \newcommand{\synstr} [1]{\color{red!50!black}#1\color{black}} \newcommand{\synvar} [1]{\color{purple!50!black}#1\color{black}} \newcommand{\synclass} [1]{\color{green!50!black}#1\color{black}} \newcommand{\syncomment}[1]{\color{blue!20!black}#1\color{black}} \newcommand{\syncool} [1]{\color{beamer@blendedblue}#1\color{black}} \newcommand{\synoder} {\ \ \color{black}$\vee$\ \ } \newcommand{\hr} {\rule[4pt]{\textwidth}{0.1pt}\\} \title{NAT-Umgehung über UDP} \author{Ingo Blechschmidt \\\texttt{<iblech@web.de>}} \institute{LUGA} \date{8. Juni 2005} \usetheme{Warsaw} \usecolortheme{seahorse} \setbeamercovered{transparent} \begin{document} \frame{\titlepage} \frame[t]{ \frametitle{Inhalt} \tableofcontents } \section{Problem} \frame[t]{ \frametitle{Problem} \begin{itemize} \item Wunsch: Bidirektionale Verbindung zwischen zwei sich hinter NAT-Gateways befindlichen Computern \item Problem: Regelwerk der Firewalls: \\ "`Erlaube nur Verbindungen von außen, wenn sie von innen initiiert wurden."' \item Aber wie eine Verbindung aufbauen, ohne öffentliche IP? \end{itemize} } \section{L"osung} \frame[t]{ \frametitle{Lösung} \begin{itemize} \item Versendung von UDP-Paketen von A an den NAT-Gateway von B \item Blocken dieser Pakete durch die Firewall von B (klar) \pause \item Versendung von UDP-Paketen von B an den NAT-Gateway von A \item Annahme dieser Pakete durch die Firewall von A, da Auffassung als Antwort auf die durch A anfangs versendeten Pakete \item Von nun an: Paketannahme bei beiden Firewalls (!) \pause \item Bereitstellung von IP mittels PPP-über-unseren-UDP-Tunnel \end{itemize} } \section{Proof-of-Concept-Implementierung} \subsection{Aufbau} \frame[t]{ \frametitle{Aufbau der Proof-of-Concept-Implementierung} \begin{enumerate} \item Gegenseitiges Senden von "`Müll"'-Paketen (zum "`Austricksen"' der Firewalls) \item Gegenseitiges Senden eines Acknowledgement-Pakets \item Warten auf ACK-Paket \item Entweder Binden von \texttt{STDIN} und \texttt{STDOUT} an den Socket und \text{exec()} eines Programms oder \\ Relayen von Tastatureingaben zur Gegenseite und umgekehrt \end{enumerate} } \subsection{Beispielanwendung} \frame[t]{ \frametitle{Beispielanwendung} \texttt{% root@A \# \textbf{./nat-udp.pl \textbackslash\\ \ \ --port=42000 \textbackslash\\ \ \ --peer=NAT-Gateway-von-B \textbackslash\\ \ \ --cmd="pppd updetach noauth passive notty \textbackslash\\ \ \ \ \ \ \ \ \ \ ipparam vpn 172.16.0.1:172.16.0.2"\ \textbackslash\\ \ \ --window=10}\\ \ \\ root@B \# \textbf{./nat-udp.pl \textbackslash\\ \ \ --port=42000 \textbackslash\\ \ \ --peer=NAT-Gateway-von-A \textbackslash\\ \ \ --cmd="pppd nodetach notty noauth"\ \textbackslash\\ \ \ --window=10}\\ } } \section{Quellen} \frame[t]{ \frametitle{Quellen} \begin{itemize} \item \texttt{\#parrot} auf \texttt{irc.perl.org} (Ursprüngliche Idee) \item \url{http://www.tldp.org/HOWTO/ppp-ssh/configclient.html\#AEN305} (pppd-Parameter) \item \url{http://m19s28.vlinux.de/iblech/nat-udp.pl} (Implementierung) \end{itemize} } \end{document}
Download