Webcontrat - Reverse Proxy : Différence entre versions

De Wiki_DR13
Aller à : navigation, rechercher
(Load Balancer)
 
(4 révisions intermédiaires par le même utilisateur non affichées)
Ligne 37 : Ligne 37 :
 
== Sites==
 
== Sites==
  
Tout est géré dans les 5 fichiers de conf dans /etc/apache2/sites-available
+
Tout est géré dans les fichiers de conf dans /etc/apache2/sites-available
  
 
Pour activer / desactiver un site, utiliser les commandes  
 
Pour activer / desactiver un site, utiliser les commandes  
Ligne 44 : Ligne 44 :
 
respectivement
 
respectivement
  
 +
== Bloquer l'accès a un module ==
 +
 +
Voir le fichier /etc/apache2/sites-available/001-webcontrat.cnrs.fr.conf et prendre exemple sur la désactivation du module d'admin. permet de ne donner accès qu'a nos équipes.
 +
 +
<Location /admin>
 +
  AuthType shibboleth
 +
  ShibRequestSetting requireSession true
 +
  ShibUseHeaders On
 +
  ShibRequestSetting applicationId default
 +
 +
# Acces equipe de dev :
 +
  require shib-attr mail julien.garnier@dr13.cnrs.fr
 +
  require shib-attr mail Nelly.Pernot@dr13.cnrs.fr
 +
  require shib-attr mail david.gras@dr11.cnrs.fr
 +
  require shib-attr mail cedric.masse@dr13.cnrs.fr
 +
  require shib-attr mail laurence.manet@dr13.cnrs.fr
 +
  require shib-attr mail olivier.durant@dr13.cnrs.fr
 +
  require shib-attr mail killian.boube@dr11.cnrs.fr
 +
  require shib-attr mail jocelyn.mere@dr13.cnrs.fr
 +
  require shib-attr mail karine.argento@dr11.cnrs.fr
 +
</Location>
 +
 +
recharger le serveur web :
 +
/etc/init.d/apache2 '''reload'''
  
 
== Fichiers de conf ==  
 
== Fichiers de conf ==  
Ligne 72 : Ligne 96 :
 
  # Cluster de PROD :   
 
  # Cluster de PROD :   
 
  <Proxy "balancer://prod">
 
  <Proxy "balancer://prod">
     BalancerMember "http://10.30.0.11:80" route=1
+
     BalancerMember "http://10.30.0.20:80" route=1
    BalancerMember "http://10.30.0.12:80" route=2
+
  #BalancerMember "http://10.30.0.21:80" route=2
 
     ProxySet stickysession=ROUTEID
 
     ProxySet stickysession=ROUTEID
 
  </Proxy>
 
  </Proxy>
Ligne 89 : Ligne 113 :
 
  require valid-user                        -> On demande un utilisateur valide
 
  require valid-user                        -> On demande un utilisateur valide
 
  </Location>
 
  </Location>
 
 
= Load Balancer =
 
 
 
Le load balancer reparti la charge entre les 2 serveurs web.
 
 
La charge est repartie sur le serveur en fonction du nombre de connexions sur chacun des noeuds. Un cookie est ensuite créé ce qui permet a un utilisateur de ne pas basculer de serveur a chaque requête.
 
 
 
En cas de soucis sur un des serveurs il est possible de désactiver rapidement une "voie".
 
 
'''Ex d'un probleme avec MariaDB2''' :
 
 
* Il faut impérativement désactiver l'accès au serveur web2 qui attaque l’hôte 2
 
* Aller sur la page du reverse proxy : https://webcontrat.cnrs.fr/balancer-manager/
 
