\documentclass{beamer}
\usetheme{AfnicJRES}
\usepackage[french]{babel}
\usepackage[utf8x]{inputenc}
\usepackage{bortzmeyer-utils}
\usepackage[orientation=landscape,size=custom,width=16,height=9,scale=0.5,debug]{beamerposter} 

\title{Attaques par réflexion utilisant le DNS}
\author{Stéphane Bortzmeyer\\AFNIC\\\texttt{bortzmeyer@nic.fr}}
\date{JRES - 11 décembre 2013}

\begin{document}

\maketitle

\begin{frame}
\frametitle{JRES - 11 décembre 2013}
%
\end{frame}

\begin{frame}
  \frametitle{Les attaques par déni de service}
  \begin{itemize}
  \item<2->Une plaie classique de l'Internet
  \item<3->Très anciennes, y compris la variante utilisant le DNS
  \item<4->Mais cette variante a brusquement refait surface en 2011
  \end{itemize}
\end{frame}

\begin{frame}
\frametitle{Le principe}
\begin{enumerate}
\item<2->Générer un paquet IP dont l'adresse source est usurpée
\item<3->L'envoyer à un \emph{réflecteur}
\item<4->Le réflecteur répond à la \emph{victime}
\item<5->Avec le DNS, la réponse est plus grosse que la question : \emph{amplification}
\end{enumerate}
\end{frame}

\begin{frame}
\frametitle{Attaque par réflexion}
\includegraphics[height=6.5cm]{attaque-reflection}
\end{frame}

\begin{frame}
  \frametitle{Bien choisir son réflecteur}
  \begin{enumerate}
  \item<1->Serveurs faisant autorité : rapides, bien connectés mais
    relativement peu nombreux et souvent administrés.
  \item<2->Résolveur ouvert : meilleure amplification, machines
    souvent lentes et mal connectées mais très nombreuses et rarement administrées.
  \end{enumerate}
\only<3->{En pratique, la plupart des attaques utilisent les
  résolveurs ouverts.}
\end{frame}

\begin{frame}
  \frametitle{Attaque via le serveur faisant autorité}
Attaque réelle vue sur un serveur de l'AFNIC utilisé comme réflecteur : 
\includegraphics[height=5.2cm]{dsc-any-queries-rate}
\end{frame}

\begin{frame}
\frametitle{Tester les contre-mesures}  
\begin{itemize}
\item<2->On utilise le logiciel d'attaque SOP
\item<3->\computer{sop -{}-qnames example -{}-source 192.168.2.4 192.0.2.1}
\end{itemize}
\only<4->{\includegraphics[height=4.5cm]{attaque-simple-sans-contremesure}}
\end{frame}

\begin{frame}
  \frametitle{Solutions possibles}
  \begin{itemize}
  \item<2->Empêcher l'usurpation d'adresse (norme « BCP 38 »). Les
    facteurs économiques limitent cette approche.
  \item<3->Fermer les résolveurs ouverts. En 2013, ils auraient dû
    tous disparaître depuis longtemps.
  \item<4->Changements de protocoles : \foreign{cookies}, passer à TCP\ldots
  \end{itemize}
\end{frame}

\begin{frame}
\frametitle{Limiter le trafic}  
Après tout, un vrai client DNS n'envoie jamais autant de
requêtes à un serveur faisant autorité\ldots Netfilter@Linux :
\begin{itemize}
\item<2->Classifier : \computer{iptables -{}-u32 0>{}>22\&0x3C@20\&0xFFDFDFDF=0x07455841...}
\item<3->Limiter : \computer{iptables -{}-hashlimit-above 20/second -{}-hashlimit-mode srcip}
\end{itemize}
\only<4->{Avant et après la limitation de trafic : \includegraphics[height=3.5cm]{attaque-simple-netfilter}}
\end{frame}

\begin{frame}[fragile]
\frametitle{RRL}  
\begin{itemize}
\item<2->RRL = \foreign{Response Rate Limiting}. Mis en œuvre dans
  BIND, NSD, Knot.
\item<3->Principe : ne pas renvoyer la même réponse plus de N fois par
  seconde.
\item<4->Deux gros avantages par rapport à la solution Netfilter : 
  \begin{enumerate}
  \item<5->Possibilité de renvoyer une réponse tronquée, disant aux
    vrais clients DNS de réessayer en TCP (SLIP)
  \item<6->S'ajuste automatiquement aux attaques (pas de type codé en
    dur, comme ANY) 
  \end{enumerate}
\end{itemize}
\begin{info}
  # NSD
  server :
     # 20 identical queries per second , maximum
    rrl-ratelimit : 20
\end{info}
\end{frame}

\begin{frame}
 \frametitle{Au passage}  
 \begin{itemize}
 \item<1->Toutes les attaques vues à ce jour n'utilisaient qu'IPv4
 \item<2->Mais Netfilter, RRL et SOP marchent parfaitement en IPv6
   (testé en détail)
 \end{itemize}
\end{frame}

\begin{frame}
  \frametitle{RRL contre l'attaque}
Attention, c'est un nombre de paquets, pas d'octets. 
\includegraphics[height=4.8cm]{rrl-nsd}  
\end{frame}

\begin{frame}
  \frametitle{Conclusion}
  \begin{block}
    {Il \emph{faut} déployer la limitation de trafic sur les serveurs
      faisant autorité}
    {À plus long terme, il faut continuer à fermer les résolveurs
      ouverts, et à empêcher l'usurpation d'adresses}
  \end{block}
\end{frame}

\end{document}
