WikiMiNET

La documentation technique et administrative

Outils pour utilisateurs

Outils du site


wiki:services:portail

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
wiki:services:portail [2016/01/05 01:03]
Thithib
wiki:services:portail [2016/01/05 01:05] (Version actuelle)
Thithib
Ligne 1: Ligne 1:
 +====== Le portail de MiNET ======
  
 +==== La machine ====
 +
 +La VM ''​portailguest''​ présente sur le cluster ne contient pas le site web en lui-même, qui est sur le CT ''​adh5''​. Elle comporte en revanche trois interfaces, dans le VLAN d'​admin (192.168.102.47),​ dans le VLAN 15 invité (192.168.12.1) et dans le VLAN publique (157.159.40.97).
 +
 +==== Site web portail.minet.net ====
 +
 +Tout adhérent n'​arrivant pas à s'​authentifier sur le réseau est redirigé vers ce site web.
 +Il permet aux adhérents d'​obtenir les informations de contact, accéder à leur compte MiNET pour ajouter/​supprimer les adresses MAC ainsi que voir la date d'​expiration de leur cotisation, voir les tutoriaux pour les services dédiés aux adhérents.
 +
 +==== Modification des tutoriaux ====
 +
 +Il faut se rendre sur la [[https://​portail.minet.net/​admin|page d'​administration]] du portail.
 +Les comptes utilisés pour se connecter sont ceux d'ADH5
 +La page d'​accueil est la page Intro (spécifique à la langue), il faut l'​éditer pour modifier le menu des tutoriaux (la liste n'est pas générée automatiquement).
 +Les tutoriaux sont séparés par langue, il faut pour un même tutorial créer autant que de pages que de langues voulues.
 +Les tutoriaux sont à écrire en [[http://​www.siteduzero.com/​tutoriel-3-13666-apprenez-a-creer-votre-site-web-avec-html5-et-css3.html | HTML ]] ou en ​[[https://​fr.wikipedia.org/​wiki/​Textile_%28langage%29 | Textile ]].
 +
 +==== Développement ====
 +
 +Ce site web utilise le framework ​[[http://​www.rubyonrails.org/​ | Ruby On Rails ]]
 +Pour contribuer, se référer à [[wiki:​services:​adh5 |la page du wiki sur ADH5]].
 +
 +==== Les services ====
 +
 +  * iptables (pare-feu) qui permet la redirection vers le portail
 +  * un serveur DHCP pour distribuer des IPs dans le VLAN 15
 +  * un serveur apache2 pour faire une redirection html (explications plus bas) 
 +
 +==== Mécanisme de redirection ====
 +
 +Le portail captif est en fait un pare-feu qui s'​occupe de rediriger toutes les requêtes web vers l'​apache qui tourne sur la même machine.
 +Pour ce faire, il faut bien évidemment laisser passer les requêtes DNS, puis après il "​capte"​ les requêtes sur les ports TCP 80 et 443. Tous les paquets "​non-web"​ ou à destination de sites non-autorisés sont détruits.
 +
 +=== Configuration Iptables ===
 +
 +Le script qui configure iptables est ici : **/​etc/​network/​if-up.d/​firewall**,​ il est lancé lors du démarrage des interfaces réseau (pas au démarrage de la machine, il ne trouverait pas ses interfaces).
 +Si des modifications sont nécessaires je conseille fortement de s'​entrainer à iptables avant. Ce n'est pas compliqué quand on connait le fonctionnement mais l'​apprentissage n'est pas trivial.
 +
 +Les sites minet.net et it-sudparis restent accessibles,​ toutes les requêtes vers d'​autres sites sont redirigées sur le port 5280 ce cette même machine. C'est sur ce port qu'​apache écoute. (voir plus bas).
 +
 +<​code>​
 +#!/bin/bash
 +
 +iptables -F -t nat
 +iptables -F -t mangle
 +iptables -F -t filter
 +iptables -X
 +
 +#mangle prerouting
 +iptables -t mangle -N Portail
 +iptables -t mangle -A PREROUTING -j Portail ​
 +iptables -t mangle -A Portail -i eth1 -j MARK --set-xmark 0x4/​0xffffffff #marque les paquets venants du vlan15
 +
 +#nat prerouting
 +iptables -t nat -N PortailCapture
 +iptables -t nat -A PREROUTING -j PortailCapture
 +iptables -t nat -A PortailCapture -s 192.168.12.0/​22 -d 157.159.40.105/​32 -p tcp -m tcp --dport 80 -j RETURN #site *.minet.net passe direct
 +iptables -t nat -A PortailCapture -s 192.168.12.0/​22 -d 157.159.40.105/​32 -p tcp -m tcp --dport 443 -j RETURN #site *.minet.net passe directe en https aussi
 +iptables -t nat -A PortailCapture -s 192.168.12.0/​22 -d 157.159.11.8/​32 -p tcp -m tcp --dport 80 -j RETURN #itsudparis
 +iptables -t nat -A PortailCapture -s 192.168.12.0/​22 -d 157.159.11.8/​32 -p tcp -m tcp --dport 443 -j RETURN #itsudparis
 +iptables -t nat -A PortailCapture -i eth1 -p tcp -m mark --mark 0x4 -m tcp --dport 53 -j DNAT --to-destination 157.159.40.55:​53 ​ #​redirection des paquets pour le dns
 +iptables -t nat -A PortailCapture -i eth1 -p udp -m mark --mark 0x4 -m udp --dport 53 -j DNAT --to-destination 157.159.40.55:​53 ​ #"
 +iptables -t nat -A PortailCapture -i eth1 -p tcp -m mark --mark 0x4 -m tcp --dport 53 -j DNAT --to-destination 157.159.40.54:​53 ​ #"
 +iptables -t nat -A PortailCapture -i eth1 -p udp -m mark --mark 0x4 -m udp --dport 53 -j DNAT --to-destination 157.159.40.54:​53 ​ #"
 +iptables -t nat -A PortailCapture -p tcp -m mark --mark 0x4 -m tcp --dport 80 -j REDIRECT --to-ports 5280 # redirection des paquet web divers vers le port 5280
 +iptables -t nat -A PortailCapture -p tcp -m mark --mark 0x4 -m tcp --dport 443 -j REDIRECT --to-ports 5280 #
 +
 +#filter forward
 +iptables -t filter -N Portail
 +iptables -t filter -N PortailPorts
 +iptables -t filter -A FORWARD -j Portail ​
 +iptables -t filter -A Portail -j PortailPorts ​
 +iptables -t filter -A Portail -s 192.168.12.0/​22 -d 157.159.40.105/​32 -p tcp -m tcp --dport 80 -j ACCEPT #on passer tt les sites autorisés et leut réponse
 +iptables -t filter -A Portail -s 157.159.40.105/​32 -d 192.168.12.0/​22 -p tcp -m tcp --sport 80 -j ACCEPT ​
 +iptables -t filter -A Portail -s 192.168.12.0/​22 -d 157.159.40.105/​32 -p tcp -m tcp --dport 443 -j ACCEPT ​
 +iptables -t filter -A Portail -s 157.159.40.105/​32 -d 192.168.12.0/​22 -p tcp -m tcp --sport 443 -j ACCEPT ​
 +iptables -t filter -A Portail -s 192.168.12.0/​22 -d 157.159.11.8/​32 -p tcp -m tcp --dport 80 -j ACCEPT ​
 +iptables -t filter -A Portail -s 157.159.11.8/​32 -d 192.168.12.0/​22 -p tcp -m tcp --sport 80 -j ACCEPT ​
 +iptables -t filter -A Portail -s 192.168.12.0/​22 -d 157.159.11.8/​32 -p tcp -m tcp --dport 443 -j ACCEPT ​
 +iptables -t filter -A Portail -s 157.159.11.8/​32 -d 192.168.12.0/​22 -p tcp -m tcp --sport 443 -j ACCEPT ​
 +iptables -t filter -A Portail -s 157.159.40.55/​32 -d 192.168.12.0/​22 -o eth1 -j ACCEPT ​
 +iptables -t filter -A Portail -s 192.168.12.0/​22 -d 157.159.40.55/​32 -i eth1 -p tcp -m tcp --dport 53 -j ACCEPT ​
 +iptables -t filter -A Portail -s 192.168.12.0/​22 -d 157.159.40.55/​32 -i eth1 -p udp -m udp --dport 53 -j ACCEPT ​
 +iptables -t filter -A Portail -s 157.159.40.54/​32 -d 192.168.12.0/​22 -o eth1 -j ACCEPT ​
 +iptables -t filter -A Portail -s 192.168.12.0/​22 -d 157.159.40.54/​32 -i eth1 -p tcp -m tcp --dport 53 -j ACCEPT ​
 +iptables -t filter -A Portail -s 192.168.12.0/​22 -d 157.159.40.54/​32 -i eth1 -p udp -m udp --dport 53 -j ACCEPT ​
 +iptables -t filter -A Portail -j DROP 
 +iptables -t filter -A PortailPorts -i eth1 -p tcp -m tcp --dport 5280 -j ACCEPT #accepte les paquets web qui ont été précédement changé de ports
 +iptables -t filter -A PortailPorts -i eth1 -p udp -m udp --dport 5280 -j ACCEPT ​
 +iptables -t filter -A PortailPorts -i eth1 -p tcp -m mark --mark 0x3 -j DROP #et on drop tout le reste !!!
 +iptables -t filter -A PortailPorts -i eth1 -p udp -m mark --mark 0x3 -j DROP
 +
 +#nat postrooting
 +iptables -t nat -N PortailNAT
 +iptables -t nat -A POSTROUTING -j PortailNAT ​
 +iptables -t nat -A PortailNAT -s 192.168.12.0/​22 -o eth0 -m mark --mark 0x1 -j MASQUERADE ​
 +iptables -t nat -A PortailNAT -s 192.168.12.0/​22 -o eth0 -m mark --mark 0x2 -j MASQUERADE ​
 +iptables -t nat -A PortailNAT -s 192.168.12.0/​22 -o eth0 -m mark --mark 0x3 -j MASQUERADE ​
 +iptables -t nat -A PortailNAT -s 192.168.12.0/​22 -d 157.159.40.105/​32 -p tcp -m tcp --dport 80 -j MASQUERADE ​
 +iptables -t nat -A PortailNAT -s 192.168.12.0/​22 -d 157.159.40.105/​32 -p tcp -m tcp --dport 443 -j MASQUERADE ​
 +iptables -t nat -A PortailNAT -s 192.168.12.0/​22 -d 157.159.11.8/​32 -p tcp -m tcp --dport 80 -j MASQUERADE ​
 +iptables -t nat -A PortailNAT -s 192.168.12.0/​22 -d 157.159.11.8/​32 -p tcp -m tcp --dport 443 -j MASQUERADE ​
 +iptables -t nat -A PortailNAT -s 192.168.12.0/​22 -d 157.159.40.55/​32 -p tcp -m tcp --dport 53 -j MASQUERADE ​
 +iptables -t nat -A PortailNAT -s 192.168.12.0/​22 -d 157.159.40.55/​32 -p udp -m udp --dport 53 -j MASQUERADE ​
 +iptables -t nat -A PortailNAT -s 192.168.12.0/​22 -d 157.159.40.54/​32 -p tcp -m tcp --dport 53 -j MASQUERADE ​
 +iptables -t nat -A PortailNAT -s 192.168.12.0/​22 -d 157.159.40.54/​32 -p udp -m udp --dport 53 -j MASQUERADE ​
 +</​code>​
 +
 +==== Configuration Apache ====
 +
 +Tout est dans **/​etc/​apache2/​sites-enabled/​redirection-portail**
 +
 +On a un Virtualhost qui redirige toutes les demandes vers portail.minet.net. C'est le mécanisme notamment utilisé par les sites web dont l'​adresse à changé pour rediriger vers la nouvelle page.
 +Il est important de régler la durée maximale de mise en cache à 1 seconde. Les navigateur gardent sinon la redirection en mémoire même une fois authentifié sur le réseau minet. (Lors des 1ers tests, mon firefox me renvoyait systématiquement sur le portail dès que je tentais d'​accéder à google, même une fois hors du campus !) 
 +
 +<​code>​
 +<​VirtualHost *:5280>
 +ExpiresDefault "​access plus 1 second"​
 +Redirect temp / http://​portail.minet.net/​
 +</​VirtualHost>​
 +<​VirtualHost *:443>
 +ExpiresDefault "​access plus 1 second"​
 +Redirect temp /  http://​portail.minet.net
 +</​VirtualHost>​
 +</​code>​
 +
 +
 +==== Le DHCP ====
 +
 +  * Il écoute seulement sur l'​interface vlan15.
 +  * /​etc/​dhcp/​dhcpd.conf ​
 +
 +<​code>​
 +subnet 192.168.12.0 netmask 255.255.252.0 {
 +        option routers 192.168.12.1;​
 +        range 192.168.12.2 192.168.15.254;​
 +}
 +</​code>​
wiki/services/portail.txt · Dernière modification: 2016/01/05 01:05 par Thithib