BlueIcefield Le savoir n'a de valeur que s'il est partagé

7sept/104

Accélérer vos applications PHP à l’aide d’APC

Le PHP est un langage compilé à la volée, à chaque appel d'une page il y a compilation du code PHP en un code intermédiaire que l'on nomme opcode. Ce mécanisme de compilation systématique est lourd et rallonge sensiblement la durée de traitement des pages PHP.

APC (Alternative PHP Cache) est ce qu'on appèle  un cache d'OPCodes. Celui-ci permet donc de stocker en mémoire vive le code compilé des pages PHP et nous épargne ainsi la fastidieuse phase de compilation, les performances générales se retrouvent de ce fait nettement améliorées.

En plus d'être une solution fiable et robuste, APC est gratuit, opensource et relativement simple à installer et à utiliser. Alors pourquoi s'en priver ?

Tout d'abord commençons par préparer l'environnement :

# Installation des paquets nécessaires à la compilation d'APC
sudo apt-get install php5-dev php-pear apache2-prefork-dev
 
# Création d'un lien symbolique pour éviter un message d'erreur sur certains environnements
sudo ln -s /usr/bin/apxs2 /usr/bin/apxs

Maintenant que nous avons l'ensemble des paquets requis, procédons à l'installation d'APC :

sudo pecl install apc
# Répondez 'yes' à la question qui vous sera posée

Maintenant créons le fichier de configuration d'APC :

sudo nano /etc/php5/apache2/config.d/apc.ini

Et mettez y ceci :

[APC]
 
# Permet de charger le module APC
extension=apc.so
 
# Permet d'activer le module APC
apc.enabled=1 
 
# Taille de l'espace mémoire alloué à APC (en Mo)
apc.shm_size=30 
 
# Taille maximale des fichiers mis en cache
apc.max_file_size=1M 
 
# Vérification des modifications de fichiers
apc.stat=0

Il est important de s'attarder un peu sur l'option apc.stat. Si sa valeur est à 1, APC vérifiera à chaque appel d'une page si celle-ci a été modifiée depuis sa mise en cache, ces vérifications systématiques affaiblissent les performances. Sur un serveur de production sur lequel les fichiers sont modifiés rarement, il est préférable de désactiver cette option pour gagner en performances. Dès lors, si un fichier est modifié il faudra vider le cache pour que les modifications soient prises en compte.

Vous pouvez trouver la description complète des options disponibles sur cette page.

Il reste maintenant à redémarrer Apache pour achever l'installation d'APC.

sudo /etc/init.d/apache2 restart

Une fois APC installé, son cache se remplira au fur et à mesure des chargements des pages PHP améliorant ainsi progressivement les performances générales.

Il est possible d'obtenir des informations sur l'état de ce cache via une page web spéciale. Celle-ci n'est pas déployée par défaut sur votre serveur, pour se faire il suffit de la rendre accessible depuis le répertoire de votre serveur web :

# Le répertoire de destination peut différer selon la configuration de votre serveur web
sudo cp /usr/share/php/apc.php /var/www/apc.php

Finissons ce billet avec un petit benchmark histoire d'avoir un aperçu du gain réel apporté par l'utilisation d'APC. Sur la même machine je vais tester, à l'aide de l'utilitaire ab fourni avec apache, les performances d'accès à la page d'accueil d'un site sous Joomla sans puis avec APC d'activé.

# Je simule dix utilisateurs qui effectuent dix requêtes chacun
ab -n 10 -c 10 http://127.0.0.1/joomla/

Le résultat obtenu avant l'activation d'APC :

Sans APC il est possible de traiter près de 14 requêtes par seconde.

Le résultat obtenu après l'activation d'APC et le chargement de la page dans le cache :

Avec APC activé (avec la page mise en cache ce qui implique une première visite de celle-ci), il devient possible de traiter près de 31 requêtes par seconde soit un gain de performance de facteur deux.

Vous l'aurez compris, APC apporte une véritable amélioration des performances tout en restant simple à déployer. De plus, il offre aussi une fonctionnalité de cache utilisateur que je n'ai pas traité dans ce billet.

20oct/095

[Linux] Sécuriser GRUB

pc-security

Les cours s'enchainent de manière soutenue et ils sont de plus en plus intéressants. Il faut dire que certains de nos profs sont des pointures dans le domaine du libre, je pense notamment à Lucas Nussbaum qui est un développeur Debian (mainteneur officiel des packages de Perl sous Debian et Ubuntu) ainsi que Laurent Vallar qui est membre de la team Linuxfr.org.

Aujourd'hui on a eu droit en cours à une petite parenthèse au sujet de la sécurité de GRUB, Mr Nussbaum nous a montré comme il était facile d'exploiter GRUB dans sa configuration par défaut pour avoir accès à un système sans mot de passe root ni compte utilisateur.

