L'espace... Cifiste

Parce que la terre est dure ;)

Interfacer l'authentification de GLPI avec KOLAB

Une fois que l'on a mis en place son groupware via KOLAB, il est inté d'utiliser celui-ci pour authentifier les utilisateurs sur les différentes ressources de l'intranet.

Ici ce sera la liaison avec GLPI qui, couplée avec l'envoi des demandes par mail, est vraiment efficace, puisque à réception de celui-ci, il va chercher l'utilisateur correspondant dans l'annuaire LDAP et le synchroniser avec la base GLPI.

Ainsi, vous pouvez entièrement gérer vos tickets par mails, puisque répondre au mail vers GLPI mettra à jour le suivi dans celui-ci.

Pour ce faire, il n'y a rien de plus simple:

Dans GLPI, en tant qu'administrateur, il faut vous rendre dans "Configuration > Authentification", puis dans le choix proposé, cliquez sur "Annuaires LDAP".

Sur la nouvelle page, vous cliquez sur le petit + en haut afin d'ajouter votre serveur.

Sur cette page il vous faut entrer le nom, le port, si il est actif et l'adresse IP de votre serveur

Pour la recherche dans l'annuaire, rien de plus simple, pour base dn vous mettez ceci:

dc=votre-kolab,dc=votre-ext

et pour le DN du compte:

uid=kolab-service,ou=Special Users,dc=votre-kolab,dc=votre-ext

Et champ de l'identifiant:

uid

Il ne vous reste plus qu'à sauvegarder et enfin à tester vos réglage.

Information: en ce qui concerne les utilisateurs déjà présents et créés par mail, je ne suis pas parvenu à les synchroniser. J'ai donc du les supprimer avant toute utilisation.

Écrit le mercredi 29 juillet 2015.

MYSQL Obtenir en quelques lignes un système de pagination de ressources

Ceci n'est qu'un petit pense bête pour mettre en place un système de pagination efficace et qui ne demande pas trop de ressources.

La requête mysql à faire est des plus simple, la seule chose qui sort de l'ordinaire (comprendre pour un  non développeur) est la requête imbriquée.
Celle-ci permet de lancer la recherche avec limit (qui je le rappelle scan la table au complet) uniquement sur l'id de la table et n'utilise donc que les index plus rapide.
Ensuite, la seconde requête elle avec toutes les données, ne récupèrera que les ID trouvés par la premièr.

La requête est la suivante:

SELECT col1, col2, colx
    FROM maTable INNER JOIN (
        SELECT id
        FROM maTable
        ORDER BY id DESC
        LIMIT 10
        OFFSET 0
    )
    AS result USING(id)';

Ici, j'utilise offset plutôt que LIMIT x,x car c'est vraiment plus clair, on ne touche plus à LIMIT, c'est OFFSET qui change.

L'explication est que LIMIT correspond au nombre d'élément que vous souhaitez récupérer par page, et OFFSET correspond à la "page" que vous voulez.
Ainsi, chaque page est un multipe de LIMIT.
Dans notre exemple, la seconde page c'est l'OFFSET 10, 3ème page, l'OFFSET 20 ... etc.
Donc il suffit d'appeler la page suivante avec ?page=votre_multiple

Pour vos utilisateurs et votre SEO (il y en a qui le pratiquent ;-) ) il est plus convenable d'avoir comme numéro de page quelque chose de plus naturel avec une suite de chiffres:
1, 2, 3, 4...

Il vous faut donc obtenir ne nombre de pages à avoir. La aussi rien de plus simple, il vous suffit de récupérer le nombre total d'entrée de votre table (il existe différentes solution plus ou moins consommatrices de ressources) et de faire un bête calcul (ici en PHP):

$nbPages = ceil($nbResources / $perpage);

Le ceil permettant d'obtenir d'arrondir au chiffre supérieur, afin de prendre la dernière pas incomplète si il y a.

Et pour transformer numéro de page en OFFSET, un autre simple calcul:

$offset = ($page - 1) * $perpage;

$page - 1 est nécessaire, car le premier OFFSET démarre à 0 contrairement à la logique d'une pagination.

Ainsi en quelques lignes nous avons un système de pagination simple et efficace qui ne consomme pas trop de ressource.

Référence :

http://www.iheavy.com/2013/06/19/3-ways-to-optimize-for-paging-in-mysql/

Écrit le mercredi 29 juillet 2015.

Astuce : Installation de Proxmox par clé USB, no cdrom found