* Cliquer sur le serveur 2 (http://10.30.0.12)
 
* Sur la fenêtre qui s'affiche en dessous, cocher '''disable = on'''
 
* désactiver en cliquant sur Submit
 
 
Attention ! le changement est temporaire, il ne persiste pas a un redémarrage.
 
 
 
Pour désactiver complètement une voie :
 
* se connecter en ssh sur le reverse proxy 
 
ssh webcontrat.cnrs.fr
 
* éditer le fichier de conf webcontrat :
 
sudo vim /etc/apache2/sites-available/001-webcontrat.cnrs.fr.conf
 
* commenter la ligne pour le noeud n°2 dans l'exemple :
 
#    BalancerMember "http://10.30.0.12:80" route=2
 
* Enregistrer
 
* recharger le serveur web :
 
sudo /etc/init.d/apache2 reload
 
* vérifier sur la page du load balancer que le serveur n’apparaît plus.
 

Version actuelle datée du 13 juillet 2021 à 08:26

C'est le reverse proxy qui gère :

  • l'authentification via shibboleth
  • le load balancing via mod_proxy de apache.


Shibboleth[modifier]

Comme habituellement, fichier de conf /etc/shibboleth/shibboleth2.xml

  • La def du fichier est la suivante :
    • default : vers janus.cnrs.fr
    • formation : authentification sur idp de prod (janus) (idp de formation complexe, il faut créer les compte a la main)
    • rec : authentification sur IDP de recette
    • dev : authentification sur IDP de recette (dev pas accessible hors DSI)

Logs[modifier]

les logs sont dans le syslog ou /var/log/shibboleth/


Pour regler la finesse des logs dans /var/log/shibboleth/ editer le fichier /etc/shibboleth/shibd.logger et mettre :

log4j.rootCategory=DEBUG, shibd_log, warn_log

Mettre a DEBUG les lignes suivantes au besoin


redémarrer shibboleth :

service shibd restart


Apache[modifier]

Attention, version 2.4 !


Sites[modifier]

Tout est géré dans les fichiers de conf dans /etc/apache2/sites-available

Pour activer / desactiver un site, utiliser les commandes

a2ensite nom_du_fichier
a2dissite nom_du_fichier

respectivement

Bloquer l'accès a un module[modifier]

Voir le fichier /etc/apache2/sites-available/001-webcontrat.cnrs.fr.conf et prendre exemple sur la désactivation du module d'admin. permet de ne donner accès qu'a nos équipes.

<Location /admin>
 AuthType shibboleth
 ShibRequestSetting requireSession true
 ShibUseHeaders On
 ShibRequestSetting applicationId default

  1. Acces equipe de dev :
  require shib-attr mail julien.garnier@dr13.cnrs.fr
  require shib-attr mail Nelly.Pernot@dr13.cnrs.fr
  require shib-attr mail david.gras@dr11.cnrs.fr
  require shib-attr mail cedric.masse@dr13.cnrs.fr
  require shib-attr mail laurence.manet@dr13.cnrs.fr
  require shib-attr mail olivier.durant@dr13.cnrs.fr
  require shib-attr mail killian.boube@dr11.cnrs.fr
  require shib-attr mail jocelyn.mere@dr13.cnrs.fr
  require shib-attr mail karine.argento@dr11.cnrs.fr
</Location>

recharger le serveur web :

/etc/init.d/apache2 reload

Fichiers de conf[modifier]

Ex du fichier de prod :

Le fichier est classique, focus sur les parties non conventionnelles :

On veut gerer les affichages d'erreur perso, il ne faut pas proxyfier ces requêtes (le ! désactive le proxy):

ProxyPass /error/ !
ProxyErrorOverride On
ErrorDocument 503 /error/erreurDispo.html
ErrorDocument 504 /error/erreurDispo.html


# On envoie l'adresse source aux serveurs web :
ProxyPreserveHost On

On ne veux pas que les clients se baladent d'un serveur a l'autre, on fixe l'acces vers un serveur via un cookie valable le temps de la session :

# insert d'un cookie pour le choix de la route :
Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED


On défini un objet cluster utilisable par la suite

# Cluster de PROD :  
<Proxy "balancer://prod">
   BalancerMember "http://10.30.0.20:80" route=1
  #BalancerMember "http://10.30.0.21:80" route=2
   ProxySet stickysession=ROUTEID
</Proxy>


Protection de la racine :


<Location />
 AuthType shibboleth
 ShibRequestSetting requireSession true   -> il faut une session shibboleth
 ShibUseHeaders On                        -> on envoie les headers shibboleth aux serveurs web
 ShibRequestSetting applicationId default -> On utilise le contexte par défaut pour la prod (ou dev.webcontrat.cnrs.fr ou formation.webcontrat.cnrs.fr ou rec.webcontrat.cnrs.fr)
#require shib-attr mail julien.garnier@dr13.cnrs.fr   -> ex de filtrage par email
require valid-user                        -> On demande un utilisateur valide
</Location>