inversion des directives
========================

directive
---------

Que signifie inverser une directive ?

d = Directive()

- inverser des extrémités

- inverser des services (un groupe de services)

inversion et logique
--------------------

le ou, c'est une suite de règles
le et, c'est le regroupement en chaines,
mais pour l'instant, les chaines sont utilises pour le découpage de
la matrice de flux.


technique d'inversion
---------------------

non (-s ip_list DROP)
<=> -s ip1 ACCEPT or -s ip2 ACCEPT or...
<=> 
-s ip1 ACCEPT
-s ip2 ACCEPT
...
DROP TOUT LE RESTE (pour la zone considérée)


inversion des extremites
------------------------

{
interdire le port 8080 pour tous sauf ip1, ip2, ip3;
} 
<=>
{
autoriser le port 8080 pour ip1, ip2, ip3;
interdire le port 8080 pour toute la zone;
}
<=>
{
iptables -s ip1 --dport 8080 -j ACCEPT;
iptables -s ip2 --dport 8080 -j ACCEPT;
iptables -s ip3 --dport 8080 -j ACCEPT;
iptables -s zone --dport 800 -j DROP;
}

inversion des services
----------------------
{
interdire tous les services sauf ceux des ports 110, 80, 143 ;
}
<=>
{ 
pour tous, autoriser les ports 110, 80, 143 ;
interdire tous les services ;
}
<=>
{
iptables -s zone --dport 110 -j ACCEPT ;
iptables -s zone --dport 80 -j ACCEPT ;
iptables -s zone --dport 143 -j ACCEPT ;

iptables -s zone -j DROP ;
}


Utilisation d'ipset pour gérer les ensembles d'extrémités
----------------------------------------------------------

Pour gérer facilement les ensembles d'extrémités, nous pouvons utiliser
[http://ipset.netfilter.org/ ipset]. Il faut pour cela un noyau modifié.
Voir [http://ipset.netfilter.org/install.html la page d'installation d'ipset].

Exemple d'utilisation d'ipset
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Nous allons créer un ensemble d'adresses IP appelé ''suspect'' (à l'aide
du programme '''ipset''') et faire référence à cet ensemble dans nos
règles iptables.

* Création de l'ensemble ''suspect''

::

  ipset -N suspect iphash

* Ajout d'adresses dans l'ensemble ''suspect''

::

  ipset -A suspect 192.168.15.15
  ipset -A suspect 192.168.15.30

* Utilisation de l'ensemble ''suspect'' comme adresses source dans une règle iptables
  iptables -A FORWARD -m set --set suspect src -j DROP

* On peut ensuite ajouter ou supprimer une adresse à chaud (l'effet sera immédiat). Par exemple pour enlever l'adresse 192.168.15.15 de l'ensemble ''suspect''

::

  ipset -D suspect 192.168.15.15

* On peut utiliser les ensemble dans des conditions négatives
  
::
  
  iptables -A FORWARD -m set ! --set suspect src -j ACCEPT




