logo

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