<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://lea-linux.org/docs/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Amnesiak</id>
	<title>Lea Linux - Contributions [fr]</title>
	<link rel="self" type="application/atom+xml" href="https://lea-linux.org/docs/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Amnesiak"/>
	<link rel="alternate" type="text/html" href="https://lea-linux.org/documentations/Sp%C3%A9cial:Contributions/Amnesiak"/>
	<updated>2026-04-08T11:47:03Z</updated>
	<subtitle>Contributions</subtitle>
	<generator>MediaWiki 1.40.1</generator>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Utilisateur:Amnesiak&amp;diff=18223</id>
		<title>Utilisateur:Amnesiak</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Utilisateur:Amnesiak&amp;diff=18223"/>
		<updated>2010-10-27T11:28:42Z</updated>

		<summary type="html">&lt;p&gt;Amnesiak : /* Sites utiles */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Bienvenue sur ma page !&lt;br /&gt;
&lt;br /&gt;
Si vous débutez dans la sécurité informatique, pensez à visiter les liens suivants :&lt;br /&gt;
&lt;br /&gt;
* [http://www.uniformed.org Uniformed.org] publication d&#039;article concernant la sécurité (site en anglais)&lt;br /&gt;
* [http://rootkit.com Rootkit.com] publication d&#039;article concernant la sécurité (site en anglais)&lt;br /&gt;
* [http://openbsd.org OpenBSD.org] un très bon système d&#039;exploitation dont le but principal est la sécurité (site en anglais)&lt;br /&gt;
* ... et la liste n&#039;est pas exhaustive&lt;br /&gt;
&lt;br /&gt;
== Liste d&#039;artciles ==&lt;br /&gt;
===Magazines===&lt;br /&gt;
&lt;br /&gt;
Ceci est une liste sélective et qualitative de magazines francophones sur la sécurité :&lt;br /&gt;
&lt;br /&gt;
* MISC : http://www.miscmag.com&lt;br /&gt;
* Hackin9 : http://www.hakin9.org&lt;br /&gt;
&lt;br /&gt;
===Liens vers certains articles disponibles en ligne===&lt;br /&gt;
&lt;br /&gt;
* Très nombreux articles de Christophe Grenier publiés dans GNU/Linux Magazine France, MISC, Pirates Mag, HoneyNet : [http://www.cgsecurity.org/wiki/Articles http://www.cgsecurity.org/wiki/Articles].&lt;br /&gt;
* &#039;&#039;&#039;La méthode EBIOS&#039;&#039;&#039;, par Nicolas Mayer et Jean-Philippe Humbert, MISC n°27 : [http://www.cases.public.lu/functions/search/resultHighlight/index.php?linkId=3&amp;amp;SID=f78a58d3444b9f672fc8f3fc76616c02 ici]&lt;br /&gt;
&lt;br /&gt;
== Sites utiles ==&lt;br /&gt;
* OpenBSD France: des tutoriaux, une mailing list et un joli canal IRC : http://openbsd-france.org&lt;br /&gt;
* Groupe d&#039;utilisateurs francophone des technologies Cisco : http://cisco.rezalfr.org&lt;/div&gt;</summary>
		<author><name>Amnesiak</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Tarpit_avec_iptables&amp;diff=18222</id>
		<title>Tarpit avec iptables</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Tarpit_avec_iptables&amp;diff=18222"/>
		<updated>2010-10-27T11:26:56Z</updated>

		<summary type="html">&lt;p&gt;Amnesiak : /* Activer le module TARPIT dans le noyau */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Sécurité]]&lt;br /&gt;
&lt;br /&gt;
= tarpit avec iptables =&lt;br /&gt;
Par [[Utilisateur:amnesiak|Tony]]&lt;br /&gt;
&lt;br /&gt;
Les tarpits (de l&#039;anglais &amp;quot;tar&amp;quot;, goudron, et &amp;quot;pit&amp;quot;, une fosse) font partie des mécanismes de défense contre la propagation des vers, spams et autres. Le concept vient de [http://labrea.sourceforge.net/ LaBrea Tarpit] développé par Tom Liston.&lt;br /&gt;
&lt;br /&gt;
==Principe d&#039;utilisation des tarpits==&lt;br /&gt;
&lt;br /&gt;
Les tarpits servent à ralentir les connexions des personnes qui se branchent dessus. Le but étant de garder la connexion active le plus longtemps possible du côté de l&#039;attaquant. Dans un monde où les tarpits seraient généralisés, un attaquant devrait alors ruser et ne pourrait plus s&#039;attaquer à une IP au hasard pour faire propager des vers par exemple (la problèmatique de générer une IP à attaquer aléatoirement devrait disparaître avec l&#039;IP v6, en effet, l&#039;espace d&#039;adresse sera moins saturé donc il y aura beaucoup moins de chance que l&#039;adresse soit une adresse utilisée).&lt;br /&gt;
&lt;br /&gt;
Quand Tom Liston présente pour la première fois la notion de tarpits, il explique qu&#039;il cherchait une parade au vers CodeRed. Il constata qu&#039;en général quand on se voit attribuer un bloc d&#039;adresses publiques, il est rare de tout utiliser. Donc il pensa que tout trafic vers ses IP publiques non attribuées ne pouvait être qu&#039;un trafic illicite. Il commença alors à écrire un petit service qui écoutait sur le port 80 de ces machines (le port où CodeRed attaquait) et qui répondait au SYN par un SYN/ACK avec une valeur de MSS très petite, ce qui avait pour effet de ralentir le vers (il ne pouvait plus envoyer que des paquets de petite taille, de plus, le service n&#039;écoutait plus la session ensuite).&lt;br /&gt;
&lt;br /&gt;
Finalement, le principe de tarpit pouvait être généralisé à n&#039;importe quel port TCP. Il est conseillé de l&#039;utiliser que sur des ports où l&#039;on est sûr d&#039;avoir aucun trafic &amp;quot;légal&amp;quot;. Par exemple, le port 113, où identd est lié, est utilisé par certains serveurs [[Fiches:Internet-fichexchat|IRC]] pour connaître le login de l&#039;utilisateur. Si on &amp;quot;tarpitte&amp;quot; ce port, le serveur n&#039;aura jamais sa réponse et l&#039;utilisateur n&#039;obtiendra jamais sa connexion. Au final, il faudra donc peser le pour et le contre de cette technique. Sur une IP qui n&#039;est pas attribuée, on pourra &amp;quot;tarpiter&amp;quot; tous les ports sans problème, mais sur une IP attribuée, il faudra bien faire attention à ne pas être trop agressif dans les règles au risque de réduire connectivité du réseau.&lt;br /&gt;
&lt;br /&gt;
==L&#039;implémentation dans le noyau Linux et dans Netfilter==&lt;br /&gt;
&lt;br /&gt;
==L&#039;installation==&lt;br /&gt;
&lt;br /&gt;
Sous Gentoo, il est possible d&#039;activer les extensions d&#039;iptables directement à partir de l&#039;ebuild, on procéde de la manière suivante :&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
 USE=&amp;quot;extensions&amp;quot; emerge iptables&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Néanmoins, le noyau par défaut n&#039;est pas patché avec les extensions, il faut donc les récuperer sur le FTP de Netfilter : http://ftp.netfilter.org/pub/patch-o-matic-ng/snapshot/&lt;br /&gt;
Le mieux est d&#039;y prendre la version la plus récente. Cette archive tar contient bien plus que l&#039;extension tarpit. Il nous est alors offert deux choix pour activer le tarpit.&lt;br /&gt;
&lt;br /&gt;
===Utiliser le script &amp;quot;run-me&amp;quot; patch-o-matic===&lt;br /&gt;
&lt;br /&gt;
Une fois que vous avez récupéré l&#039;archive des extensions sur le site de Netfilter, vous pouvez décompresser l&#039;archive tar.&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
 # dans mon cas, j&#039;avais la version du 16 janvier 2007&lt;br /&gt;
 tar xvzf patch-o-matic-ng-20070116.tar.bz2&lt;br /&gt;
 cd patch-o-matic-ng-20070116&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et là, il suffit simplement de lancer le script runme :&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
 ./runme&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Celui-ci vous pose quelques questions et rajoute finalement l&#039;option TARPIT dans le noyau.&lt;br /&gt;
&lt;br /&gt;
===Faire l&#039;installation de l&#039;extension tarpit à l&#039;intérieur du noyau à la main===&lt;br /&gt;
Vous n&#039;avez pas besoin de faire cette étape si vous avez déjà appliqué le patch avec la technique présentée au desssus.&lt;br /&gt;
&lt;br /&gt;
Dans mon cas, je pouvais activer les extensions dans iptables sans avoir à patcher (c&#039;était en natif dans mon système), donc je ne voulais pas avoir à recompiler iptables. De plus, je n&#039;avais guère envie de rajouter toutes les extensions à mon noyau.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt; Attention, ce qui va suivre n&#039;est pas la façon recommandée de procéder, cela marche chez l&#039;auteur, mais ce n&#039;est pas une méthode officielle suppportée.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La procédure suivante est pour un noyau 2.6. Il ne tiendra qu&#039;à vous de l&#039;adapter si vous voulez tester avec une autre version du noyau.&lt;br /&gt;
&lt;br /&gt;
Je copie d&#039;abord le module tarpit dans le noyau.&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
 #ici, je suis à la racine de l&#039;archive&lt;br /&gt;
 #(il faut que /usr/src/linux corresponde au chemin des sources de votre noyau)&lt;br /&gt;
 cp patchlets/TARPIT/linux-2.6/net/ipv4/netfilter/ipt_TARPIT.c /usr/src/linux/net/ipv4/netfilter&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et c&#039;est là que c&#039;est &amp;quot;sale&amp;quot;, car on va ajouter les patch à la main sur les fichiers du noyau :&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
 cat patchlets/TARPIT/linux-2.6/net/ipv4/netfilter/Kconfig.ladd &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;config IP_NF_TARGET_TARPIT&lt;br /&gt;
        tristate &#039;TARPIT target support&#039;&lt;br /&gt;
        depends on IP_NF_FILTER&lt;br /&gt;
        help&lt;br /&gt;
          Adds a TARPIT target to iptables, which captures and holds&lt;br /&gt;
          incoming TCP connections using no local per-connection resources.&lt;br /&gt;
          Connections are accepted, but immediately switched to the persist&lt;br /&gt;
          state (0 byte window), in which the remote side stops sending data&lt;br /&gt;
          and asks to continue every 60-240 seconds.  Attempts to close the&lt;br /&gt;
          connection are ignored, forcing the remote side to time out the&lt;br /&gt;
          connection in 12-24 minutes.&lt;br /&gt;
 &lt;br /&gt;
          This offers similar functionality to LaBrea&lt;br /&gt;
          &amp;lt;http://www.hackbusters.net/LaBrea/&amp;gt; but doesn&#039;t require dedicated&lt;br /&gt;
          hardware or IPs.  Any TCP port that you would normally DROP or REJECT&lt;br /&gt;
          can instead become a tarpit. &amp;lt;/nowiki&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On voit là le contenu du patch, il suffit d&#039;ouvrir le fichier &#039;&#039;&#039;/usr/src/linux/net/ipv4/netfilter/Kconfig&#039;&#039;&#039; avec votre éditeur préféré et de rajouter les lignes en bleu au dessus. Collez le en dessous de la première entrée de type &#039;&#039;&#039;config&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
On ouvre ensuite &#039;&#039;&#039;/usr/src/linux/net/ipv4/netfilter/Makefile&#039;&#039;&#039; et on se place à la ligne contenant :&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
 obj-$(CONFIG_IP_NF_TARGET_REJECT) += ipt_REJECT.o&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On rajoute en dessous la ligne :&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
 obj-$(CONFIG_IP_NF_TARGET_TARPIT) += ipt_TARPIT.o&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Maintenant, tout est prêt, on va pouvoir activer le TARPIT dans les options du noyau.&lt;br /&gt;
&lt;br /&gt;
===Activer le module TARPIT dans le noyau===&lt;br /&gt;
&lt;br /&gt;
On lance le make xconfig ou le make menuconfig de notre noyau et on va dans les menus suivants :&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
 Networking -&amp;gt;&lt;br /&gt;
   Networking options -&amp;gt;&lt;br /&gt;
     Network packet filtering (replaces ipchains) -&amp;gt;&lt;br /&gt;
      IP: Netfilter Configuration -&amp;gt;&lt;br /&gt;
       TARPIT target support&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il est conseillé de le mettre en module (ne serait-ce que parce que l&#039;on aura pas besoin de redémarrer le noyau pour pouvoir l&#039;installer).&lt;br /&gt;
&lt;br /&gt;
Ensuite :&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
 make &amp;amp;&amp;amp; make modules_install&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez faire un modprobe sur le module pour vérifier qu&#039;il est bien installé.&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
 modprobe ipt_TARPIT&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==La mise en place==&lt;br /&gt;
&lt;br /&gt;
Il suffit de se servir d&#039;iptables en créant des règles comme on le ferait normalement, mais en utilisant comme cible &amp;quot;TARPIT&amp;quot;.&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
 # une petite règle pour ralentir les spammeurs&lt;br /&gt;
 iptables -A INPUT -p tcp --dport smtp -j TARPIT&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On peut convertir un ensemble de règle de ce type (attention, très agressif, tous les ports non explicitement autorisés vont utiliser un tarpit) :&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
 # ...&lt;br /&gt;
 # ici plein de règles avec des ACCEPT&lt;br /&gt;
 # ex: iptables -A INPUT -i mon_interface -p TCP -s ma_source --dport mon_port -j ACCEPT&lt;br /&gt;
 # ...&lt;br /&gt;
 iptables -A INPUT -p tcp -j DROP&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
en&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
 # ...&lt;br /&gt;
 # les mêmes règles&lt;br /&gt;
 # ...&lt;br /&gt;
 iptables -A INPUT -p tcp -j TARPIT&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On peut aussi être plus souple. Imaginons que nous souhaitons autoriser les accès SSH à une machine que par un groupe de machines défini de manière explicite. Tout accès non listé est alors non autorisé (le serveur SSH étant souvent attaqué par des &amp;quot;zombies&amp;quot; qui tentent la force brute pour trouver un compte valide). On aurait alors une règle de la forme :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
 iptables -A INPUT -i ppp0 -p TCP -s hote1 --dport ssh -j ACCEPT&lt;br /&gt;
 iptables -A INPUT -i ppp0 -p TCP -s hote2 --dport ssh -j ACCEPT&lt;br /&gt;
 iptables -A INPUT -i ppp0 -p TCP -s hote3 --dport ssh -j ACCEPT&lt;br /&gt;
 iptables -A INPUT -i ppp0 -p TCP --dport ssh -j TARPIT&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;b&amp;gt;[[Reseau-index|@ Retour à la rubrique Réseau et sécurité]]&amp;lt;/b&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Copy|2007, 2010|[[Utilisateur:amnesiak|Tony Cheneau]]|FDL}}&lt;/div&gt;</summary>
		<author><name>Amnesiak</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Tarpit_avec_iptables&amp;diff=18221</id>
		<title>Tarpit avec iptables</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Tarpit_avec_iptables&amp;diff=18221"/>
		<updated>2010-10-27T09:55:34Z</updated>

		<summary type="html">&lt;p&gt;Amnesiak : Page créée avec « Category:Sécurité  = tarpit avec iptables = Par Tony  Les tarpits (de l&amp;#039;anglais &amp;quot;tar&amp;quot;, goudron, et &amp;quot;pit&amp;quot;, une fosse) font partie des mécanisme... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Sécurité]]&lt;br /&gt;
&lt;br /&gt;
= tarpit avec iptables =&lt;br /&gt;
Par [[Utilisateur:amnesiak|Tony]]&lt;br /&gt;
&lt;br /&gt;
Les tarpits (de l&#039;anglais &amp;quot;tar&amp;quot;, goudron, et &amp;quot;pit&amp;quot;, une fosse) font partie des mécanismes de défense contre la propagation des vers, spams et autres. Le concept vient de [http://labrea.sourceforge.net/ LaBrea Tarpit] développé par Tom Liston.&lt;br /&gt;
&lt;br /&gt;
==Principe d&#039;utilisation des tarpits==&lt;br /&gt;
&lt;br /&gt;
Les tarpits servent à ralentir les connexions des personnes qui se branchent dessus. Le but étant de garder la connexion active le plus longtemps possible du côté de l&#039;attaquant. Dans un monde où les tarpits seraient généralisés, un attaquant devrait alors ruser et ne pourrait plus s&#039;attaquer à une IP au hasard pour faire propager des vers par exemple (la problèmatique de générer une IP à attaquer aléatoirement devrait disparaître avec l&#039;IP v6, en effet, l&#039;espace d&#039;adresse sera moins saturé donc il y aura beaucoup moins de chance que l&#039;adresse soit une adresse utilisée).&lt;br /&gt;
&lt;br /&gt;
Quand Tom Liston présente pour la première fois la notion de tarpits, il explique qu&#039;il cherchait une parade au vers CodeRed. Il constata qu&#039;en général quand on se voit attribuer un bloc d&#039;adresses publiques, il est rare de tout utiliser. Donc il pensa que tout trafic vers ses IP publiques non attribuées ne pouvait être qu&#039;un trafic illicite. Il commença alors à écrire un petit service qui écoutait sur le port 80 de ces machines (le port où CodeRed attaquait) et qui répondait au SYN par un SYN/ACK avec une valeur de MSS très petite, ce qui avait pour effet de ralentir le vers (il ne pouvait plus envoyer que des paquets de petite taille, de plus, le service n&#039;écoutait plus la session ensuite).&lt;br /&gt;
&lt;br /&gt;
Finalement, le principe de tarpit pouvait être généralisé à n&#039;importe quel port TCP. Il est conseillé de l&#039;utiliser que sur des ports où l&#039;on est sûr d&#039;avoir aucun trafic &amp;quot;légal&amp;quot;. Par exemple, le port 113, où identd est lié, est utilisé par certains serveurs [[Fiches:Internet-fichexchat|IRC]] pour connaître le login de l&#039;utilisateur. Si on &amp;quot;tarpitte&amp;quot; ce port, le serveur n&#039;aura jamais sa réponse et l&#039;utilisateur n&#039;obtiendra jamais sa connexion. Au final, il faudra donc peser le pour et le contre de cette technique. Sur une IP qui n&#039;est pas attribuée, on pourra &amp;quot;tarpiter&amp;quot; tous les ports sans problème, mais sur une IP attribuée, il faudra bien faire attention à ne pas être trop agressif dans les règles au risque de réduire connectivité du réseau.&lt;br /&gt;
&lt;br /&gt;
==L&#039;implémentation dans le noyau Linux et dans Netfilter==&lt;br /&gt;
&lt;br /&gt;
==L&#039;installation==&lt;br /&gt;
&lt;br /&gt;
Sous Gentoo, il est possible d&#039;activer les extensions d&#039;iptables directement à partir de l&#039;ebuild, on procéde de la manière suivante :&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
 USE=&amp;quot;extensions&amp;quot; emerge iptables&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Néanmoins, le noyau par défaut n&#039;est pas patché avec les extensions, il faut donc les récuperer sur le FTP de Netfilter : http://ftp.netfilter.org/pub/patch-o-matic-ng/snapshot/&lt;br /&gt;
Le mieux est d&#039;y prendre la version la plus récente. Cette archive tar contient bien plus que l&#039;extension tarpit. Il nous est alors offert deux choix pour activer le tarpit.&lt;br /&gt;
&lt;br /&gt;
===Utiliser le script &amp;quot;run-me&amp;quot; patch-o-matic===&lt;br /&gt;
&lt;br /&gt;
Une fois que vous avez récupéré l&#039;archive des extensions sur le site de Netfilter, vous pouvez décompresser l&#039;archive tar.&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
 # dans mon cas, j&#039;avais la version du 16 janvier 2007&lt;br /&gt;
 tar xvzf patch-o-matic-ng-20070116.tar.bz2&lt;br /&gt;
 cd patch-o-matic-ng-20070116&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et là, il suffit simplement de lancer le script runme :&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
 ./runme&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Celui-ci vous pose quelques questions et rajoute finalement l&#039;option TARPIT dans le noyau.&lt;br /&gt;
&lt;br /&gt;
===Faire l&#039;installation de l&#039;extension tarpit à l&#039;intérieur du noyau à la main===&lt;br /&gt;
Vous n&#039;avez pas besoin de faire cette étape si vous avez déjà appliqué le patch avec la technique présentée au desssus.&lt;br /&gt;
&lt;br /&gt;
Dans mon cas, je pouvais activer les extensions dans iptables sans avoir à patcher (c&#039;était en natif dans mon système), donc je ne voulais pas avoir à recompiler iptables. De plus, je n&#039;avais guère envie de rajouter toutes les extensions à mon noyau.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt; Attention, ce qui va suivre n&#039;est pas la façon recommandée de procéder, cela marche chez l&#039;auteur, mais ce n&#039;est pas une méthode officielle suppportée.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La procédure suivante est pour un noyau 2.6. Il ne tiendra qu&#039;à vous de l&#039;adapter si vous voulez tester avec une autre version du noyau.&lt;br /&gt;
&lt;br /&gt;
Je copie d&#039;abord le module tarpit dans le noyau.&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
 #ici, je suis à la racine de l&#039;archive&lt;br /&gt;
 #(il faut que /usr/src/linux corresponde au chemin des sources de votre noyau)&lt;br /&gt;
 cp patchlets/TARPIT/linux-2.6/net/ipv4/netfilter/ipt_TARPIT.c /usr/src/linux/net/ipv4/netfilter&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et c&#039;est là que c&#039;est &amp;quot;sale&amp;quot;, car on va ajouter les patch à la main sur les fichiers du noyau :&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
 cat patchlets/TARPIT/linux-2.6/net/ipv4/netfilter/Kconfig.ladd &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;config IP_NF_TARGET_TARPIT&lt;br /&gt;
        tristate &#039;TARPIT target support&#039;&lt;br /&gt;
        depends on IP_NF_FILTER&lt;br /&gt;
        help&lt;br /&gt;
          Adds a TARPIT target to iptables, which captures and holds&lt;br /&gt;
          incoming TCP connections using no local per-connection resources.&lt;br /&gt;
          Connections are accepted, but immediately switched to the persist&lt;br /&gt;
          state (0 byte window), in which the remote side stops sending data&lt;br /&gt;
          and asks to continue every 60-240 seconds.  Attempts to close the&lt;br /&gt;
          connection are ignored, forcing the remote side to time out the&lt;br /&gt;
          connection in 12-24 minutes.&lt;br /&gt;
 &lt;br /&gt;
          This offers similar functionality to LaBrea&lt;br /&gt;
          &amp;lt;http://www.hackbusters.net/LaBrea/&amp;gt; but doesn&#039;t require dedicated&lt;br /&gt;
          hardware or IPs.  Any TCP port that you would normally DROP or REJECT&lt;br /&gt;
          can instead become a tarpit. &amp;lt;/nowiki&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On voit là le contenu du patch, il suffit d&#039;ouvrir le fichier &#039;&#039;&#039;/usr/src/linux/net/ipv4/netfilter/Kconfig&#039;&#039;&#039; avec votre éditeur préféré et de rajouter les lignes en bleu au dessus. Collez le en dessous de la première entrée de type &#039;&#039;&#039;config&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
On ouvre ensuite &#039;&#039;&#039;/usr/src/linux/net/ipv4/netfilter/Makefile&#039;&#039;&#039; et on se place à la ligne contenant :&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
 obj-$(CONFIG_IP_NF_TARGET_REJECT) += ipt_REJECT.o&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On rajoute en dessous la ligne :&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
 obj-$(CONFIG_IP_NF_TARGET_TARPIT) += ipt_TARPIT.o&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Maintenant, tout est prêt, on va pouvoir activer le TARPIT dans les options du noyau.&lt;br /&gt;
&lt;br /&gt;
===Activer le module TARPIT dans le noyau===&lt;br /&gt;
&lt;br /&gt;
On lance le make xconfig ou le make menuconfig de notre noyau et on va dans les menus suivants :&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
 Networking -&amp;gt;&lt;br /&gt;
   Networking options -&amp;gt;&lt;br /&gt;
     Network packet filtering (replaces ipchains) -&amp;gt;&lt;br /&gt;
      IP: Netfilter Configuration -&amp;gt;&lt;br /&gt;
       TARPIT target support&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il est conseillé de le mettre en module (ne serait-ce que parce que l&#039;on aura pas besoin de redémarré le noyau pour pouvoir l&#039;installer).&lt;br /&gt;
&lt;br /&gt;
Ensuite :&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
 make &amp;amp;&amp;amp; make modules_install&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez faire un modprobe sur le module pour vérifier qu&#039;il est bien installé.&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
 modprobe ipt_TARPIT&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==La mise en place==&lt;br /&gt;
&lt;br /&gt;
Il suffit de se servir d&#039;iptables en créant des règles comme on le ferait normalement, mais en utilisant comme cible &amp;quot;TARPIT&amp;quot;.&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
 # une petite règle pour ralentir les spammeurs&lt;br /&gt;
 iptables -A INPUT -p tcp --dport smtp -j TARPIT&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On peut convertir un ensemble de règle de ce type (attention, très agressif, tous les ports non explicitement autorisés vont utiliser un tarpit) :&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
 # ...&lt;br /&gt;
 # ici plein de règles avec des ACCEPT&lt;br /&gt;
 # ex: iptables -A INPUT -i mon_interface -p TCP -s ma_source --dport mon_port -j ACCEPT&lt;br /&gt;
 # ...&lt;br /&gt;
 iptables -A INPUT -p tcp -j DROP&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
en&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
 # ...&lt;br /&gt;
 # les mêmes règles&lt;br /&gt;
 # ...&lt;br /&gt;
 iptables -A INPUT -p tcp -j TARPIT&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On peut aussi être plus souple. Imaginons que nous souhaitons autoriser les accès SSH à une machine que par un groupe de machines défini de manière explicite. Tout accès non listé est alors non autorisé (le serveur SSH étant souvent attaqué par des &amp;quot;zombies&amp;quot; qui tentent la force brute pour trouver un compte valide). On aurait alors une règle de la forme :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
 iptables -A INPUT -i ppp0 -p TCP -s hote1 --dport ssh -j ACCEPT&lt;br /&gt;
 iptables -A INPUT -i ppp0 -p TCP -s hote2 --dport ssh -j ACCEPT&lt;br /&gt;
 iptables -A INPUT -i ppp0 -p TCP -s hote3 --dport ssh -j ACCEPT&lt;br /&gt;
 iptables -A INPUT -i ppp0 -p TCP --dport ssh -j TARPIT&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;b&amp;gt;[[Reseau-index|@ Retour à la rubrique Réseau et sécurité]]&amp;lt;/b&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Copy|2007, 2010|[[Utilisateur:amnesiak|Tony Cheneau]]|FDL}}&lt;/div&gt;</summary>
		<author><name>Amnesiak</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=VLAN_Bridging_ebtables&amp;diff=18209</id>
		<title>VLAN Bridging ebtables</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=VLAN_Bridging_ebtables&amp;diff=18209"/>
		<updated>2010-10-26T15:24:56Z</updated>

		<summary type="html">&lt;p&gt;Amnesiak : Page créée avec « Category:Sécurité  = VLAN et Bridging = Par Jiel et Tony  ==La topologie de notre réseau==  Image:Topologie-vlan.png ... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Sécurité]]&lt;br /&gt;
&lt;br /&gt;
= VLAN et Bridging =&lt;br /&gt;
Par [[Utilisateur:Jiel|Jiel]] et [[Utilisateur:amnesiak|Tony]]&lt;br /&gt;
&lt;br /&gt;
==La topologie de notre réseau==&lt;br /&gt;
&lt;br /&gt;
[[Image:Topologie-vlan.png]]&lt;br /&gt;
&lt;br /&gt;
===Explication sur la topologie===&lt;br /&gt;
&lt;br /&gt;
On a ici deux sous réseaux de machines ne gérant pas les VLAN TAG (ou du moins, on ne l&#039;a pas activé). On les appelera ici ENSEIGNANTS et ETUDIANTS. Les machines  de ces réseaux seront nommées alors ENS1, ENS2, ... et ETU1, ETU2, ...&lt;br /&gt;
&lt;br /&gt;
On a un réseau hétérogène de machines et matériel (switchs, routeurs) gérant les VLAN TAG, appelons le LE MONDE.&lt;br /&gt;
&lt;br /&gt;
La machine qui sert de noeuds entre tous ces réseaux sera appelée LE CENTRE.&lt;br /&gt;
&lt;br /&gt;
LE CENTRE sera ici sous GNU/Linux, il devra être configuré pour gérer les VLAN (norme IEEE 802.1Q) et les ponts (la norme 802.1D Ethernet Bridging).&lt;br /&gt;
&lt;br /&gt;
ENSEIGNANTS et ETUDIANTS peuvent communiquer avec LE MONDE. Ils sont alors associé à deux VLAN distincts. Ils sont chacun branché à deux ports physiques distincts de LE CENTRE. On verra plus tard, que l&#039;on pourra choisir de les faire communiquer, ou non.&lt;br /&gt;
&lt;br /&gt;
===Pourquoi vouloir procéder ainsi ?===&lt;br /&gt;
On peut apprécier le fait que d&#039;un coté, on ait un réseau ENSEIGNANTS ou ETUDIANTS, où il n&#039;y a pas les VLAN, et donc qui n&#039;ont pas besoin de configuration matérielle ou logicielle spéciale, et de l&#039;autre coté, LE MONDE, qui lui gère des VLAN. Le réseau LE MONDE bénéficie alors de tous les avantages de la technologie associé aux VLAN. Comme par exemple, la possibilité de connecter de manière logique deux réseaux physiques distincts ou d&#039;éviter à avoir à doubler le matériel afin d&#039;avoir plusieurs réseaux séparés dans les mêmes locaux.&lt;br /&gt;
&lt;br /&gt;
Dans notre cas, on peut aussi voir ça comme la possibilité d&#039;ajouter de manière transparente de nouvelles salles contenant des machines pour les enseignants ou les étudiants et les rajouter dans le même VLAN afin qu&#039;ils puissent communiquer de manière transparente ensemble.&lt;br /&gt;
&lt;br /&gt;
===Quel est le bénéfice réel pour la sécurité ?===&lt;br /&gt;
&lt;br /&gt;
Comme vu précédemment, on peut séparer un réseau physique en plusieurs réseaux logiques. Cela permet entre autres de limiter l&#039;impact de la propagation d&#039;un vers ou les possibilités d&#039;écoute sur un réseau. Un membre du réseau ETUDIANTS ne pourra pas sniffer les paquets du réseau ENSEIGNANTS par exemple.&lt;br /&gt;
&lt;br /&gt;
On va aussi utiliser du bridging (pontage) ce qui permet de créer un firewall transparent (ici avec ebtables) ce que l&#039;on ne peut pas faire avec un simple switch.&lt;br /&gt;
&lt;br /&gt;
== VLAN ==&lt;br /&gt;
&lt;br /&gt;
La première chose à faire quand on veut installer un VLAN est d&#039;installer le paquet « vlan » suivant la [[Software-soft_gere-installation_logiciel|méthode habituelle de votre distribution]].&lt;br /&gt;
&lt;br /&gt;
Par exemple sous Debian et Ubuntu :&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
 #apt-get install vlan bridge-utils&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Sous Gentoo :&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
 #emerge vconfig bridge-utils&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Après installation, vous devriez avoir les commandes &#039;&#039;&#039;vconfig&#039;&#039;&#039; et &#039;&#039;&#039;brctl&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Topologie réelle de notre réseau===&lt;br /&gt;
&lt;br /&gt;
Notre machine LE CENTRE a ici deux interfaces réseaux, eth1 et tap0 qui seront les interfaces où sera effectué notre bridge (tap0 est une interface virtuelle de niveau 2 créée par une machine virtuelle qui nous sert dans nos tests pour simuler des plus grands réseaux).&lt;br /&gt;
&lt;br /&gt;
Sur eth1 est branché une machine du groupe ETUDIANTS ou ENSEIGNANTS, et sur tap0, on trouve LE MONDE.&lt;br /&gt;
&lt;br /&gt;
===Configuration du VLAN===&lt;br /&gt;
&lt;br /&gt;
Normalement, cette étape est déjà faite car LE MONDE est crée. Mais comme on considère que l&#039;on va rajouter une machine du groupe ETUDIANTS, la première fois, il faudra bien créer le groupe, donc le VLAN associé.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La syntaxe de la commande pour créer un VLAN est la suivante:&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
 #vconfig add interface VLAN-ID&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cela va nous créer une interface nommée &amp;quot;interface.VLAN-ID&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Si on veut supprimer un VLAN, rien de plus facile :&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
 #vconfig rem interface.VLAN-ID&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La commande de création dans notre cas sera vers LE MONDE est:&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
 #vconfig add tap0 2&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une nouvelle interface visible dans ifconfig va être créée, elle s&#039;appellera logiquement &amp;quot;tap0.2&amp;quot;. On peut la voir si l&#039;on tape &amp;quot;ifconfig -a&amp;quot;.&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
 #ifconfig -a&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;[..SNIP..]&amp;lt;/span&amp;gt;&lt;br /&gt;
 tap0.2    Lien encap:Ethernet  HWaddr FE:B7:43:8B:FB:5B  &lt;br /&gt;
           BROADCAST MULTICAST  MTU:1500  Metric:1&lt;br /&gt;
           RX packets:0 errors:0 dropped:0 overruns:0 frame:0&lt;br /&gt;
           TX packets:0 errors:0 dropped:0 overruns:0 carrier:0&lt;br /&gt;
           collisions:0 lg file transmission:0 &lt;br /&gt;
           RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;[..SNIP..]&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On pourra noter que l&#039;interface du VLAN vient avec toutes les options d&#039;une interface Ethernet normale, on pourra notamment changer son adresse MAC, ce qui peut s&#039;avérer utile afin de simplifier des configurations ou de rendre transparent le changement de carte réseau sur une machine dans les VLAN.&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt; &lt;br /&gt;
 #ifconfig tap0.2 hw ether 00:11:22:33:44:55&lt;br /&gt;
&lt;br /&gt;
JRrvl3  &amp;lt;a href=&amp;quot;http://vneywugmpxbe.com/&amp;quot;&amp;gt;vneywugmpxbe&amp;lt;/a&amp;gt;, [url=http://umhwtleksock.com/]umhwtleksock[/url], [link=http://fehaxwoyxidv.com/]fehaxwoyxidv[/link], http://cnynnlyikubr.com/&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Mise en garde concernant le matériel==&lt;br /&gt;
&lt;br /&gt;
Certains matériels, comme des switchs ou des Access Point ne gérent pas les VLAN, ils se contentent alors de dropper les paquets. Donc si vous avez des problèmes de connectivité en passant dans un VLAN, il se peut que ça soit un problème de matériel.&lt;br /&gt;
&lt;br /&gt;
==Pour aller plus loin : ebtables==&lt;br /&gt;
&lt;br /&gt;
[http://ebtables.sourceforge.net/ Ebtables] est l&#039;équivalent d&#039;[[Reseau-secu-iptables|iptables]] pour les bridges. Il fait du filtrage du protocle Ethernet et des adresses MAC ; du filtrage IP et ARP ; du filtrage VLAN. Il supporte le MAC NAT. Il permet aussi de faire du « Brouting » : il peut décider quel trafic doit être ponté entre deux interfaces réseau et quel trafic doit être routé vers ces deux mêmes interfaces ; ces deux interfaces appartiennent au même pont mais ont leur propre adresse IP et peuvent appartenir à des sous-réseaux différents.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Le gros exemple : la création du pont pour notre réseau scolaire===&lt;br /&gt;
&lt;br /&gt;
Nous avions crée un bridge pour que ETUDIANTS puisse communiquer avec LE MONDE. Si nous avions voulu, nous aurions pu faire exactement pareil pour qu&#039;ENSEIGNANTS puisse communiquer avec LE MONDE. Mais voilà, nous allons rajouter un niveau de complexité. Imaginons qu&#039;en réalité, il y a des postes étudiants et des postes enseignants dans une salle de Travaux Pratiques, il peut être concevable que les étudiants puissent discuter avec l&#039;ordinateur du professeur, si par exemple ce dernier a mis les sujets de TP sur un serveur HTTP sur sa machine.&lt;br /&gt;
&lt;br /&gt;
Et voici le problème, tout à l&#039;heure, nous avions séparé les deux réseaux. Maintenant, nous allons devoir les recoller pour n&#039;en former qu&#039;un et restreindre ensuite l&#039;accès pour que les étudiants n&#039;aillent pas sur les machines des autres professeurs et inversement. C&#039;est ici qu&#039;ebtables va nous être utile.&lt;br /&gt;
&lt;br /&gt;
====La topologie de ce réseau====&lt;br /&gt;
&lt;br /&gt;
Voici la liste des interfaces réseaux sur la machine à configurer, ainsi que le réseau sur lequel est branché chacune d&#039;elles :&lt;br /&gt;
* tap0.2 : la partie ETUDIANTS de LE MONDE (donc le VLAN-ID est 2), le réseau est en 10.0.2.0/16&lt;br /&gt;
* tap0.3 : la partie ENSEIGNANTS de LE MONDE (son VLAN-ID est donc 3), le réseau est en 10.3.0/16&lt;br /&gt;
* tap2 : ENSEIGNANTS, en 10.0.2.0/16&lt;br /&gt;
* eth1 : ETUDIANTS, en 10.0.3.0/16&lt;br /&gt;
&lt;br /&gt;
ETUDIANTS et ENSEIGNANTS auront besoin d&#039;une route entre eux. La machine faisant le pont se chargera de faire passerelle par défaut. Pour ce faire, cette machine se verra attribuer une IP différente par interface :&lt;br /&gt;
* tap2 : 10.0.2.254 (ENSEIGNANTS)&lt;br /&gt;
* eth1 : 10.0.3.254 (ETUDIANTS)&lt;br /&gt;
&lt;br /&gt;
====La configuration====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Attention, cette configuration ne marche pas chez nous. Cela peut venir de beaucoup trop de facteurs différents. Pourtant, je pense qu&#039;elle devrait marcher si toutes les interfaces étaient des interfaces réseaux standards. La suite de cette partie est juste là pour servir de base quand il sera possible à quelqu&#039;un de retester cette configuration. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ici, la machine va faire passerelle, donc il faut lui dire de &amp;quot;forward&amp;quot; les paquets qui ne lui sont pas destiné :&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
 echo &amp;quot;1&amp;quot; &amp;gt; /proc/sys/net/ipv4/ip_forward&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On enlève l&#039;IP des interfaces réseaux qui vont être dans notre bridge :&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt; &lt;br /&gt;
 #ifconfig tap0.2 0.0.0.0&lt;br /&gt;
 #ifconfig tap0.3 0.0.0.0&lt;br /&gt;
 #ifconfig tap2 0.0.0.0&lt;br /&gt;
 #ifconfig eth1 0.0.0.0&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On crée le bridge :&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt; &lt;br /&gt;
 #brctl addbr br0&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On rajoute les interfaces qui seront dans le bridge et on le met en route :&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt; &lt;br /&gt;
 #brctl addif br0 tap0.2&lt;br /&gt;
 #brctl addif br0 tap0.3&lt;br /&gt;
 #brctl addif br0 tap2&lt;br /&gt;
 #brctl addif br0 eth1&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On monte le pont :&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt; &lt;br /&gt;
 #ifconfig br0 up&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et peut-être &amp;lt;code&amp;gt;iptables -A FORWARD -i br0 -j ACCEPT&amp;lt;/code&amp;gt; suivant la politique de firewall déjà en place.&lt;br /&gt;
&lt;br /&gt;
On met les IP à notre passerelle :&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt; &lt;br /&gt;
 #ifconfig tap2 10.0.2.254 netmask 255.255.0.0&lt;br /&gt;
 #ifconfig eth1 10.0.3.254 netmask 255.255.0.0&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
On opte pour une stratégie par défaut où l&#039;on droppe tous les paquets :&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt; &lt;br /&gt;
 #ebtables -A FORWARD -P DROP&lt;br /&gt;
 #ebtables -A INPUT -P DROP&lt;br /&gt;
 #ebtables -A OUTPUT -P DROP&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Les règles ebtables, pour ne pas refouler les demandes (on laisse &amp;quot;remonter dans la pile&amp;quot; tout ce qui vient sur nos interfaces réseaux et qui les désignent) :&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt; &lt;br /&gt;
 #ebtables -t broute -A BROUTING -p ipv4 -i tap2 --ip-dst 10.0.2.254 -j DROP&lt;br /&gt;
 #ebtables -t broute -A BROUTING -p ipv4 -i eth1 --ip-dst 10.0.3.254 -j DROP&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et voici deux règles subtiles (ici, l&#039;adresse MAC de tap2 est 7E:B2:5E:1D:69:01 et celle de eth1 est 00:13:8F:3F:91:12) :&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt; &lt;br /&gt;
 #ebtables -t broute -A BROUTING -p arp -i tap2 -d 7E:B2:5E:1D:69:01 -j DROP&lt;br /&gt;
 #ebtables -t broute -A BROUTING -p arp -i eth1 -d 00:13:8F:3F:91:12 -j DROP&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il ne reste plus qu&#039;à laisser passer de tap2 à eth1 (et de eth1 à tap2), de eth1 à tap0.2 (et de tap0.2 à eth1) et de tap2 à tap0.3 (et de tap0.3 à tap2) :&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt; &lt;br /&gt;
 #ebtables -t filter -A FORWARD -i tap2 -o eth1 -j DROP&lt;br /&gt;
 #ebtables -t filter -A FORWARD -i eth1 -o tap2 -j DROP&lt;br /&gt;
 &lt;br /&gt;
 #ebtables -t filter -A FORWARD -i eth1 -o tap0.2 -j DROP&lt;br /&gt;
 #ebtables -t filter -A FORWARD -i tap0.2 -o eth1 -j DROP&lt;br /&gt;
 &lt;br /&gt;
 #ebtables -t filter -A FORWARD -i tap2 -o tap0.3 -j DROP&lt;br /&gt;
 #ebtables -t filter -A FORWARD -i tap0.3 -o tap2 -j DROP&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et pour que cela marche, les ENSEIGNANTS n&#039;auront plus qu&#039;à rajouter une route pour aller vers les ETUDIANTS et vice-versa.&lt;br /&gt;
&lt;br /&gt;
==Liens==&lt;br /&gt;
&lt;br /&gt;
Quelques documentations bien utiles :&lt;br /&gt;
&lt;br /&gt;
* http://linux-net.osdl.org/index.php/Bridge (en anglais): un lien qui explique tout sur comment monter un bridge sous GNU/Linux&lt;br /&gt;
* http://ebtables.sourceforge.net/examples.html (en anglais): quelques exemples d&#039;utilisation d&#039;ebtables&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;b&amp;gt;[[Reseau-index|@ Retour à la rubrique Réseau et sécurité]]&amp;lt;/b&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Copy|2007, 2010|[[Utilisateur:Jiel|Jiel Beaumadier]] et [[Utilisateur:amnesiak|Tony Cheneau]]|FDL}}&lt;/div&gt;</summary>
		<author><name>Amnesiak</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Utilisateur:Amnesiak&amp;diff=18206</id>
		<title>Utilisateur:Amnesiak</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Utilisateur:Amnesiak&amp;diff=18206"/>
		<updated>2010-10-25T14:50:17Z</updated>

		<summary type="html">&lt;p&gt;Amnesiak : Page créée avec « Bienvenue sur ma page !  Si vous débutez dans la sécurité informatique, pensez à visiter les liens suivants :  * [http://www.uniformed.org Uniformed.org] publication d&amp;#039;ar... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Bienvenue sur ma page !&lt;br /&gt;
&lt;br /&gt;
Si vous débutez dans la sécurité informatique, pensez à visiter les liens suivants :&lt;br /&gt;
&lt;br /&gt;
* [http://www.uniformed.org Uniformed.org] publication d&#039;article concernant la sécurité (site en anglais)&lt;br /&gt;
* [http://rootkit.com Rootkit.com] publication d&#039;article concernant la sécurité (site en anglais)&lt;br /&gt;
* [http://openbsd.org OpenBSD.org] un très bon système d&#039;exploitation dont le but principal est la sécurité (site en anglais)&lt;br /&gt;
* ... et la liste n&#039;est pas exhaustive&lt;br /&gt;
&lt;br /&gt;
== Sites utiles ==&lt;br /&gt;
* OpenBSD France: des tutoriaux, une mailing list et un joli canal IRC : http://openbsd-france.org&lt;br /&gt;
* Groupe d&#039;utilisateurs francophone des technologies Cisco : http://cisco.rezalfr.org&lt;/div&gt;</summary>
		<author><name>Amnesiak</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Tcpdump&amp;diff=18205</id>
		<title>Tcpdump</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Tcpdump&amp;diff=18205"/>
		<updated>2010-10-25T14:22:09Z</updated>

		<summary type="html">&lt;p&gt;Amnesiak : Page créée avec « Category:Réseau local  = Introduction à tcpdump = Par Tony  == L&amp;#039;outil==  tcpdump est un outil de capture et d&amp;#039;analyse réseau. Il permet d&amp;#039;avo... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Réseau local]]&lt;br /&gt;
&lt;br /&gt;
= Introduction à tcpdump =&lt;br /&gt;
Par [[Utilisateur:amnesiak|Tony]]&lt;br /&gt;
&lt;br /&gt;
== L&#039;outil==&lt;br /&gt;
&lt;br /&gt;
tcpdump est un outil de capture et d&#039;analyse réseau. Il permet d&#039;avoir une analyse en direct du réseau ou d&#039;enregistrer la capture dans un fichier afin de l&#039;analyser pour plus tard. Il permet d&#039;écrire des filtres afin de sélectionner les paquets à capturer/analyser.&lt;br /&gt;
&lt;br /&gt;
Il est basé sur la libpcap pour la capture, ce qui permet à ses sauvegardes d&#039;être compatible avec d&#039;autres analyseurs réseaux, comme Wireshark (anciennement Ethereal). Cette bibliothèque étant multiplateforme, tcpdump est lui aussi porté sur la plupart des architectures.&lt;br /&gt;
&lt;br /&gt;
C&#039;est un outil indispensable à l&#039;administration et au débugage d&#039;applications réseaux.&lt;br /&gt;
&lt;br /&gt;
==Présentation d&#039;une capture==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
 # tcpdump -n -i ppp0&lt;br /&gt;
 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode&lt;br /&gt;
 listening on ppp0, link-type LINUX_SLL (Linux cooked), capture size 96 bytes&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;01:04:28.531663 IP 71.197.145.153.46872 &amp;gt; 90.2.255.58.37727: . ack 816315239 win 65535 &amp;lt;nop,nop,timestamp 20729106 202488928&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 01:04:28.539138 IP 90.2.255.58.37727 &amp;gt; 71.197.145.153.46872: . 9801:11201(1400) ack 0 win 2003 &amp;lt;nop,nop,timestamp 202489014 20729106&amp;gt;&lt;br /&gt;
 01:04:28.569227 IP 81.242.185.212.17936 &amp;gt; 90.2.255.58.38835: . ack 1861880354 win 63552 &amp;lt;nop,nop,timestamp 522312 202488943,nop,nop,sack 1 {2801:4201}&amp;gt;&lt;br /&gt;
 01:04:28.569286 IP 90.2.255.58.38835 &amp;gt; 81.242.185.212.17936: . 4201:5601(1400) ack 0 win 182 &amp;lt;nop,nop,timestamp 202489023 522312&amp;gt;&lt;br /&gt;
 01:04:28.586301 IP 71.197.145.153.46872 &amp;gt; 90.2.255.58.37727: . ack 2801 win 65535 &amp;lt;nop,nop,timestamp 20729106 202488950&amp;gt;&lt;br /&gt;
 01:04:28.586362 IP 90.2.255.58.37727 &amp;gt; 71.197.145.153.46872: . 11201:12601(1400) ack 0 win 2003 &amp;lt;nop,nop,timestamp 202489027 20729106&amp;gt;&lt;br /&gt;
 01:04:28.609962 IP 71.197.145.153.46872 &amp;gt; 90.2.255.58.37727: . ack 5601 win 65535 &amp;lt;nop,nop,timestamp 20729107 202488958&amp;gt;&lt;br /&gt;
 01:04:28.610020 IP 90.2.255.58.37727 &amp;gt; 71.197.145.153.46872: . 12601:14001(1400) ack 0 win 2003 &amp;lt;nop,nop,timestamp 202489033 20729107&amp;gt;&lt;br /&gt;
 01:04:28.646915 IP 71.197.145.153.46872 &amp;gt; 90.2.255.58.37727: . ack 8401 win 65535 &amp;lt;nop,nop,timestamp 20729107 202488966&amp;gt;&lt;br /&gt;
 01:04:28.646977 IP 90.2.255.58.37727 &amp;gt; 71.197.145.153.46872: . 14001:15401(1400) ack 0 win 2003 &amp;lt;nop,nop,timestamp 202489042 20729107&amp;gt;&lt;br /&gt;
 01:04:28.647007 IP 90.2.255.58.37727 &amp;gt; 71.197.145.153.46872: . 15401:16801(1400) ack 0 win 2003 &amp;lt;nop,nop,timestamp 202489042 20729107&amp;gt; &lt;br /&gt;
 &lt;br /&gt;
 11 packets captured&lt;br /&gt;
 22 packets received by filter&lt;br /&gt;
 0 packets dropped by kernel&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les options avec lesquelles ont été invoquées tcpdump ne sont pas importantes ici. Elles sont détaillées à la section suivante.&lt;br /&gt;
&lt;br /&gt;
Détails champ à champ de la ligne bleue (attention, le format de sortie dépend du type de protocole analysé et des options passées) :&lt;br /&gt;
* l&#039;heure&lt;br /&gt;
* le type de protocole (ici, IP)&lt;br /&gt;
* l&#039;IP source.port_source &amp;gt; l&#039;IP destination.port_destination&lt;br /&gt;
* les flags TCP : il peut y en avoir plusieurs pour un même paquet, on verra apparaître les lettres suivantes pour symboliser un drapeau levé :&lt;br /&gt;
** S (SYN)&lt;br /&gt;
** F (FIN)&lt;br /&gt;
** P (PUSH)&lt;br /&gt;
** R (RST)&lt;br /&gt;
** W (ECN CWR)&lt;br /&gt;
** E (ECN-Echo)&lt;br /&gt;
** ou juste un point comme ici quand on n&#039;a pas de drapeaux&lt;br /&gt;
* ack numéro : le numéro de séquence que l&#039;on attend de la part de l&#039;autre interlocuteur à son prochain envoie de paquets&lt;br /&gt;
* win numéro : le numéro représente la taille de la fenêtre TCP&lt;br /&gt;
* &amp;lt;des options&amp;gt; : les options TCP portées par le paquet, ici, on n&#039;a que le timestamp&lt;br /&gt;
&lt;br /&gt;
Les trois dernières lignes de la capture représentent :&lt;br /&gt;
* 11 packets captured : c&#039;est le nombre de paquet que tcpdump a reçu de l&#039;OS et a traité&lt;br /&gt;
* 22 packets received by filter : c&#039;est le nombre de paquets qui ont été capturés car ils correspondaient aux filtres, cela ne signifie pas qu&#039;ils auront été traités par tcpdump&lt;br /&gt;
* 0 packets dropped by kernel : les paquets qui n&#039;ont pas été capturés par l&#039;OS car il n&#039;y avait pas assez de place dans son buffer de réception.&lt;br /&gt;
&lt;br /&gt;
==Les options importantes==&lt;br /&gt;
&lt;br /&gt;
Voici une liste des options importantes avec leurs utilités:&lt;br /&gt;
* &#039;&#039;&#039;-S&#039;&#039;&#039;: permet à tcpdump de suivre les sessions TCP, ainsi il calculera des numéros de séquence relatif au premier numéro de séquence qu&#039;il a reçu. Cette option a un contre-coup, elle fait consommer de la mémoire afin de sauvegarder les informations sur les sessions en cours, donc ne vous étonnez pas de voir la RAM prise par tcpdump grossir si cette option est activée.&lt;br /&gt;
* &#039;&#039;&#039;-p&#039;&#039;&#039;: dit à tcpdump de ne pas passer l&#039;interface en mode &amp;quot;promiscous&amp;quot;, alors celui-ci ne pourra capturer que les paquets qui sont adressé à la machine qui capture, il n&#039;analysera pas les autres paquets qui peuvent passer sur le cable. Notez que cela peut permettre d&#039;échapper aux outils de détection de sniffer (qui essayent de savoir si une machine du réseau possède une interface en mode &amp;quot;promiscous&amp;quot; par diverses techniques), mais cela fait de par la même occasion perdre une partie de l&#039;intérêt du sniffing.&lt;br /&gt;
* &#039;&#039;&#039;-n&#039;&#039;&#039;: tcpdump ne convertira pas les adresses et les numéros de ports en leurs noms. Pour les numéros de ports, en général, ce n&#039;est pas bien grave, cela ne prend pas beaucoup de temps (c&#039;est en local), mais pour les adresses, la recherche inverse de DNS peut-être un peu longue, elle peut alors ralentir TPCdump.&lt;br /&gt;
* &#039;&#039;&#039;-i nom_interface&#039;&#039;&#039; : permet de choisir l&#039;interface d&#039;écoute. Par défaut, tcpdump écoute la première interface qu&#039;il trouve. Si vous souhaitez écouter toutes vos interfaces à la fois, vous pouvez spécifier &amp;quot;any&amp;quot; à la place d&#039;un nom d&#039;interface, cela aura pour effet d&#039;écouter TOUTES vos interfaces. (sous GNU/Linux &amp;quot;ifconfig -a&amp;quot; vous affiche toutes les interfaces réseaux de votre machine)&lt;br /&gt;
* &#039;&#039;&#039;-w lefichier.pcap&#039;&#039;&#039; : enregistre toute la capture dans le fichier fichier.pcap. Cela permet de réanalyser le trafic plus tard. Le format PCAP étant reconnu par Wireshark, cela permet de donner le fichier à analyser à Wireshark pour une analyse plus fine des champs.&lt;br /&gt;
* &#039;&#039;&#039;-r lefichier.pcap&#039;&#039;&#039; : le complémentaire de l&#039;option précédente, qui permet de relire un fichier d&#039;une session précédente. Peut notamment être utilisé sur une machine qui n&#039;a pas le réseau ou autre pour une analyse post-mortem.&lt;br /&gt;
* &#039;&#039;&#039;-s taille_de_la_capture&#039;&#039;&#039; : la taille de la fenêtre de capture. C&#039;est la taille maximale que pourra faire un paquet capturé, au-delà de cette taille, la fin du paquet sera tronquée. Il peut être parfois intéressant de capturer les paquets complets, dans ce cas, il est possible de spécifier comme taille de capture 0 et tcpdump capturera alors l&#039;intégralité du paquet quelque soit sa taille.&lt;br /&gt;
* &#039;&#039;&#039;-v&#039;&#039;&#039; : permet d&#039;afficher encore plus d&#039;informations sur les paquets, il y a trois niveaux de verbosité. Le nombre de &#039;v&#039; correspond au niveau de verbosité.&lt;br /&gt;
* &#039;&#039;&#039;-X&#039;&#039;&#039; : affiche les paquets en hexadécimal et en ASCII. Assez utile pour analyser les protocoles basés sur le texte (HTTP, POP3, etc).&lt;br /&gt;
&lt;br /&gt;
==Les règles utiles==&lt;br /&gt;
&lt;br /&gt;
tcpdump dispose d&#039;un filtre puissant des paquets nommés BPF (abréviation de BSD packet filter). Cette section ne détaillera pas en profondeur toutes les possibilités des filtres, mais se chargera de détailler les exemples qui se trouvent dans le manuel. Vous êtes donc invité à lire le manuel si vous désirez plus de précisions (de plus ces règles, sont celles données en exemple dans le manuel).&lt;br /&gt;
&lt;br /&gt;
Une règle simple qui ne permet d&#039;écouter qu&#039;un hôte précis :&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
 tcpdump  host le_nom_de_lhote&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une règle un peu plus complexe qui écoute une hôté précis et son port :&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
 tcpdump host le_nom_de_lhote port le_port&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Écouter tout le trafic entre l&#039;hôte 1 et l&#039;hôte 2 ou 3 (les antislashs devant les parenthèses servent à ne pas faire interpréter ses dernières par un shell) :&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
 tcpdump host hote1 and \( hote2 or hote3 \)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tous les paquets IP entre l&#039;hôte 1 et le reste du réseau, sauf l&#039;hôte 2 :&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
 tcpdump ip host hote1 and not hote2&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour afficher les paquets SYN et le paquets FIN de chaque session TCP d&#039;un hôte qui n&#039;est pas sur notre réseau :&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
 tcpdump &#039;tcp[tcpflags] &amp;amp; (tcp-syn|tcp-fin) != 0 and not src and dst net ladresse_du_reseau_local&#039;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour afficher tous les paquets HTTP sur IPv4 qui viennent ou arrivent sur le port 80 et qui ne contiennent que des données (pas de SYN, pas de FIN, pas de paquet ne contenant qu&#039;un ACK):&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
 tcpdump &#039;tcp port 80 and (((ip[2:2] - ((ip[0]&amp;amp;0xf)&amp;lt;&amp;lt;2)) - ((tcp[12]&amp;amp;0xf0)&amp;gt;&amp;gt;2)) != 0)&#039;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Quelques exemples de capture==&lt;br /&gt;
===Une capture d&#039;une session HTTP entre un client et son serveur===&lt;br /&gt;
&lt;br /&gt;
On veut ici écouter le trafic entre tous les serveurs HTTP et tous leurs clients sur l&#039;interface réseau eth0, on ne veut ici que 10 paquets qui vérifient cette règle.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
 #tcpdump -vv  -i eth0 -X  port http -c 10&lt;br /&gt;
 15:29:46.668822 IP (tos 0x0, ttl  64, id 10981, offset 0, flags [DF], proto: TCP (6), length: 608) 192.168.1.3.60963 &amp;gt; 192.168.1.100.http&lt;br /&gt;
 : P 1:557(556) ack 1 win 46 &amp;lt;nop,nop,timestamp 2537037 1662948&amp;gt;&lt;br /&gt;
         0x0000:  4500 0260 2ae5 4000 4006 89fb c0a8 0103  E..`*.@.@.......&lt;br /&gt;
         0x0010:  c0a8 0164 ee23 0050 55ef 9cb0 4dbd 2dde  ...d.#.PU...M.-.&lt;br /&gt;
         0x0020:  8018 002e 860a 0000 0101 080a 0026 b64d  .............&amp;amp;.M&lt;br /&gt;
         0x0030:  0019 5fe4 4745 5420 2f6d 6564 692f 2048  .._.GET./medi/.H&lt;br /&gt;
         0x0040:  5454 502f 312e 310d 0a48 6f73 743a 2031  TTP/1.1..Host:.1&lt;br /&gt;
         0x0050:  3932                                     92&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On note ici l&#039;intérêt d&#039;afficher en hexadécimal et en ASCII le paquet car comme le protocole HTTP est un protocole texte, on peut y voir des informations intéressantes. On voit clairement ici que le client fait une GET sur le serveur (on savait déjà que c&#039;était le client qui envoyait des informations au serveur sur ce paquet, mais sans l&#039;affichage en mode ASCII, on aurait eu plus de mal à définir l&#039;action exacte).&lt;br /&gt;
&lt;br /&gt;
===Introspection d&#039;une capture d&#039;une session SSH===&lt;br /&gt;
&lt;br /&gt;
Ici, on inspecte une session ssh lancée en local (&#039;&#039;&#039;ssh localhost&#039;&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
 # tcpdump -vv  -i lo -XX  port ssh&lt;br /&gt;
 tcpdump: listening on lo, link-type EN10MB (Ethernet), capture size 96 bytes&lt;br /&gt;
 15:27:21.166503 IP (tos 0x0, ttl  64, id 31969, offset 0, flags [DF], proto: TCP (6), length: 60) localhost.43630 &amp;gt; localhost.ssh: S, cksum 0x19bd (correct), &lt;br /&gt;
 1276248378:1276248378(0) win 32792 &amp;lt;mss 16396,sackOK,timestamp 2391515 0,nop,wscale 7&amp;gt;&lt;br /&gt;
        0x0000:  0000 0000 0000 0000 0000 0000 0800 4500  ..............E.&lt;br /&gt;
        0x0010:  003c 7ce1 4000 4006 bfd8 7f00 0001 7f00  .&amp;lt;|.@.@.........&lt;br /&gt;
        0x0020:  0001 aa6e 0016 4c12 013a 0000 0000 a002  ...n..L..:......&lt;br /&gt;
        0x0030:  8018 19bd 0000 0204 400c 0402 080a 0024  ........@......$&lt;br /&gt;
        0x0040:  7ddb 0000 0000 0103 0307                 }.........&lt;br /&gt;
 15:27:21.172752 IP (tos 0x0, ttl  64, id 0, offset 0, flags [DF], proto: TCP (6), length: 60) localhost.ssh &amp;gt; localhost.43630: S, cksum 0x52d7 (correct), &lt;br /&gt;
 1282931829:1282931829(0) ack 1276248379 win 32768 &amp;lt;mss 16396,sackOK,timestamp 2391515 2391515,nop,wscale 7&amp;gt;&lt;br /&gt;
        0x0000:  0000 0000 0000 0000 0000 0000 0800 4500  ..............E.&lt;br /&gt;
        0x0010:  003c 0000 4000 4006 3cba 7f00 0001 7f00  .&amp;lt;..@.@.&amp;lt;.......&lt;br /&gt;
        0x0020:  0001 0016 aa6e 4c77 fc75 4c12 013b a012  .....nLw.uL..;..&lt;br /&gt;
        0x0030:  8000 52d7 0000 0204 400c 0402 080a 0024  ..R.....@......$&lt;br /&gt;
        0x0040:  7ddb 0024 7ddb 0103 0307                 }..$}.....&lt;br /&gt;
 15:27:21.172868 IP (tos 0x0, ttl  64, id 31970, offset 0, flags [DF], proto: TCP (6), length: 52) localhost.43630 &amp;gt; localhost.ssh: ., cksum 0x3afa (correct), &lt;br /&gt;
 1:1(0) ack 1 win 257 &amp;lt;nop,nop,timestamp 2391516 2391515&amp;gt;&lt;br /&gt;
        0x0000:  0000 0000 0000 0000 0000 0000 0800 4500  ..............E.&lt;br /&gt;
        0x0010:  0034 7ce2 4000 4006 bfdf 7f00 0001 7f00  .4|.@.@.........&lt;br /&gt;
        0x0020:  0001 aa6e 0016 4c12 013b 4c77 fc76 8010  ...n..L..;Lw.v..&lt;br /&gt;
        0x0030:  0101 3afa 0000 0101 080a 0024 7ddc 0024  ..:........$}..$&lt;br /&gt;
        0x0040:  7ddb                                     }.&lt;br /&gt;
 15:27:21.182235 IP (tos 0x0, ttl  64, id 33194, offset 0, flags [DF], proto: TCP (6), length: 72) localhost.ssh &amp;gt; localhost.43630: P, cksum 0xfe3c (incorrect &lt;br /&gt;
 (-&amp;gt; 0x8529), 1:21(20) ack 1 win 256 &amp;lt;nop,nop,timestamp 2391531 2391516&amp;gt;&lt;br /&gt;
        0x0000:  0000 0000 0000 0000 0000 0000 0800 4500  ..............E.&lt;br /&gt;
        0x0010:  0048 81aa 4000 4006 bb03 7f00 0001 7f00  .H..@.@.........&lt;br /&gt;
        0x0020:  0001 0016 aa6e 4c77 fc76 4c12 013b 8018  .....nLw.vL..;..&lt;br /&gt;
        0x0030:  0100 fe3c 0000 0101 080a 0024 7deb 0024  ...&amp;lt;.......$}..$&lt;br /&gt;
        0x0040:  7ddc 5353 482d 322e 302d 4f70 656e 5353  }.SSH-2.0-OpenSS&lt;br /&gt;
        0x0050:  485f 342e 330a                           H_4.3.&lt;br /&gt;
 15:27:21.184787 IP (tos 0x0, ttl  64, id 31971, offset 0, flags [DF], proto: TCP (6), length: 52) localhost.43630 &amp;gt; localhost.ssh: ., cksum 0x3ac4 (correct), &lt;br /&gt;
 1:1(0) ack 21 win 257 &amp;lt;nop,nop,timestamp 2391534 2391531&amp;gt;&lt;br /&gt;
        0x0000:  0000 0000 0000 0000 0000 0000 0800 4500  ..............E.&lt;br /&gt;
        0x0010:  0034 7ce3 4000 4006 bfde 7f00 0001 7f00  .4|.@.@.........&lt;br /&gt;
        0x0020:  0001 aa6e 0016 4c12 013b 4c77 fc8a 8010  ...n..L..;Lw....&lt;br /&gt;
        0x0030:  0101 3ac4 0000 0101 080a 0024 7dee 0024  ..:........$}..$&lt;br /&gt;
        0x0040:  7deb&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ici, on a très peu d&#039;informations. Tout le contraire d&#039;un protocole texte, car en plus, celui-ci est chiffré. Les seuls informations visibles à l&#039;oeil sont que l&#039;on écoute une session TCP qui se passe sur le port SSH par défaut et que le client se connecte sur un serveur OpenSSH en version 4.3 (la version du protocole SSH est 2.0 par contre).&lt;br /&gt;
&lt;br /&gt;
==Je n&#039;arrive pas à capturer==&lt;br /&gt;
&lt;br /&gt;
Voici quelques indices pour vous aider à trouver le problème dans un cas général :&lt;br /&gt;
* Vous n&#039;écoutez pas la bonne interface réseau, bête, mais ça peut arriver, surtout si vous ne précisez pas à tcpdump l&#039;interface réseau à écouter alors que vous en avez plusieurs ;&lt;br /&gt;
* Vous êtes sur un switch, celui-ci n&#039;est sensé diriger que votre trafic sur le réseau, donc si vous avez une machine qui agit comme une sonde (c&#039;est à dire sans adresse IP, qui se contente d&#039;écouter) il se peut que le switch n&#039;ait pas de paquets pour vous. Certains switchs d&#039;assez haut niveau ont des options de configurations afin de mettre certains ports en recopie de tout le trafic (afin justement de pouvoir l&#039;analyser). Il existe certaines techniques pour faire passer un switch en hub (c&#039;est à dire répéter les paquets sur tous les ports) mais comme ceci constitue une forme d&#039;attaque, cela ne sera pas développé ici (de plus, les nouveaux switchs sont de moins en moins vulnérables à ces attaques) ;&lt;br /&gt;
* Vous n&#039;avez pas mis votre interface réseau en mode &amp;quot;promiscous&amp;quot;. Le mode &amp;quot;promiscous&amp;quot; est le mode où la carte peut lire tous les paquets du réseau, même ceux qui ne lui sont pas destiné (avec une adresse MAC différente de la sienne par exemple pour une carte Ethernet). Normalement, tcpdump passe automatiquement les interfaces en mode &amp;quot;promiscous&amp;quot;, si ce n&#039;est pas le cas chez vous, c&#039;est probablement qu&#039;il n&#039;a pas réussi, dans ce cas c&#039;est que votre carte réseau ne supporte pas le mode &amp;quot;promiscous&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Je ne capture que mon trafic===&lt;br /&gt;
&lt;br /&gt;
Si c&#039;est le cas, comme explicité plus haut, vous êtes surement dans une des deux configurations suivantes:&lt;br /&gt;
* Vous n&#039;êtes pas en mode &amp;quot;promiscous&amp;quot;, à moins que vous ayez expressément spécifié à tcpdump de ne pas s&#039;y mettre, c&#039;est sûrement un problème de carte réseau ;&lt;br /&gt;
* Vous êtes sur un switch.&lt;br /&gt;
&lt;br /&gt;
===Je ne capture rien à part de l&#039;ARP===&lt;br /&gt;
&lt;br /&gt;
Il est fortement probable que vous soyez alors sur un switch que ne vous recopie pas tous les paquets sur votre interface. Vous recevez alors les paquets ARP de l&#039;annonce de nouvelles machines ou autre (en fait, il suffit que l&#039;adresse MAC soit celle de broadcast). Cela doit vous conforter dans l&#039;idée d&#039;être sur un switch si vous ne recevez que ces paquets.&lt;br /&gt;
&lt;br /&gt;
===J&#039;ai toujours quelques (voire un nombre important de) paquets qui sont &amp;quot;dropped by kernel&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
Bon, en fait, je ne sais pas si c&#039;est un problème connu ou non, mais quand il y a un trafic trop important de paquets, il arrive que la machine n&#039;arrive pas à traiter assez rapidement les paquets et finisse par les &amp;quot;dropper&amp;quot; (rejeter).&lt;br /&gt;
Vous pouvez faire gagner du temps CPU en ne faisant pas traiter les paquets en live et en écrivant dans un fichier, ou vous pouvez vous attaquer au corps du problème.&lt;br /&gt;
Le problème vient de la taille de la socket de récéption qui en général est trop petite.&lt;br /&gt;
Voici chez moi, la taille de la socket d&#039;écoute par défaut et la taille maximale :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
 #sysctl net.core.rmem_default&lt;br /&gt;
 net.core.rmem_default = 506880&lt;br /&gt;
 &lt;br /&gt;
 #sysctl net.core.rmem_max&lt;br /&gt;
 net.core.rmem_max = 506880&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
C&#039;est parfois un peu trop petit pour un trafic important, pour régler ce problème, il suffit d&#039;augmenter la taille de la socket, on peut faire comme il suit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
 # sysctl net.core.rmem_max=1013760&lt;br /&gt;
 net.core.rmem_max = 1013760&lt;br /&gt;
 # sysctl net.core.rmem_default=1013760&lt;br /&gt;
 net.core.rmem_default = 1013760&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
 &lt;br /&gt;
Ici, je me suis contenté de doubler ces valeurs. Vous pouvez bien entendu encore les augmenter. Mais sachez que cette méthode va allouer un buffer de la taille que vous fixerez pour chaque socket d&#039;écoute. Donc sur une machine qui n&#039;est pas dédiée à l&#039;écoute, vous ne pourrez pas trop monter cette valeur (la machine risque d&#039;avoir beaucoup de socket d&#039;ouverte, donc un besoin d&#039;allouer beaucoup de mémoire).&lt;br /&gt;
&lt;br /&gt;
Il existe un patch non officiel pour la libpcap (sur laquelle se base tcpdump) pour pouvoir changer la taille de la socket d&#039;écoute (ce qui reviendrait ici à modifier net.core.rmem_max pour l&#039;augmenter et modifier la socket de la libpcap afin d&#039;augmenter sa taille, mais ne pas augmenter cette taille pour tous les programmes).&lt;br /&gt;
&lt;br /&gt;
==Liens utiles==&lt;br /&gt;
Les liens suivants sont en anglais, ils pointent pour la plupart vers certaines parties du site officiel :&lt;br /&gt;
* http://www.tcpdump.org/faq.html : les questions fréquemment posées, les problèmes les plus rencontrés.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;b&amp;gt;[[Reseau-index|@ Retour à la rubrique Réseau et sécurité]]&amp;lt;/b&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Copy|2007, 2010|[[Utilisateur:amnesiak|Tony Cheneau]]|FDL}}&lt;/div&gt;</summary>
		<author><name>Amnesiak</name></author>
	</entry>
</feed>