Définition de la redirection authentifiée
=========================================

On suppose que l'on a des groupes formant des ensembles disjoints :

- Eleves
- Profs
- Administratif

Les règles REDIRECT doivent etre faites suivant ces groupes.

Exemple de règles de redirection
--------------------------------

1. Les élèves passent par le proxy transparent (-> non auth aussi)
2. Les administratifs passent par le proxy admin
3. Tout le monde sauf les profs passe par le proxy
4. Les administratifs passent par le proxy pour aller en zone ADMIN (et les autres sont droppés)

Génération des règles iptables
------------------------------

Prerouting mangle pour le filtrage
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

On filtre par rapport aux critères IP notés *$IPCRITER* ::

    iptables -A PREROUTING -t mangle $IPCRITER -j NFQUEUE

Prerouting NAT
~~~~~~~~~~~~~~

règle sur la marque comme critère de filtrage::

    iptables -A PREROUTING -t nat $IPCRITER -m mark --mark $(IDGROUP<<24bits)/(0xfffffff<<24bits) -j DNAT --to IPDEST --port DEST

et on met une règle par redirection

Pour tous le monde sauf les profs::

    iptables -A PREROUTING -t nat $IPCRITER -m mark ! --mark $(IDPROF<<24bits)/(0xfffffff<<24bits) -j DNAT --to IPDEST --port DEST

la règle implicite d'acceptation est ensuite ajoutée.


Gestion des IPs en exception
============================

Par ipauth_guest. 
Sinon cela revient à dupliquer en mangle le jeu de règles de FORWARD.

Génération des règles NuFW :
----------------------------


- Cas 1 (élève par proxy) ::

	IP crit + élève -> ACCEPT
	IP crit + Tous -> ACCEPT => règle par défaut

- Cas 2 , 3 ::

	IP crit + Tous -> ACCEPT => règle par défaut

- Cas 4 ::

	IP crit + ADMIN -> ACCEPT
	IP crit + TOUS -> DROP => règle par défaut (mais critère réduit interface de sortie non présente)


Critère réduit : Problème de recouvrement des règles
----------------------------------------------------

Ce problème est global sur les règles de DNAT et s'exprime déjà dans ERA::

    On crée une ACL redirection de pedago vers internet sur le port 3128 :
    ### blabla 
    /sbin/iptables -t filter -A ped-bas -i eth2 -p tcp --dport 3128 -j ACCEPT
    /sbin/iptables -t nat -A PREROUTING -p tcp --dport 80 --tcp-flags SYN,RST,ACK SYN -i eth2 -s 0/0 -d 0/0 -j REDIRECT --to-ports 3128
    /sbin/iptables -t filter -A ped-ext -i eth2 -o eth0 -s j/j -d 0/0 -j ACCEPT

Cas d'un éleve passant par un proxy
-----------------------------------

On suppose que on a
Le mapping::

   éleves: 513
   professeurs: 514

Le fichier mark_group.conf généré est ::

   513:1
   514:2

- On note *IPCRIT* les critères IP
- On note *IFIN* l'interface d'entrée
- On note *IFOUT* l'interface de sortie

Règle iptables
--------------

::

 iptables -A PREROUTING -t mangle IPCRIT -i IFIN -j NFQUEUE
 iptables -A PREROUTING -t nat IPCRIT -i IFIN -m mark --mark 0x1 -j
 REDIRECT --to 3128

 iptables -A INPUT -i IFIN -p tcp --dport 3128 -j ACCEPT
 iptables -A FORWARD IPCRIT -i IFIN -o IFOUT -j ACCEPT

Règles plaintext
----------------

::

 [tproxy]
 
 IPCRIT
 indev = IFIN
 group = 513
 decision = 1
 

