Skip to content

Installation et paramétrage de Winlog

Jérôme Bousquié edited this page Nov 23, 2018 · 25 revisions

Récupération de Winlog

Télécharger l'archive https://github.com/jbousquie/winlog/archive/master.zip et la dézipper dans le répertoire de publication Web du serveur, exemple /var/www/html

Installation de la base de données

Note préalable : on utilise ici MySQL, mais n'importe quel autre SGBD peut être utilisé.

Créer dans MySQL une base nommée winlog et un compte ayant tous les droits sur cette base.

mysql -h host -u user -ppass winlog < winlog.sql

Paramétrage

Copier la fichier admin/winlog_conf_admin.php.example en admin/winlog_conf_admin.php et éditer ce dernier.
Hormis des paramètres externes (configuration CAS, par exemple), toute la configuration générale de Winlog se trouve dans cet unique fichier.

Fichier admin/winlog_conf_admin.php :

  • Déclaration de l'URL de l'interface d'administration :
// URL administration de Winlog
$winlog_url = "https://winlog.iut-rodez.fr/admin/";

On peut par exemple choisir une URL qui sera aussi exposée depuis le Web afin de pouvoir suivre l'activité depuis n'importe où.

  • Déclaration de l'URL de la partie frontale :
// URL serveur Winlog : URL sur laquelle les requêtes des PC clients arrivent
$server_url = "https://winlog.iut.rdz/";

On peut ici choisir de n'exposer cette URL que depuis le réseau des PC clients.

  • Déclaration du code partagé entre les clients et le serveur :
// Code partagé entre client et serveur
$server_code = "salt"; // ne pas mettre les caractères "&" ou "=", ni la chaîne "##serverwinlog##"

Il s'agît d'une petite chaîne de caractères connue uniquement du serveur et de ses clients pour limiter le risque de requêtes usurpantes.

  • Déclaration du mode d'authentification :
// mode d'authentification : "CAS", "simple", "LDAP"
$auth_mode = "CAS";

Pour l'instant, seuls les modes "simple" et "CAS" sont implémentés. Choisir initialement le mode "simple" pour vérifier le fonctionnement de Winlog après installation.

Paramètres de connexion à Active Directory :

  • Nom du serveur Active Directory
// Paramètres LDAP pour Active Directory
$ldap_host = "ldap_hostname_or_ip";
$ldap_port = 389;

Mettre entre double-quotes le nom du serveur AD ou son adresse IP : "mon.serveur.ad" ou "192.168.200.200".
Ce serveur doit impérativement être accessible sur le port 389 depuis le serveur Winlog, ce qui peut être testé par un simple telnet mon.serveur.ad 389.

  • Compte ayant accès en lecture sur AD
$ldap_rdn = "CN=ldapview,CN=Users,DC=iut,DC=local";
$ldap_passwd ="password";

Le canonical name, ou CN, ainsi que son mot de passe d'un compte ayant accès en lecture aux branches déclarées ci-dessous est saisi.
Dans cet exemple, le compte se nom ldapview et est rangé dans les Users du domaine iut.local.

  • Bases de recherche AD

Deux types de recherche sont réalisés dans AD : la recherche des machines et la recherches des comptes utilisateurs.

$base_salles = "OU=Salles,DC=iut,DC=local";
$base_salles_personnel = "OU=Salles Admin,DC=iut,DC=local";
...
$base_enseignants = "OU=Enseignants,DC=iut,DC=local";
$base_etudiants = "OU=Etudiants,DC=iut,DC=local";

Une variable $var_whatever est déclarée par branche de recherche aussi bien pour les machines que pour les comptes.
Il est nécessaire d'avoir au moins une branche de recherche des comptes et une branche de recherche des machines.

Dans cet exemple, deux branches de recherche sont déclarées pour les machines $base_salles et $base_salles_personnel, les machines des personnels et des étudiants étant rangées dans des "salles" (OU Salles ou OU Salles Admin).
Deux branches de recherche sont aussi déclarées pour les comptes : $base_enseignants et $base_étudiants.

Ces variables ne sont pas requises en tant que telles. Elles ne servent qu'à rendre plus lisible la déclaration des tableaux de branches de recherche :

  • $ldap_personnes : tableau des branches de recherche sur les comptes.
  • $ldap_machines : tableau des branches de recherche sur les machines.

Exemple :

    // tableaux de configuration requis : $ldap_personnes et $ldap_machines, utilisés par recup_salles.php
$lib_personnel = "Enseignant";          // libellé par défaut
$ldap_personnes = array(
    array("base" => $base_enseignants, "filtre" => $filtre_enseignants, "attr" => $attr_enseignants, "type" => $lib_personnel),
    array("base" => $base_etudiants,   "filtre" => $filtre_etudiants,   "attr" => $attr_etudiants,   "type" => NULL)
);

$ldap_machines = array(
    array("base" => $base_salles, "filtre" => $filtre_salles, "attr" => $attr_salles),
    array("base" => $base_salles_personnel, "filtre" => $filtre_salles, "attr" => $attr_salles)
);

NOTE : le tableau $ldap_personnes contient une clé nommée "type".
Si "type" est NULL, les comptes récupérés de cette branche seront rangés dans Winlog dans des groupes nommés comme l'OU contenant chaque compte.
Si "type" a une valeur (string), les comptes récupérés seront rangés dans Winlog dans un groupe nommé comme la valeur de "type".
NOTE 2 : Si on n'a qu'une seule branche de recherche, on ne met qu'un seul array dans le tableau général :

