La Fonera 2.0g de Gulliver
Afin de fournir un accès à Internet lors des permanences à la MCE, Gulliver a acquis une Fonera 2.0g. Cette Fonera se branche sur le réseau informatique de la MCE, et crée un réseau local pour les personnes de la permanence. Ce réseau local est accessible par câble ethernet et par wifi (la Fonera crée un point d'accès wifi).
La Fonera est accessible par SSH et dispose d'une interface web de configuration. Le mot de passe est confié aux membres du Conseil d'Administration.
Liste des choses à faire
- Flasher la Fonera sous OpenWRT. Le tutoriel est sur cette page. (c'est fait)
- Définir précisément le nom des interfaces utilisées. (c'est fait : les interfaces sont eth0.1 et br-lan. Voir le fichier de configuration du pare-feu plus bas)
- Paramétrer le serveur DHCP + DNS que la Fonera fournit au réseau local gulliver. Ces 2 services sont fournis par le logiciel dnsmasq. (c'est fait : il s'avère que les réglages par défaut fonctionne parfaitement, nous n'avons donc rien eu à paramétrer ! )
- Configurer les fichiers /etc/config/network et /etc/config/wireless
- Faire des tests et valider le tout.
Règles du pare-feu
Quelques points importants :
1) La Fonera est reliée au réseau informatique de la MCE.
2) Elle crée le réseau local gulliver, c'est le réseau utilisé par les personnes de la permanence. Ce réseau est nommé 192.168.35.0/255.255.255.0
3) La Fonera joue le rôle de « passerelle » pour que gulliver accède à internet par l'intermédiaire de l'infrastructure informatique de la MCE.
4) gulliver ne doit pas accéder directement à l'infrastructure informatique de la MCE, cela pour éviter que des personnes de la permanence ne détériorent l'infrastructure informatique de la MCE.
5) La Fonera utilise dnsmasq pour fournir un serveur DNS relai à gulliver. gulliver n'accède pas directement au serveur DNS de la MCE. Les requêtes DNS de gulliver sont adressées à la Fonera, qui se renseigne auprès du serveur DNS de la MCE.
6) Le point 4) est fondamental.
Voici les règles de pare-feu, elles doivent être placées dans le fichier /etc/firewall.user :
Par souci de lisibilité, les options longues d'iptables sont utilisées.
Définition des variables
#!/bin/sh /etc/rc.common
# On définit le réseau gulliver, qui est constitué
# par les ordinateurs de notre permanence :
RESEAU_GULLIVER=192.168.35.0/255.255.255.0
# On définit les 2 réseaux de la MCE auquel gulliver n'a pas accès.
# Le premier est celui de la Livebox :
RESEAU_MCE_1=192.168.1.0/255.255.255.0
# Le second est celui du proxy filtrant de la MCE :
RESEAU_MCE_2=192.168.10.0/255.255.255.0
# On définit les passerelles de ces 2 réseaux, afin d'autoriser gulliver à les pinguer :
PASSERELLE_MCE_1=192.168.1.1
PASSERELLE_MCE_2=192.168.10.1
# On définit les 2 interfaces de la Fonera entre lesquelles se fait le routage :
# D'abord l'interface de la Fonera qui est reliée à la MCE :
IF_MCE=eth0.1
# Il s'agit de la prise ethernet RJ45 de couleur blanche.
# Ensuite l'interface tournée vers le réseau gulliver :
IF_GULLIVER=br-lan
# il s'agit d'un pont ethernet-wifi sur lequel se connectent les personnes de la permanence.
# Ce pont est lui-même constitué des interfaces eth0.0
# (prise ethernet RJ45 de couleur noire) et ath0 (point d'accès wifi).
On purge les différentes tables des règles pré-existantes :
iptables –flush –table mangle
iptables –delete-chain –table mangle
iptables –flush –table raw
iptables –delete-chain –table raw
iptables –flush –table nat
iptables –delete-chain –table nat
iptables –flush –table filter
iptables –delete-chain –table filter
Ensuite, on configure chaque table :
# table mangle
iptables –table mangle –policy PREROUTING ACCEPT
iptables –table mangle -P INPUT ACCEPT
iptables –table mangle -P FORWARD ACCEPT
iptables –table mangle -P OUTPUT ACCEPT
iptables –table mangle -P POSTROUTING ACCEPT
# table raw
iptables –table raw -P PREROUTING ACCEPT
iptables –table raw -P OUTPUT ACCEPT
# table nat
iptables –table nat -P PREROUTING ACCEPT
iptables –table nat -P OUTPUT ACCEPT
iptables –table nat -P POSTROUTING ACCEPT
# Activer le masquerade :
iptables –table nat -A POSTROUTING –source $RESEAU_GULLIVER –out-interface $IF_MCE -j MASQUERADE
La table « filter » sert à filtrer les paquets réseaux, sa configuration est plus détaillée.
Chaine INPUT de la table filter (pour les paquets réseaux à destination de la Fonera).
# Création d'une chaine utilisateur qui sera appelée par la chaine principale :
iptables –new-chain input_filtrage
# On autorise le ping sur la Fonera, ainsi que l'accès à quelques serveurs de la Fonera :
# serveur DNS (port 53), serveur SSH (port 22), serveur web (port 80) et serveur DHCP (port 67).
iptables -A input_filtrage –protocol icmp –icmp-type echo-request -j ACCEPT
iptables -A input_filtrage –protocol tcp –destination-port 53 -j ACCEPT
iptables -A input_filtrage –protocol udp –destination-port 53 -j ACCEPT
iptables -A input_filtrage –protocol tcp –destination-port 22 -j ACCEPT
iptables -A input_filtrage –protocol udp –destination-port 22 -j ACCEPT
iptables -A input_filtrage –protocol tcp –destination-port 80 -j ACCEPT
iptables -A input_filtrage –protocol udp –destination-port 80 -j ACCEPT
iptables -A input_filtrage –protocol tcp –destination-port 67 -j ACCEPT
iptables -A input_filtrage –protocol udp –destination-port 67 -j ACCEPT
iptables -A input_filtrage -j REJECT –reject-with icmp-port-unreachable
# Ensuite, on configure la chaine principale :
iptables -A INPUT –match state –state INVALID -j DROP
iptables -A INPUT –in-interface lo -j ACCEPT
iptables -A INPUT –match state –state ESTABLISHED,RELATED -j ACCEPT
# Les paquets réseaux en provenance du réseau Gulliver sont dirigés
# vers la chaine utilisateur créée précédemment :
iptables -A INPUT –in-interface $IF_GULLIVER –source $RESEAU_GULLIVER -j input_filtrage
iptables -P INPUT DROP
Remarque : durant la phase de test, on utilisera un filtrage moins fort sur la table INPUT ; il ne faudrait pas se couper involontairement l'accès à la Fonera.
Chaine OUTPUT de la table filter (pour les paquets réseaux émis par la Fonera).
iptables -A OUTPUT –match state –state INVALID -j DROP
iptables -P OUTPUT ACCEPT
Chaine FORWARD de la table filter (pour les paquets réseaux transitant par la Fonera).
# On crée 2 chaines utilisateurs que nous utiliseront dans la chaine principale.
# Première chaine utilisateur :
iptables –new-chain trafic_depuis_gulliver
# On autorise le ping vers PASSERELLE_MCE_1 et PASSERELLE_MCE_2 :
iptables -A trafic_depuis_gulliver –destination $PASSERELLE_MCE_1 –protocol icmp –icmp-type echo-request -j ACCEPT
iptables -A trafic_depuis_gulliver –destination $PASSERELLE_MCE_2 –protocol icmp –icmp-type echo-request -j ACCEPT
# On interdit tout le trafic vers les 2 réseaux de la MCE :
iptables -A trafic_depuis_gulliver –destination $RESEAU_MCE_1 -j REJECT –reject-with icmp-admin-prohibited
iptables -A trafic_depuis_gulliver –destination $RESEAU_MCE_2 -j REJECT –reject-with icmp-admin-prohibited
iptables -A trafic_depuis_gulliver -j ACCEPT
# Seconde chaine utilisateur :
iptables –new-chain taffic_vers_gulliver
# On autorise la réponse au ping des PASSERELLE_MCE_1 et PASSERELLE_MCE_2 :
iptables -A trafic_vers_gulliver –source $PASSERELLE_MCE_1 –protocol icmp –icmp-type echo-reply -j ACCEPT
iptables -A trafic_vers_gulliver –source $PASSERELLE_MCE_2 –protocol icmp –icmp-type echo-reply -j ACCEPT
# On interdit tout le trafic depuis les 2 réseaux de la MCE :
iptables -A trafic_vers_gulliver –source $RESEAU_MCE_1 -j DROP
iptables -A trafic_vers_gulliver –source $RESEAU_MCE_2 -j DROP
iptables -A trafic_vers_gulliver -j ACCEPT
# Ensuite, on configure la chaine principale :
#iptables -A FORWARD –match state –state INVALID -j DROP
iptables -A FORWARD –in-interface $IF_GULLIVER –source $RESEAU_GULLIVER –out-interface $IF_MCE -j trafic_depuis_gulliver
iptables -A FORWARD –in-interface $IF_MCE –destination $RESEAU_GULLIVER –out-interface $IF_GULLIVER –match state –state ESTABLISHED,RELATED -j trafic_vers_gulliver
iptables -A FORWARD –in-interface $IF_GULLIVER –out-interface $IF_GULLIVER -j ACCEPT
iptables -P FORWARD DROP
La configuration de la table “filter” est maintenant terminée.
Activation du mode “routeur IPv4” de la Fonera :
echo 1 > /proc/sys/net/ipv4/ip_forward
Fin du script
exit 0
Fichiers de configuration
Fichier /etc/config/network
config 'interface' 'loopback'
'
option 'ifname' 'lo'
option 'proto' 'static'
option 'ipaddr' '127.0.0.1'
option 'netmask' '255.0.0.0'
config 'interface' 'lan'
option 'type' 'bridge'
option 'proto' 'static'
option 'ipaddr' '192.168.35.1'
option 'netmask' '255.255.255.0'
option 'ifname' 'eth0.0'
config 'interface' 'wan'
option 'ifname' 'eth0.1'
option 'proto' 'dhcp
Fichier /etc/config/wireless
config wifi-device wifi0
option type atheros
option channel auto
# REMOVE THIS LINE TO ENABLE WIFI:
# option disabled 1
config wifi-iface
option device wifi0
option network lan
option mode ap
option ssid Gulliver
option encryption none