Si comme moi vous vous trouvez avec un message d'erreur lors du boot de proxmox pour une future installation, il existe une solution simple pour palier à celle-ci ne nécessitant rien de plus que l'utilitaire DD, (c)fdsik et cp :

Si ce n'est déjà fait, il faut avoir copié l'image de proxmox via l'utilitaire dd :

dd if=proxmox-3.2.iso of=/dev/sdX bs=1MB

Ceci fait, lancez cfdisk et créez une seconde partition (format de votre choix, ici fat32).

Puis formatez la, montez la et enfin, copiez l'image ISO de proxmox dessus :

mkfs.vfat /dev/sdX2
mount /dev/sdX2 /mnt
cp prxomox-3.2.iso /mnt/

Maintenant bootez sur la clé et lancez proxmox en mode debug :

boot : debug

Une fois arrivé au prompt, après le message d'erreur, montez votre seconde partition dans /mnt :

mount /dev/sdX2 /mnt

Et ensuite, montez l'image ISO :

mount -t9660 /mnt/proxmox-3.2.iso /mnt

Chrootez* vous dedans :

chroot /mnt

et enfin, lancez le script d'installation :

sbin/unconfigured.sh

Vous devriez arriver sur l'écran d'installation de proxmox.

 

* Du verbe chrooter


Référence :

http://upshell.wordpress.com/2011/11/25/install-proxmox-with-usb/

Écrit le lundi 14 avril 2014.

Astuce : libvirt, déplacer le répertoire par défaut

dans un terminal en root :

virsh pool-start default
virsh pool-destroy default
virsh pool-undefine default
virsh pool-define-as --name default --type dir --target /new/path/to/default
virsh pool-autostart default
virsh pool-build default
virsh pool-start default

Via http://opennodecloud.com/forum/index.php?topic=192.0

Écrit le mercredi 19 mars 2014.

ClamWin et ClamSentinel : Utilisation en mode client <-> serveur

 

Sommaire :

  1. Introduction,
  2. Installation de base,
  3. Préparation des programmes partagés,
  4. Création des scripts utilisateurs,
  5. Configuration des programmes sources,
  6. Initialisations des programmes,
  7. Test des clients,
  8. Optimisation futures,
  9. Références.

Introduction :

Récement j'ai été confronté à un problème de faux positif avec le valeureux clamwin, ne vous pas aller sur chaque poste pour paramétrer une whitelist des applications à ne pas scanner, je me suis mis en réflexion d'installer cet outil en mode client serveur (sachant qu'il ne fonctionne pas dans cette optique). Après quelques triturages de cerveau et tests, le résultat est au dela de mes attentes !

En effet, à partir de simples configuration je suis parvenu à faire fonctionner ClamWin et ClamSentinel via le serveur.

Les intérêts sont multiples :

- Les mises à jours ne se font que sur le serveur,

- Les logs et les fichiers de quarantaines sont écrits sur le serveur (par poste),

- Le fichier de configuration est commun pour tous les clients, ainsi les options / whitelist ne sont configurés qu'une seule fois.

Installation de base

Installer ClamWin et ClamSentinel avec les options par défaut sans télécharger la base virale.

Préparation des programmes partagés :

Tout d'abord télécharger la dernière version de Clamwin1 et ClamSentinel2

Créer un répertoire ClamWin et partager le avec les options suivantes :

- Tout le monde : Contrôle total;

Et les autorisations NTFS suivantes :

- Utilisateurs authentifiés :
> Modifier
> Lecture et exécution
> Affichage du contenu du dossier
> Lecture
> Ecriture

 

Aller dans le répertoire ou ClamWin a été installé et copier les répertoires bin et lib dans le répertoire partagé créé précédement3.

Toujours dans le répertoire partagé, créer les dossiers suivants :

- computers

- db

Ouvrer le fichier de configuration bin\ClamWin.conf et modifier le premier paramètre :

standalone = 1

Qui va rendre autonome l'application (ne va pas créer de fichier de conf sur les postes)

Puis les lignes comme suit :

logfile = %CLAMWINPATH%\computers\%COMPUTERNAME%\log\ClamWin.log
freshclam = %CLAMWINPATH%\bin\freshclam.exe
clamscan = %CLAMWINPATH%\bin\clamscan.exe
quarantinedir = %CLAMWINPATH%\computers\%COMPUTERNAME%\quarantine
database =%CLAMWINPATH%\db

et plus loin :

dbupdatelogfile = %CLAMWINPATH%\log\ClamUpdateLog.txt

Pour que les clients ne soient pas informés des mises à jour et qu'ils ne fassent pas d'update des bases virales

[Updates]
checkversion = 0
checkversionurl = http://clamwin.sourceforge.net/clamwinver.php
warnoutofdate = 0
enable = 0
dbupdatelogfile = \\192.168.1.103\ClamWin$\log\ClamUpdateLog.txt
dbmirror = database.clamav.net
updateonlogon = 0
frequency = Daily
weekday = 2
time = 00:00:00

Ensuite, rendez-vous dans "bin\Microsoft.VC80.CRT" et copier tous les fichiers (sauf le manifest) dans le répertoire parent "bin".

Occupons nous de ClamSentinel :

Il faut dans un premier temps copier les deux exécutables de clamSentinel dans le répertoire partagé bin

- ClamSentinel.exe

- SentinelRecover.exe

Puis copier le fichier de configuration de celui-ci dans bin également, pour faire simple, utiliser l'outil de recherche sur c: pour ClamSentinel.ini

Et modifier ce fichier comme ceci4 :

;***** on Windows 98/ME
;PathClamWin=%CLAMWINPATH%\bin\

;***** on Windows NT/XP/2000, Vista, Windows 7
PathClamWin=%CLAMWINPATH%\bin\

;***** on ClamWin Portable
;PathClamWin=%CLAMWINPATH%\bin\

Et pour finir :

;### Path for logs files. If empty is used the logfile path defined into ClamWin.conf
PathLog=%CLAMWINPATH%\computers\%COMPUTERNAME%\log\

Création des scripts utilisateurs :

Maintenant, pour lancer ClamWin et ClamSentinel au démarrage des postes, il nous faut un script de logon qui va créer si nécessaire les bons répertoires pour la quarantaine et les logs :

ClamWin.bat :

set CLAMWINPATH=\\cheminUNC\ClamWin$
md "%CLAMWINPATH%\computers\%COMPUTERNAME%"
md "%CLAMWINPATH%\computers\%COMPUTERNAME%\log"
md "%CLAMWINPATH%\computers\%COMPUTERNAME%\quarantine"
start %CLAMWINPATH%\bin\ClamTray.exe
start %CLAMWINPATH%\bin\ClamSentinel.exe

Et il ne reste plus qu'à appeler ce script au tout début des scripts utilisateur (partie à revoir, ne serait-il pas plus pertinent de le faire via les paramètres de l'ordinateur ?)