// une seule branche machines
$ldap_machines = array( 
    array("base" => $base_salles, "filtre" => $filtre_salles, "attr" => $attr_salles) 
);
// une seule branche personnes
$ldap_personnes = array( 
    array("base" => $base_enseignants, "filtre" => $filtre_enseignants, "attr" => $attr_enseignants, "type" => $lib_personnel) 
);
  • Tableau des exclusions
    On peut vouloir ne pas récupérer certaines OU des résultats des recherches sur les machines ou sur les compte précédents.
    Dans ce cas, on déclare explicitement les noms des OU à exclure de chaque type de recherche :
// Liste des OU (dn) à ne pas récupérer dans les tableaux précédents
$OU_machines_exclusion = array( "TEST" );
$OU_personnes_exclusion = array( "TEST" );

Laisser des tableaux vides si pas d'exclusion souhaitée : array();

Note importante : Par défaut, un serveur Active Directory ne retourne au maximum que 1000 lignes de résultats .
Si dans l'une de vos branches personnels ou machines, vous avez plus de 1000 occurrences à récupérer, il faudra alors soit modifier la valeur maximale de retour sur le serveur AD (https://msdn.microsoft.com/en-us/library/aa746414(v=vs.85).aspx ), soit modifier le code de Winlog (recup_salles.php ou recup_comptes.php) pour prendre en compte les résultats paginés : http://php.net/manual/fr/function.ldap-control-paged-result.php

Paramètre de connexion à la base de données MySQL

// Paramètres MySQL
$db_server = "p:localhost";         // "p:host" pour des connexions persistantes
$db_dbname ="winlog";
$db_user = "db_user";
$db_passwd = "db_password";

Si la base est située sur un autre serveur, mettre le nom ou l'adresse IP du serveur dans $db_server et s'assurer que les droits d'accès dans la base sont bien donnés pour ce nom d'hôte.

Paramètres de l'interface d'administration

  • Délai de rafraichissement du rendu des données :
// Délai de rafraichissement en secondes
$delay = 15;

15 secondes est un bon compromis entre la réactivité ("temps réel") et le nombre de requêtes sur la base.
Winlog peut néanmoins fonctionner avec des délais beaucoup plus rapides si nécessaire.

  • Seuils de couleur pour la non-utilisation des machines :
// Seuils de couleur, durée en jours sans connexion
$j10 = 10;      // jaune :  au moins 10 jours sans connexion
$j20 = 20;      // orange : au moins 20 jours sans connexion
$j30 = 30;      // rouge : plus de 30 jours sans connexion

Les nombres de jours avant changement de couleurs sont modifiables. ex : $j10 = 7; pour 7 jours avant de passer en jaune.

  • Liste des salles à ne pas afficher :

Une salle est en fait un groupe de machines.
Certaines groupes de machines, pourtant récupérés depuis AD mais non pertinents pour le suivi, peuvent ne pas être affichés. Les noms saisis n'ont pas nécessairement besoin d'exister dans AD. On peut exclure d'office une salle "TEST" qu'elle existe ou pas dans AD.

// Salles à ne pas afficher
$salles_invisibles = array("STOCK","TEST", "SOUK"); // liste des salles à ne pas afficher

Laisser un tableau vide si aucune salle invisible : $salles_invisibles = array();

  • Déclaration des comptes administrateurs et superviseurs :

Les administrateurs ont accès à toutes les fonctionnalités alors que les superviseurs sont parfois restreints en lecture/vision uiquement, en particulier sur des fonctionnalités de chargement de la base ou de reboot des machines du parc.

// Utilisateurs autorisés : les superviseurs peuvent tout voir, les administrateurs peuvent modifier
$administrateurs = array("admin1", "admin2", "adminN");
$superviseurs = array("user1", "user2", "userN");
// exemple si un seul utilisateur :
$administrateurs = array("adminUnique");

Note : il existe un troisième profil de compte, les utilisateurs autorisés. Les utilisateurs autorisés appartiennent au groupe ayant pour valeur la variable $lib_personnel.

$lib_personnel = "Enseignant";          // libellé par défaut  

Ces utilisateurs autorisés peuvent voir les connexions en cours depuis la salle où ils sont eux-même connectés.
Tous les autres utilisateurs n'ont aucun accès à l'interface d'administration de Winlog.

  • Vue des connexions par défaut : les salles doivent-elles être "enroulées" ou "déroulées" par défaut
// Comportement par défaut des listes de connexions : enroulé/déroulé 
// défaut : $deroule = true;
$deroule = true;
  • Message par défaut pour les utilisateurs autorisés non reconnus
// Messages
// ma_salle_live.php : non connecté depuis une salle
$msg_salle_live_non_autorise = "Vous n'&ecirc;tes actuellement pas authentifi&eacute; comme enseignant dans une salle informatique de l'IUT.<br/>";

Ce message ne concerne que l'affichage de l'URL admin/ma_salle_live.php

  • Autres paramètres

Tous les autres paramètres concernent les fonctionnalités "externes" de Winlog comme l'affichage de la liste des processus d'un PC, le reboot d'une machine ou le blocage Web d'une salle. Ils sont détaillés dans la documentation relative à ces fonctionnalités.