\documentclass{f4_beamer} \usepackage{graphicx} \usepackage{float} \usepackage{subfigure} \usepackage{xspace} \usepackage{textcomp} \usepackage{tabularx} \usepackage{booktabs} \usepackage{amsmath} \usepackage{subfigure} \usepackage{here} \usepackage{verbatim} \usepackage{listings} \usepackage{url} \usepackage{xcolor} \usepackage{caption} \usepackage[autostyle=true,german=quotes]{csquotes} % Suppress numbering captions \captionsetup{labelformat=empty} % Setup für Codeblocks \lstset{ % Optionen breaklines=true, breakatwhitespace=true, breakautoindent=true, frame=single, %framexleftmargin=19pt, inputencoding=utf8, %language=awk, %numbers=left, %numbersep=8pt, showspaces=false, showstringspaces=false, tabsize=1, %xleftmargin=19pt, captionpos=b, % Styling basicstyle=\footnotesize\ttfamily, commentstyle=\footnotesize, keywordstyle=\footnotesize\ttfamily, numberstyle=\footnotesize, stringstyle=\footnotesize\ttfamily, } % Hack für Sonderzeichen in Codeblocks \lstset{literate=% {Ö}{{\"O}}1 {Ä}{{\"A}}1 {Ü}{{\"U}}1 {ß}{{\ss}}1 {ü}{{\"u}}1 {ä}{{\"a}}1 {ö}{{\"o}}1 {°}{{${^\circ}$}}1 } % Define colors \definecolor{hlr}{RGB}{255,180,180} \definecolor{hlg}{RGB}{180,255,180} \definecolor{hlb}{RGB}{180,180,255} \mode \title{IPv6} \subtitle{Einführung und Sicherheitsaspekte} \author{Jan Philipp Timme} \date{\today} \begin{document} \begin{frame}{Neuigkeiten mit IPv6} \begin{itemize} \item RFC 2460, 1998/12 - IPv6 Specification \item 128 Bit Adressraum \item Neu: Link-lokale Adressen \item Multicast anstelle von Broadcast \item ICMPv6 für Betrieb essentiell (Bei IPv4 war ICMP optional) \item Konfiguration via SLAAC\footnote{RFC 2462, 1998/12 - IPv6 Stateless Address Autoconfiguration} (und DHCPv6\footnote{RFC 3315, 2003/07 - Dynamic Host Configuration Protocol for IPv6 (DHCPv6)}) \item Router Advertisments \item Vollwertiges Routing, keine NAT\footnote{Network Address Translation} erforderlich! \item Paketfragmentierung nur noch durch den Absender \end{itemize} \end{frame} \section{Einstieg in IPv6} \subsection{Notation und Schreibweisen} \begin{frame}{Notation und Kurzschreibweise\footnote{Alle Beispiele mit RFC 3849, 2004/07 - IPv6 Address Prefix Reserved for Documentation}} Gegeben: IPv6-Adresse \texttt{2001:0db8:2407:08d3:0000:0000:0000:1234} \newline \newline 1) Führende Nullen streichen \newline \texttt{2001:\colorbox{hlb}{0}db8:2407:\colorbox{hlb}{0}8d3:\colorbox{hlb}{000}0:\colorbox{hlb}{000}0:\colorbox{hlb}{000}0:1234} \newline $\Rightarrow$ \texttt{2001:db8:2407:8d3:0:0:0:1234} \newline \newline 2) Zusammenhängende Nullsegmente mit \texttt{::} ersetzen \texttt{2001:db8:2407:8d3:\colorbox{hlb}{0:0:0}:1234} \newline $\Rightarrow$ \texttt{2001:db8:2407:8d3::1234} \newline \newline \enquote{Das ist schon kürzer, aber tippen will ich das nicht...} \newline $\rightarrow$ \enquote{Dafür gibt es im DNS \texttt{AAAA}-Einträge!} \end{frame} \begin{frame}{Adressen: Präfixe und Suffixe\footnote{Kapitel 2.3. in RFC 4291, 2006/02 - IP Version 6 Addressing Architecture}} Notation wie Classless Inter-domain Routing (CIDR\footnote{RFC 4632, 2006/08 - Classless Inter-domain Routing (CIDR): The Internet Address Assignment and Aggregation Plan}) bei IPv4 \newline \newline IPv6-Adresse mit angegebener Präfix-Länge: \texttt{2001:db8:2407:8d3::1234/\colorbox{hlr}{64}} \newline \newline Bedeutung: Präfix mit \colorbox{hlr}{64} Bit Länge fest vorgegeben $\Rightarrow$ Übriges Suffix mit (128 - \colorbox{hlr}{64}) = \colorbox{hlg}{64} Bit Länge frei zur Verwendung \newline \texttt{\colorbox{hlr}{2001:0db8:2407:08d3}:\colorbox{hlg}{0000:0000:0000:1234}/\colorbox{hlr}{64}} \end{frame} \begin{frame}{Hierarchische Zuweisung von Netzen (Beispiel)} \begin{itemize} \item ISP bekommt ein \texttt{\colorbox{hlr}{/24}} Präfix zugewiesen \begin{itemize} \item $128 - \texttt{\colorbox{hlr}{24}} = 104$ Bit Suffix für ISP \end{itemize} \end{itemize} \texttt{\colorbox{hlr}{2001:0d}00:0000:0000:0000:0000:0000:0000/\colorbox{hlr}{24}} \begin{itemize} \item ISP weist Kunden ein \texttt{\colorbox{hlb}{/56}} Präfix aus seinem \texttt{\colorbox{hlr}{/24}} Präfix zu \begin{itemize} \item $128 - \texttt{\colorbox{hlb}{56}} = 72$ Bit Suffix für Kunde \item $\rightarrow$ $104 - 72 = 32$ Bit bleiben für Subnetzbildung \end{itemize} \end{itemize} \texttt{\colorbox{hlb}{\colorbox{hlr}{2001:0d}b8:2407:d3}00:0000:0000:0000:0000/\colorbox{hlb}{56}} \begin{itemize} \item Kundenrouter weist jedem Subnetz ein \texttt{\colorbox{hlg}{/64}}-Präfix\footnote{Empfohlene Subnetzgröße laut RFC 6177, 2011/03 - IPv6 Address Assignment to End Sites} zu \begin{itemize} \item $72 - 64 = 8$ Bit bleiben für Subnetzbildung \end{itemize} \end{itemize} \texttt{\colorbox{hlg}{\colorbox{hlb}{\colorbox{hlr}{2001:0d}b8:2407:d3}42:}0000:0000:0000:0000/\colorbox{hlg}{64}} \end{frame} \begin{frame}{Fassungsvermögen von IPv6-Netzen} Adresse eines Gerätes in Kundennetz: \newline \texttt{\colorbox{hlg}{\colorbox{hlb}{\colorbox{hlr}{2001:0d}b8:2407:d3}42:}7ae4:00ff:fecf:8a50/\colorbox{hlg}{64}} \newline \newline Anzahl \texttt{\colorbox{hlb}{/56}} Präfixe für Kunden: $2^{104-(128-56)} = 2^{32} = \colorbox{hlb}{4.294.967.296}$ \newline Anzahl \texttt{\colorbox{hlg}{/64}} Subnetze für einen Kunden: $2^{8} = \colorbox{hlg}{256}$ \newline Anzahl Adressen pro Subnetz: $2^{64} = 18.446.744.073.709.551.616$ \newline \newline $\Rightarrow$ Adressmangel in IPv6-Netzen vorerst nicht in Sicht \end{frame} \subsection{Adressklassen} \begin{frame}{Adressklassen: Unspezifizierte Adresse\footnote{Kapitel 2.5.2. in RFC 4291, 2006/02 - IP Version 6 Addressing Architecture}} Aus IPv4 bekannt als \texttt{0.0.0.0/0} \newline \newline In IPv6: \texttt{0000:0000:0000:0000:0000:0000:0000:0000} (kurz: \texttt{::}) \newline \begin{itemize} \item Zeigt das Fehlen einer Adresse an \item \dots oder signalisiert Erreichbarkeit eines Sockets auf allen Adressen eines Geräts \item Darf nie einem Gerät zugewiesen werden \item Als Quelladresse für Pakete erlaubt \begin{itemize} \item \dots sofern Rechner noch keine IPv6-Adresse besitzt \item \dots diese Packete dürfen nicht geroutet werden \end{itemize} \end{itemize} \end{frame} \begin{frame}{Adressklassen: Loopback Adresse\footnote{Kapitel 2.5.3. in RFC 4291, 2006/02 - IP Version 6 Addressing Architecture}} Aus IPv4 bekannt als \texttt{127.0.0.1/8} \newline \newline \texttt{0000:0000:0000:0000:0000:0000:0000:0001/128} (kurz: \texttt{::1/128}) \newline \begin{itemize} \item Funktionsweise bereits aus IPv4 bekannt \item Nur eine Adresse anstelle eines Netzbereichs \end{itemize} \end{frame} \begin{frame}{Adressklassen: Link-lokale Unicast Adresse\footnote{Kapitel 2.5.6. in RFC 4291, 2006/02 - IP Version 6 Addressing Architecture}} Ähnlich zu \texttt{169.254.0.0/16} \newline \newline Präfix: \texttt{fe80::/64} \newline Beispiel: \texttt{fe80::7ae4:ff:fecf:8a50/64} \newline \begin{itemize} \item Gilt nur innerhalb der Broadcast-Domäne \textbf{eines Interface} \begin{itemize} \item \texttt{ping -6 fe80::7ae4:ff:fecf:8a50\textbf{\%eth0}} \end{itemize} \item Darf nicht geroutet werden \item Für Tätigkeiten auf dem lokalen Link \begin{itemize} \item Neighbor Dicovery Protocol \item Automatic Address Configuration \item Router Advertisment \end{itemize} \end{itemize} \end{frame} \begin{frame}[fragile]{Adressklassen: Unique Local Adress (ULA)\footnote{Definiert in RFC 4193, 2005/11 - Unique Local IPv6 Unicast Addresses}} Ähnlich zu privaten IPv4-Adressen wie z.B. \texttt{192.168.0.0/24} \newline \newline Präfix: \texttt{fc00::/7} \newline Beispiel ULA-Präfix: \texttt{fd04:4232:a9fc::/48} \newline \newline Aufbau der ULA\footnote{Kapitel 3.1. in RFC 4193, 2005/11 - Unique Local IPv6 Unicast Addresses}: \begin{itemize} \item Präfix (7 Bit) \item Local-Flag (1 Bit) - Wert: 1 (0 nicht in Standard definiert, reserviert) \item Global ID (40 Bit) - Zufällig gewählter Wert \item Subnet ID (16 Bit) - Raum für Subnetze \item Interface ID (64 Bit) \end{itemize} \begin{itemize} \item Für Nutzung in privaten Netzen, nicht global geroutet \end{itemize} \end{frame} \begin{frame}{Adressklassen: Globale Unicast Adresse (GUA)\footnote{Kapitel 2.5.4. in RFC 4291, 2006/02 - IP Version 6 Addressing Architecture}} Analog zu global gerouteter IPv4-Adresse \newline \newline \texttt{2001:db8:2407:8d3:7ae4:ff:fecf:8a50/128} \newline \begin{itemize} \item Wie bereits aus IPv4 bekannt \item Global geroutete IPv6-Adresse \item Werden von IANA vergeben \item $\rightarrow$ \url{https://www.iana.org/assignments/ipv6-unicast-address-assignments/ipv6-unicast-address-assignments.xhtml} \end{itemize} \end{frame} \begin{frame}{Adressklassen: Multicast\footnote{Adressenformat nachzuschlagen in RFC 7371, 2014/09 - Updates to the IPv6 Multicast Addressing Architecture} (Layer 3)} Präfix: \texttt{ff00::/8} \newline Statische, link-lokale Multicast-Adressen: \begin{itemize} \item Alle Knoten: \texttt{ff02::1} \item Alle Router: \texttt{ff02::2} \item Alle DHCP Server und Relays: \texttt{ff02::1:2} \newline \end{itemize} Alle registrierten Multicast-Adressen finden sich unter \url{https://www.iana.org/assignments/ipv6-multicast-addresses/ipv6-multicast-addresses.xhtml}. \end{frame} \begin{frame}{Adressklassen: Multicast (Layer 2)} Layer 2 kennt keine IPv6-Adressen, sondern MAC-Adressen. \newline Umsetzung von Multicast-IPv6-Adresse auf Layer 2: \newline Bytes \texttt{33-33} verkettet mit den letzten 4 Bytes der IPv6-Zieladresse\footnote{Kapitel 7 in RFC 2464, 1998/12 - Transmission of IPv6 Packets over Ethernet Networks}\newline \newline Beispiel: \texttt{ff02::1} $\rightarrow$ \texttt{33-33-00-00-00-01} \newline \end{frame} \section{Netzwerkkarte mit Netzwerkkabel verbinden} \subsection{Link-lokale Adresse ermitteln} \subsection{Stateless Address Autoconfiguration} \subsection{DHCPv6} \begin{frame}{Link} \begin{itemize} \item TODO \end{itemize} \end{frame} \begin{frame}{} \begin{itemize} \item \end{itemize} \end{frame} \begin{frame}{} \begin{itemize} \item \end{itemize} \end{frame} \begin{frame}{Viel Spaß mit IPv6! (1/2)} \dots mit einer netten Buchempfehlung \dots \begin{itemize} \item Scott Hogg, Eric Vyncke: IPv6 Security, 2008, Cisco Press \newline ISBN-13: 978-1-58705-594-2 \begin{itemize} \item \url{http://www.ciscopress.com/store/ipv6-security-9781587055942} \end{itemize} \end{itemize} \dots einem Spielzeug für Neugierige \dots \begin{itemize} \item IPv6 attack toolkit \url{https://github.com/vanhauser-thc/thc-ipv6} \end{itemize} \end{frame} \begin{frame}{Viel Spaß mit IPv6! (2/2)} \dots und den IPv6-relevanten RFCs: \begin{itemize} \item RFC 2460, 1998/12 - IPv6 Specification \item RFC 3849, 2004/07 - IPv6 Address Prefix Reserved for Documentation \item RFC 2462, 1998/12 - IPv6 Stateless Address Autoconfiguration \item RFC 4291, 2006/02 - IP Version 6 Addressing Architecture \item RFC 6177, 2011/03 - IPv6 Address Assignment to End Sites \item RFC 4193, 2005/11 - Unique Local IPv6 Unicast Addresses \item \dots \end{itemize} \end{frame} \begin{frame}[fragile]{} \begin{lstlisting} jpt@server:~$ ip -6 addr show eth0 4: eth0: mtu 1500 qlen 1000 inet6 2001:41d0:8:9147::1/128 scope global valid_lft forever preferred_lft forever inet6 fe80::222:4dff:fe82:dbff/64 scope link valid_lft forever preferred_lft forever \end{lstlisting} \begin{lstlisting} jpt@server:~$ ip -6 route show 2001:41d0:8:9147::1 dev eth0 proto kernel metric 256 2001:41d0:8:91ff:ff:ff:ff:ff dev eth0 metric 1024 fe80::/64 dev eth0 proto kernel metric 256 default via 2001:41d0:8:91ff:ff:ff:ff:ff dev eth0 metric 1024 \end{lstlisting} \end{frame} % The end. \end{document}