user.bat :

call %~dp0ZClamWin.bat

Configuration des programmes sources :

Enfin, il reste à configurer le ClamWin du serveur, c'est lui qui va récupérer les MAJ et les mettre dans le bon répertoire. Pour cela, il faut d'abord arrêter ClamWin et ClamSentinel puis retourner dans le répertoire de l'installation et modifier le fichier ClamWin.conf de la sorte :

Tout d'abord :

standalone = 1

Et ensuite (remplacer f: par votre lettre de lecteur ;) ) :

database = F:\ClamWin\db

Initialisations des programmes :

Relancer ClamTray puis télécharger la base de données initiale. Si tout c'est bien passé, elle devrait être enregistrée dans le répertoire db du partage ClamWin$

Test des clients :

Il ne reste plus qu'à démarrer un poste client pour confirmer le lancement des exécutables et c'est terminé.

Au fur et à mesure des postes clients allumés, les logs et fichiers de quarantaine vont êtres enregistrés dans le répertoire "computers" par nom d'ordinateur.

À ce stade, ClawWin et ClamSentinel fonctionnent en mode "client serveur".

Pour faire les mises à jours du logiciels, il suffira de faire la MAJ de l'application serveur quand celle-ci le proposera puis copier ces fichiers dans le répertoire bin et lib, sans oublier les fichiers du répertoire \Microsoft.VC80.CRT. Rien de plus simple :)

Optimisations futures :

Même si ça fonctionne vraiment bien, il y a quelques déconvenues :

- Les utilisateurs peuvent modifier les paramètres via le systray ainsi que la MAJ de la base virale.

- Ce mode d'installation ne fonctionne que pour des machine fixe, si on effectue cette méthode sur des clients itinérents, ceux-ci n'auront pas d'anti-virus à l'extérieur du domaine.

Je suis en train de travailler sur des solutions pour palier à ces deux problèmes. Si vous avez des idées, elles sont les bienvenues :)


Références :

1 http://sourceforge.net/projects/clamwin/
2 http://clamsentinel.sourceforge.net/
3 http://fr.clamwin.com/content/view/98/92/
4 http://clamsentinel.sourceforge.net/SentinelSimpleGuide.html

Écrit le jeudi 9 janvier 2014.