La méthode qui nous a été décrite est affreusement simple du moment qu'on n'a accès physique à la machine, il suffit lors de l'affichage du menu de sélection de GRUB de sélectionner l'entrée de la distribution Linux puis de taper "e" pour éditer cette entrée, on ajouter à la fin de la ligne débutant par kernel la commande suivante :

init=/bin/bash

Attention à bien laisser un espace entre le texte déjà présent dans la ligne et ce qu'on y ajoute. Il ne faut pas que cela soit coller !

Une fois cette modification faite, on valide en tapant sur "Entrée" puis on boot en pressant la touche "b". Et là miracle, au bout de quelques seconde on arrive sur un shell bash tout beau sans qu'aucune identification ne soit requise. A partir de là on peut imaginer effectuer tout un tas d'action comme modifier le mot de passe d'un utilisateur à l'aide de la commande passwd. Notez d'ailleurs que cette technique est parfaitement utilisable quand vous avez oublié votre mot de passe root par exemple.

Maintenant voyons comment améliorer la sécurité de notre GRUB et du PC de manière générale :

  1. Mettre un mot de passe au BIOS pour éviter les modifications de celui-ci.
  2. Modifier les séquences de boot de façon à ce que la machine ne boot que sur le disque dur, pensez pour cela à complètement désactiver les autres périphériques de boot car se contenter de mettre le disque dur en première position dans la séquence de boot ne suffit pas, un hacker peut très  bien sélectionner un autre périphérique de boot avec certains raccourcis comme F2, F10 ou F12 (tout dépend du matériel).
  3. Mettre un cadenas au chassie du PC (ou l'enfermer dans une case du bureau) pour empêcher un accès à l'intérieur de la machine.
  4. Protéger GRUB à l'aide d'un mot de passe :

Pour mettre un mot de passe à grub il va tout débord falloir générer un hash md5 du mot de passe que vous désirez utiliser, pour cela il faut passer par l'utilitaire grub-md5-crypt :

[nassim@Laptop_Nassim ~]$ grub-md5-crypt
Password:
Retype password:
$1$XF1ZG/$Hry.mmJjvlJ1DeH4/4EG9.

La chaine de caractère en vert est votre mot de passe en crypté, vous devez le copier. Il ne reste plus qu'à éditer le fichier menu.lst de Grub et y insérer la ligne suivante au niveau des configurations générales (et non à la fin du fichier) :

password --md5 MotDePasseCrypté

Pour activer la protection des différentes entrées de Grub, il faut modifier chaque entrée du menu.lst en ajoutant le terme lock en dessous de leur titre, comme dans cet exemple :

# (0) Arch Linux
title  Arch Linux
lock
root   (hd0,5)
kernel /boot/vmlinuz26 root=/dev/disk/by-uuid/af698b50-2fab-4465-9e75-94de78fca8b2 ro vga=792
initrd /boot/kernel26.img

Voilà, désormais lors du lancement de grub vous ne pourrez ni éditer ni lancer une entrée (démarrer Linux) dans avoir pressé la touche "p" puis avoir saisi votre mot de passe.

J'avoue Personnellement, je trouve que cette protection n'est pas très pratique, cela devient vite fatiguant de devoir saisir son mot  de passe à chaque démarrage, je recommande donc cette manipulation uniquement pour les machines qui nécessites réellement un soin très particulier en terme de sécurisation (serveur, ordinateur ayant des données sensibles...etc).

17sept/095

[Photos] ASRALL

Nous avons commencé les cours d'ASRALL cette semaine, nous somme assez nombreux cette année (29 étudiants) mais heureusement le nombre de machines est suffisant. Les membres de la promotion sont sympathique, il y à une excellente ambiance et surtout un cadre de travail super agréable et très motivant.

Salle ASRALL

Salle ASRALL

Au fond de notre salle se trouve un ensemble de PC en libre service, nos jouets ! On peut s'en servir pour des différents tests et expérimentations

Au fond de notre salle se trouve un ensemble de PC en libre service, nos jouets ! On peut s'en servir pour différents tests et expérimentations

A droite ma station de travail (XFCE - Debian Testing pour la plus grande joie de mon binôme) et à gauche mon laptop (KDE4 - Archlinux). Sur nos laptops ont peut soit se connecter via wifi soit via ethernet

A droite ma station de travail (XFCE - Debian Testing pour la plus grande joie de mon binôme) et à gauche mon laptop (KDE4 - Archlinux). Sur nos laptops ont peut soit se connecter via wifi soit via ethernet

Ici mon ami Seb entrain de s'adonner aux macro sous Emacs (équipé d'un MacBook qui tourne sous Debian/XFCE ^^)

Ici mon ami Seb entrain de s'adonner aux macro sous Emacs (équipé d'un MacBook qui tourne sous Debian/XFCE ^^)

Voilà... j'espère publier de nouvelles photos très prochainement, notamment, celles du serveur que je compte déployer dès demain sur une des machines qui se trouvent au fond de la salle. J'hésite toujours sur le choix d'un OS/Distrib mais je crois que je vais essayer FreeBSD.