Utilisateurs/SiteClubs.md
... ...
@@ -1,7 +1,6 @@
1 1
# Description
2 2
3
-Le ResEl fournit un espace d'hébergement pour que les clubs qui le souhaitent puissent héberger un site web, en utilisant des technologies modernes (PHP, Python, ...), avec une base de donnée, ainsi qu'un sous nom de domaine en *_nom_.clubs.resel.fr*.
4
-Les sites sont disponibles depuis internet.
3
+Le ResEl fournit un espace d'hébergement pour que les clubs qui le souhaitent puissent héberger un site web, en utilisant des technologies modernes (PHP, Python, ...), avec une base de donnée, ainsi qu'un sous nom de domaine en *_nom_.club.resel.fr* ou en *nom.asso.resel.fr*. Les sites sont disponibles depuis internet.
5 4
6 5
# Utilisation
7 6
... ...
@@ -11,33 +10,138 @@ On peut avoir la liste des clubs disponibles sur le site https://clubs.resel.fr.
11 10
12 11
Pour créer son site, il faut demander à un administrateur ResEl. Celui ci valide la création du site selon la politique du ResEl.
13 12
14
-La politique d'hébergement de site au ResEl veut que seul les sites de clubs ou d'association du BDE de Télécom Bretagne puisse être hébergé. Elles doivent immédiatement reconnue comme d'intérêt pour le campus et l'aspect social. Il découle que le ResEl refuse d'héberger les projets scolaires ou personnel, sauf autorisation spéciale du CA.
13
+La politique d'hébergement de site au ResEl veut que seuls les sites de club ou d'association du BDE de Télécom Bretagne puisse être hébergés. Le club doit être immédiatement reconnue comme d'intérêt pour le campus et l'aspect social de TB. Il découle que le ResEl refuse d'héberger les projets scolaires ou personnel, sauf autorisation spéciale du CA.
15 14
16
-Une fois le site créé, le membre devient webmaster, il peut des lors aller sur la page d'administration de son site (https://clubs.resel.fr aller vers le lien du site en question) et pourra désigner de nouveaux webmaster pour son site.
15
+Une fois le site créé, un membre en devient webmaster, il peut dès lors aller sur une page d'administration de son site (https://clubs.resel.fr aller vers le lien du site en question) et pourra désigner de nouveaux webmaster pour son site.
17 16
18 17
Un webmaster a accès à deux choses :
19
-- L'accès FTP où est hébergé son site : Connexion en `SFTP` sur clubs.resel.fr, authentification avec son compte ResEl.
20
-- L'accès PHPMyAdmin, où il peut gérer la base de données SQL si existante, pour le site : Connexion sur https://phpmyadmin.resel.fr, authentification avec son compte ResEl.
18
+- L'accès FTP où est hébergé son site : Connexion en `SFTP` sur `sftp://clubs.resel.fr`, authentification avec son compte ResEl.
19
+- L'accès PHPMyAdmin, où il peut gérer la base de données SQL si existante, pour le site : Connexion sur `https://phpmyadmin.clubs.resel.fr`, authentification avec son compte ResEl.
21 20
22 21
23 22
# Fonctionnement
24 23
25
-
26
-## Mise en place
24
+## Vue d'ensemble générale
27 25
28 26
L'hébergement de site est réalisée via un ensemble de services et scripts.
29 27
30
-Principalement, l'hébergement est fait sur [Golf](/Serveurs/Golf), via un ensemble de script, et grace à une architecture de branche du [LDAP](/Services/LDAP).
28
+Principalement, l'hébergement est fait sur [Golf](/Serveurs/Golf), via un ensemble de scripts, ainsi que grâce à l'architecture de branches du [LDAP](/Services/LDAP) spécifiques.
29
+
30
+Tout les sites de clubs ont leurs sources dans le dossier `/var/www/` sur Golf, un serveur Apache2 hoste les sites et leur configuration sont classiquement dans `/etc/apache/sites-available/`. Il y a un VirtualHost par site.
31
+
32
+Un serveur SFTP sur Golf permet aux webmestres des sites d'accéder aux code sources des sites.
33
+
34
+Un serveur PhpMyAdmin sur Golf permet aux webmestres de gérer leur base de données.
35
+
36
+Pour gérer des droits corrects, sur le LDAP ont été ajoutés deux branches:
37
+- La branche *site* contient les sites et leur spécifications.
38
+- La branche *webmasters* contient des alias vers les fiches des utilisateurs dans la branche *people*.
39
+
40
+Golf est configurée pour que tout les utilisateurs de la branche *webmasters* puisse s'authentifier via le LDAP, que touts les sites de la branche *site* soit définie en tout que groupe. Ainsi une gestion des droits fine est permise.
41
+
42
+Finalement, un ensemble de scripts permet aux admins ResEl de générer plus ou moins automatiquement les sites.
43
+
44
+## Serveur web
45
+
46
+Le serveur web est **Apache2**.
47
+Il est installé depuis les miroirs Debian.
48
+
49
+Dans le soucis de séparer les fichiers accessibles par les différents sites, on fait tourner chaque vhost sous un user et groupe différent.
50
+Cela est réalisé grâce au module *ipm-itk*.
51
+Il est installé depuis les miroirs Debian : `apache2-mpm-itk`.
52
+
53
+ipm-itk a été configuré pour réduire le nombre de processus originaux :
54
+
55
+#### Sécurisation de PHP
56
+
57
+PHP a été configuré pour augmenter la sécurité des scripts php. La configuration est dans `/etc/php5/apache2/php.ini`.
58
+Notemment des fonctions potentiellement dangereuses ont été désactivées via `disable_functions`, puis l'*open-basedir* a été chrooté vers `/srv/www/`.
59
+Finalement lors d'une auth avec un .htaccess auprès (par exemple) du LDAP, on récupère dans $_SERVERPHP_AUTH_USER le nom de l'utilisateur. Malheureusement, dans sa configuration par défaut, on peut aussi récupérer dans $_SERVERPHP_AUTH_PW le mot de passe entré par l'utilisateur. Pour éviter cela, on ajoute dans php.ini une option, `auto_prepend_file` qui permet de préciser un script exécuté avant tout script PHP. Dans son incarnation actuelle, ce script met juste dans PHP_AUTH_PW une valeur bidon. Il a fallu faire un cas spécial pour phpMyAdmin, qui récupère le mot de passe pour se connecter à la base SQL.
60
+
61
+#### Reverse-Proxy
62
+
63
+Au niveau de [Cyric - l'ancien site publique](/Serveurs/Cyric), un proxy sur `*.(clubs|club|assos|campagne).resel.fr` redirige vers Golf. Le flag PreserveHost est mis pour ne pas altérer l'Host de la requête. Les requêtes venant de l'extérieur sont redirigées vers le port 8000 (et 8443 en SSL), et les requêtes vers le port 80 (et 443 en SSL).
64
+
65
+## Serveur SFTP
31 66
32
-Il y a :
33
-* Sur le LDAP : schéma pour un Site, pour un Webmaster
34
-* Sur Golf, un group représente un Site, un webmaster de ce site appartient à ce groupe.
35
-* Sur Golf, dans `/srv/www` sont placés des dossiers pour tout les sites, servis via Apache2, configurés par les admins ResEl à la demande de création d'un site.
36
-* Sur Golf, un serveur FTP permet d'atteinte `/srv/www`, les webmasters peuvent ainsi modifier le code source de leur site. Gestion des droits posix linux les restreins à leur site.
67
+Le serveur est **sftpd**.
68
+Il est installé depuis les miroirs Debian.
69
+
70
+Il sert `/srv/www/` comme chroot.
71
+
72
+L'authentification est faite via l'authentification PAM classique. Cf [Authentification](auth-ldap).
73
+
74
+Les utilisateurs ont donc accès à l'arborescence de tout les clubs, mais autant donnée la [gestion des droits]() faite, ils ne peuvent que toucher aux fichiers d'un site dont ils sont webmestre.
75
+
76
+## Organisation des droits
77
+
78
+La gestion des droits est vue comme ceci :
79
+
80
+Il y a un groupe global **clubs**.
81
+
82
+Chaque site déclaré sur la branche *site* se voit créer un groupe et un utilisateur du même nom, de même pour chaque webmestre dans la branche *webmasters*.
83
+
84
+Tout les utilisateurs de site ou de webmestres appartiennent à *clubs*.
85
+
86
+Depuis l'interface utilisateur, un webmaster peut définir qui d'autre est webmaster du site. Cela actualise le LDAP, et ajoute le webmestre en question dans le groupe du site.
87
+
88
+Un site peut-être relié à une organisation via le champ dans sa fiche.
89
+
90
+Le site sera dans un répertoire qui sera soit dans dans `/srv/www/(club|assos|campagnes)` si il est relié à une organisation, sinon il sera dans le répertoire indiqué dans le champ *mainDir* de sa fiche LDAP.
91
+
92
+Chaque fichier de ce répertoire appartient à $site:$site et les permissions sont définies à 0700.
93
+
94
+Les répertoires ont le GUID bit d'activé (g+s).
95
+
96
+Le VirtualHost Apache est lancé sous l'utilisateur du site, et le groupe *clubs*.
37 97
38 98
## Schéma LDAP spécifique
39 99
40
-bla
100
+Dans le schéma LDAP, la branche *organisation* recense les clubs et associations et listes de campagne de l'AE :
101
+```
102
+dn: ou=organisations,dc=maisel,dc=enst-bretagne,dc=fr
103
+objectClass: organizationalUnit
104
+ou: organisations
105
+```
106
+
107
+Les objectClass en jeux sont :
108
+
109
+* **studentOrganisation**, que possède toute organisation, définissant les champs *uidPrezs*, *description*, *cn* et *mlInfos*.
110
+* **tbClub**, définissant un club, dérivant de *studentOrganisation*.
111
+* **tbAsso**, définissant une asso, dérivant de *studentOrganisation*.
112
+* **tbCampagne**, définissant une liste BdE de campagne, dérivant de *studentOrganisation* et ajoutant le champ *campagneYear*.
113
+
114
+Ainsi, une organisation ne possède pas forcément de sites web, mais peut posséder une machine par exemple. De plus, le champ *prezUids* permet de connaître les présidents des différentes associations.
115
+
116
+### Branche Sites
117
+
118
+Une branche **site** dans laquelle les sites sont déclarés en tant que reselSite (qui "dérive" de *posixGroup*).
119
+```
120
+dn: ou=sites,dc=resel,dc=enst-bretagne,dc=fr
121
+objectClass: organizationalUnit
122
+ou: sites
123
+```
124
+
125
+L'objectClass principal est **reselSite**, avec les champs :
126
+* *allowCGI* : Autoriser au site du contenu CGI-BIN.
127
+* *siteAccess* : Accès au site depuis : "EXT", "INT", ..
128
+* *siteVisibility* : ?
129
+* *vhosts* : si besoin d'un domaine name particulier pour le vhosts.
130
+* *mainDir* : chemin vers les dossier du site si pas conventionnel.
131
+* *description*
132
+* *cnOrga* : l'organisation (cf ci haut) associée. Si défini, *vhosts*, *mainDir*, *siteName* et *description* sont automatiquement définis via les infos de l'organisation associée. Sinon les champs deviennent obligatoires.
133
+* *siteName*
134
+* *memberUid* : listes des uids (attention pas les dn..) des webmestres du site.
135
+
136
+### Branche Webmasters
137
+
138
+Une branche **webmasters** dans laquelle les webmasters sont déclarés en tant que alias (objectClass: *alias*) d'une fiche dans la branche *people*.
139
+```
140
+dn: ou=webmasters,dc=resel,dc=enst-bretagne,dc=fr
141
+objectClass: organizationalUnit
142
+ou: webmasters
143
+```
144
+
41 145
# Lien utiles
42 146
43 147
- [Golf](/Serveurs/Golf) : le serveur hébergeant les sites et les scripts.