Patch exec_dir pour php-5.3.4

23/12/2010 Comments off

Bonjour à tous,
Voici le patch exec_dir pour PHP 5.3.4

php-exec-dir.5.3.4.patch
MD5SUM: f6974e6702819dbebe8c464dc4906307

Categories: Général Tags: , , , , ,

Patch exec_dir for php-5.3.4

22/12/2010 2 commentaires

Hello,
This is the patch to enabled exec_dir on PHP 5.3.4.

php-exec-dir.5.3.4.patch
MD5SUM: f6974e6702819dbebe8c464dc4906307

Categories: Général Tags: , , , ,

Pourquoi migrer vers PHP 5 ?

26/08/2010 Comments off

Un peu d’histoire

PHP est un langage de script orienté web, et massivement utilisé avec le serveur web apache et la base de données MySQL ; cet ensemble de technologies est connu sous le nom de AMP ou lorsqu’il est basé sur un système d’exploitation à base Linux, LAMP.

C’est la version 3 qui a amorcé la popularité de PHP, mais c’est à la version 4 qu’il a réellement été adopté en masse. Ces versions sorties en 1998 et 2000 ont aujourd’hui plus de 10ans, mais sont encore très utilisées, en particulier la 4. Certes cette dernière a subi de nombreuses mises à jour jusqu’en Août 2008 avec la version 4.4.9 mais elle n’est aujourd’hui plus maintenue officiellement (http://www.php.net/archive/2007.php#2007-07-13-1), et la dernière version date donc de plus de deux ans, une « éternité » en informatique.

PHP 5 est né le 13 juillet 2004 et a introduit la notion d’objet, cette version est mise à jour régulièrement. La version 5.2 a été considérée par la communauté comme une version mature (2006) et une version 5.2.14 est d’ailleur sortie il y a quelques semaines . La version 5.2.x est donc actuellement la version recommandée par de nombreux experts.

Plus récemment, l’équipe de PHP a sorti la version 5.3 qui apporte de nombreuses nouveautés, en particulier les espaces de nommage ou encore les archives PHP (phar). Cette dernière version signe aussi l’arrêt de la compatibilité avec PHP4. Et oui, car jusqu’à la branche 5.2.x, PHP permettait d’exécuter des applications PHP4 avec PHP5, mais avec PHP 5.3 ceci est révolu.

PHP 5 une maturité accrue

Il faut dire que les spécialistes attendaient cela depuis un moment. En effet PHP4 est moins rapide que PHP5, ensuite il utilise une ancienne version du langage qui permet des directives qui lorsqu’elles sont mal utilisées provoquent des failles de sécurité (le fameux « register globals » par exemple). C’est bien là tout l’enjeu du passage à PHP5, mais au delà de failles de sécurité et d’options de PHP mal utilisées, il y a la façon de programmer. Je l’ai dit tout à l’heure PHP4 à eu un franc succès, et de nombreux développeurs se sont lancés dans la création de sites internet, il ne faut pas oublier qu’à ce moment-là on était au début des années 2000 et qu’Internet était en plein essor ; beaucoup d’entreprises moyennes et grandes voulaient avoir une visibilité sur internet, c’était aussi le début du e-commerce et de la démocratisation des achats en ligne.

Un manque de formation à la sécurité et à PHP

Mais les développeurs ne sont pas réellement formés à ce genre de langage ou du moins aux types d’attaques et de failles auxquelles les sites et programmes peuvent être exposés. On citera par exemple la technique dite « SQL Injection » dont le célèbre site « thepiratebay.org » a été la cible il y a quelques semaines (http://www.pcinpact.com/actu/news/58165-the-pirate-bay-pirate-donnees-utilisateurs-e.htm), ou encore cette université indienne (Sikkim Manipal University http://portal.smude.edu.in/ , http://seclists.org/fulldisclosure/2010/Jul/258).

PHP 5 propose PDO qui permet non seulement de s’abstraire du type de base de données (mysql, sqlite, postgresql…), mais surtout incorpore un système d’échappement permettant d’éviter ce genre d’attaques.

Avec PHP 5 le style de programmation a évolué, le langage PHP s’est nettement inspiré de Java, et la notion d’objet permet au développeur de concevoir son site ou son application, comme il le ferait pour une application dite « lourde ». Cela apporte normalement un gage d’évolutivité incontestable et évite le bien connu « plat de spaghettis » (http://fr.wikipedia.org/wiki/Syndrome_du_plat_de_spaghettis).

Un langage mort encore très utilisé

On l’a vu PHP 4 est un langage mort depuis plusieurs années (2007) et pourtant de nombreuses applications et sites internet continuent à se baser dessus, citons par exemple osCommerce (http://www.oscommerce.com/), outil permettant de déployer un site de vente en ligne rapidement. De plus les applications PHP4 sont souvent très mal programmées exposant les sites et applications à des failles de sécurité importantes. Enfin PHP 5.3 signe la fin de la compatibilité avec PHP4.

Il est donc nécessaire, presque vital maintenant, de migrer les applications PHP4 vers la version PHP5. Il existe pour cela deux approches que nous allons exposer juste après.

Rafistoler ou repenser

La première consiste à rafistoler le code PHP4 pour le rendre compatible PHP5, c’est une tâche qui nécessitera de comprendre le fonctionnement de l’application et de corriger le code, c’est un travail long, d’analyse et d’optimisation, cela pourra convenir pour un site ou une application de moins de 10 000 lignes de code, mais c’est une solution que je qualifierai de temporaire.

La deuxième solution est plus radicale et consiste à reprendre les choses entièrement, d’abord en évaluant les besoins, les applications PHP4 ayant logiquement au moins 5 ans, les besoins ont sans doute changé. Ensuite parce que refaire tout depuis le début permet de concevoir l’application correctement en utilisant des méthodes de modélisation (UML) et de programmer en Objet. Enfin il est paradoxalement plus rentable de tout recommencer depuis zéro, le rafistolage peut prendre plus de temps que de tout refaire pour des projets dépassant 10 000 lignes de code et surtout ne pas être sur d’aboutir à quelque chose de viable, d’où les couts supplémentaires « cachés ».

La programmation objet offre des avantages indéniables par rapport à la programmation procédurale, le code est mieux ordonné, on peut plus facilement représenter l’application sous forme de schémas, et cela permet de rationaliser l’application. Cela passe par une phase d’étude qui permettra de déterminer les besoins et de réaliser diverses représentations telles que les bien connus diagramme de classe ou encore cas d’utilisations.

PHP 5 offre de nombreuses fonctionnalités pour la programmation objet (SPL) encore une fois inspirées du monde Java.

Urgent et vital, mais couteux

Il est donc urgent de migrer les applications PHP4 vers des versions PHP5 plus robustes, mieux pensées, sécurisées et plus facilement évolutives. Cela a évidement un cout, mais il ne sera pas possible de repousser cette migration indéfiniment. De plus PHP4 n’est plus maintenu, les éventuelles failles de sécurité ne sont donc plus corrigées, et continuer à l’utiliser implique une prise de risque loin d’être négligeable. Le code est généralement obsolète et mal conçu ce qui pose des problèmes pour son évolution. PHP5 offre des avantages non négligeables (objets, SPL, PDO) et une sécurité accrue. Il est clair que c’est un investissement, si votre site est un site vitrine, cela pourra peut-être encore attendre un tout petit peu, mais pensez à prévoir un budget pour le refaire à moyen terme et surtout assurez-vous que votre prestataire a les compétences techniques pour réaliser un site bien conçu. Si votre application est du type intranet/extranet et que des données y sont traitées, il est urgent de migrer vers PHP5, assurez-vous que votre prestataire informatique a de l’expérience dans la conception et dans la réalisation d’une telle application, car même en PHP5 il est possible de faire du mauvais travail, c’est donc primordial de s’assurer de votre prestataire dans la réalisation d’applications bien conçues et sécurisée.

Trend Micro pense qu’il n’y a que des spammeurs sur Internet…

09/07/2010 Comments off

Depuis quelque temps, nous devons faire face à de plus en plus de problèmes pour envoyer des messages vers des serveurs équipés de produits Trend Micro, en particulier ceux qui utilisent leur service RBL.

L’erreur que vous pouvez avoir ressemble à celle-ci :

<recipient@domain.com>: host mail.domain.com[xx.xx.xx.xx] refused to talk to me: 550 Service unavailable; Client host [your.ip] blocked using Trend
Micro RBL+.Please see http://www.mail-abuse.com/cgi-bin/lookup?ip_address=your.ip

Ce message en soi n’a rien de particulier, nous l’utilisons également habituellement pour nos listes RBL, mais avec une différence majeure : nous choisissons méticuleusement les listes en fonction de leur équilibre faux-positifs / spams !

Bien entendu nous avons contacté Trend Micro pour les avertir du problème et leur indiquer qu’ils devraient améliorer leur liste. Nous avons soumis de nombreuses adresses qui en plus étaient listées dans la liste « DUL » qui n’est censée contenir que des adresses dynamiques alors que nous avons soumis des adresses de serveurs en datacenters quand même… En fait ils n’ont pas réfléchi longtemps : ils listent la grande majorité de l’Internet en entamant un bras de fer ensuite pour que les FAI prennent le temps eux-mêmes de retirer chaque plage une par une … on croit rêver !

Évidemment cela me fait beaucoup rire, en particulier car la grande majorité des FAIs ont bien d’autres choses à faire que de traiter le boulot des autres ; il ont largement suffisamment à faire à gérer leurs propres réseaux et incidents…

En plus les administrateurs de Trend Micro ne savent même pas lire un enregistrement WHOIS, nous leur avons montré plusieurs assignations qui avaient les descriptions anglaises avec « static » ou « statically assigned » mais il semble qu’il ne savent pas lire et qu’un enfant de 4 ans à peine, maitrisant l’anglais aurait fait mieux qu’eux …

Ma conclusion est assez radicale mais simple : n’utilisez plus les produits Trend Micro du tout ! Si leur liste RBL est complètement fausse, et que leur équipe technique n’est même pas capable de la maintenir il faut fuir. Il ne sont pas capables d’honorer une simple demande de retrait des listes et donc conservent volontairement des informations erronées. Cela montre par ailleurs leur capacité technique et l’attention qu’ils apportent à la qualité des produits qu’ils vendent à leurs clients …

Il reste encore quelques grandes sociétés qui semblent toujours utiliser leurs produits (certainement par complexité de migration) mais vous verrez que bientôt, soit Trend Micro traitera les demandes correctement et poliment, soit ils ne vendront plus rien du tout. Avec une telle mentalité et politique, ce n’est pas difficile à prévoir… Si vous êtes client chez eux, contactez-les pour savoir ce qu’ils veulent faire par la suite si vous espérez encore recevoir des e-mails de vos partenaires (clients, fournisseurs, …)

Enfin, un petit mot pour vous dire que j’ai été particulièrement choqué de voir que cette liste est en fait la plupart du temps payante ! (non maintenue et payante c’est fort ca !). Si vous payez pour le service RBL/RBL+, vous devriez arrêter tout de suite et simplement remplacer votre serveur par zen.spamhaus.org par exemple. Celui-ci est correctement maintenu (quasiment aucun faux positif) et il est même gratuit !

For Trend Micro the Internet is full of spammers …

We are having since recently more and more problems when sending e-mail to users having a Trend Micro product installed, especially one with a RBL service.

The error you can see is more or less this one :

<recipient@domain.com>: host mail.domain.com[xx.xx.xx.xx] refused to talk to me: 550 Service unavailable; Client host [your.ip] blocked using Trend
Micro RBL+.Please see http://www.mail-abuse.com/cgi-bin/lookup?ip_address=your.ip

This is a rather « usual » RBL reject message and we are using similar techniques but with a major difference : we carefully choose the lists according to the weighted false positive/spam ratio !

We asked Trend Micro to remove many many addresses that were listed in fact all on their DUL list (that should by its name only list Dynamic IP addresses). They simply listed a major part of the Internet in this list waiting for ISP to themselves take time to ask Trend Micro to remove the IP ranges.

It makes me laugh a lot since ISP have no care at all of one severely flawed service provider and it’s not their business to spend time doing this ; they have much more important things to do on the networks…

Trend Micro administrators seem to not be able to simply read a WHOIS record, we showed them many that clearly stated « static pool » or « statically allocated PA » but they were not able to understand (a 4 year-old English reading kid would do better …)

My conclusion is very simple : do not use Trend Micro products at all ! Their RBL are completely flawed with false positives (so they remain useless) and since their technical team doesn’t want to check « manually » when we gently ask for removal, you should avoid anything they do ! (Actually, to me, this kind of refusal to do something that is their business shows clearly how they respect their customers and manage their services …)

And even if some major companies seem to still use their products, you’ll see very soon that either Trend Micro will handle requests correctly and politely or otherwise they will not sell any of their RBL/DUL/RBL+ embedded product anymore. If you are one of their customer, you should contact them about this problem to show your interest of being able to receive legitimate e-mails …
By the way, for administrators paying only for access to their RBL+ service you really should try other free and more efficient RBLs, like zen.spamhaus.org. This one is much much better !

NSClient++ (NSCP) ou le monitoring de système Microsoft Windows

17/06/2010 Comments off

Le monitoring est l’une des missions à remplir en matière d’infogérance. Pour monitorer des systèmes Microsoft Windows, SNMP offre des possibilités mais ça n’est pas la panacée. Pour certains éléments, Il est parfois nécessaire d’avoir un service capable d’effectuer des tests depuis l’hôte à monitorer. Heureusement il existe NSClient++. Ce projet est développé par le Suédois Michael MEDIN. NSClient++ est un démon qui permet le monitoring des systèmes Microsoft Windows. Cet outil a été conçu pour être utilisé avec Nagios. Il est notamment capable de dialoguer avec check_nrpe et check_nt.

Schéma

NSClient++ peut être interrogé avec check_nt et check_nrpe notamment

Le démon NSClient++ est donc un service qui s’agrémente de modules. Une fois chargés, ces modules sont capables de récupérer des données (notamment par les check Nagios check_nrpe, check_nt, etc). NSClient++ est fourni avec un ensemble de modules permettant d’effectuer les principaux test (CheckDisk, CheckEventLog, CheckSystem, CheckHelper, etc). Le module le plus intéressant à mon sens étant CheckExternalScripts. Celui-ci nous permet d’éxécuter n’importe quel script ou programme, nous pouvons donc écrire nos propres tests (écrits en C, PowerShell, etc).

Exemple : Monitorer le raid logiciel.

Problématique : Comment connaitre l’état des volumes d’une machine sur le réseau ?
L’utilitaire DISKPART nous renvoie l’état des volumes.

Sortie de diskpart.exe

L’utilitaire Diskpart nous informe sur l’état des volumes

Ici le volume n°0 est un volume de deux disques dynamiques en Raid 1 (miroir). Selon l’état du volume Raid, DISKPART indique le statut : Sain / Rd échoué / Synchronisation / … ça ne vaut pas un mdadm, mais cet utilitaire remplit son office.

Il est possible de s’inspirer du travail de Peter Field pour l’élaboration d’un script. Nous veillerons ici à avoir un retour exploitable par Nagios (OK/WARNING/CRITICAL/UNKNOWN).

En configurant notre script dans la section « [Wrapped Scripts] », une fois le service « NSClientpp » redémarré, nous pouvons effectuer le test :

Résultat du test check_raid

Pouvoir éxécuter ses propres script ou programmes résout de fait la majorité des problématiques liées au monitoring sur un système Microsoft Windows.

Comment aurions-nous procédé sur un système GNU/Linux ? Pour rappel, « mdadm –detail –test /dev/mdX » renvoie des informations pertinentes sur l’état d’un array et surtout un code d’erreur en fonction de l’état du volume :

0 -> le volume raid fonctionne normalement (OK).

1 -> le volume raid a au moins un disque défaillant (WARNING).

2 -> le volume raid a plusieurs disques défaillants qui le rendent inutilisable (CRITICAL).

4 -> problème lors de la récupération des informations du volumes (UNKNOWN).

Il est ensuite possible, par exemple, d’étendre les fonctionnalités d’un agent SNMP afin de tester les volumes RAID.

Chose que nous avons intégré depuis plusieurs années dans nos tests de monitoring.

Mon avis sur cette solution

Pour conclure, NSClient++ est un outil intéressant qui permet de mettre en place des sondes sur les systèmes Microsoft Windows d’une infrastructure à monitorer. Il offre la possibilité de déployer une solution Nagios compliant, efficace et surtout homogène sur l’ensemble d’un parc. Ces caractéristiques permettent notamment d’optimiser son déploiement, sa maintenance mais surtout de faciliter l’intégration à l’outil Nagios.

PHP-FPM (FastCGI Process Manager)

16/06/2010 Comments off

PHP-FPM (FastCGI Process Manager) est une implémentation FastCGI alternative de PHP.

PHP-FPM sait gérer dynamiquement le nombre de process PHP en fonction de la charge qu’il reçoit.
Chaque process est capable d’évoluer dans un environnement, avec une configuration PHP et un UID/GID différent.

Les fonctionnalités qui ont retenu mon attention :
* Avoir une configuration de PHP spécifique par domaine, sous-domaine…
* Chrooter un domaine, un VirtualHost.
* Adapter le nombre de process PHP en fonction de la charge (spawner et killer gentillement)

Ces fonctionnalités sont opérationnelles depuis PHP-5.3.2.
FPM fait partie de la branche PHP core depuis décembre 2009.
Il est probable que PHP-FPM soit intégré dans PHP-5.4. (source)

Pour donner un ordre d’idée, Apache MPM Worker avec PHP-FPM

Apache

Apache MPM Worker + module Fastcgi + PHP-FPM

Lire la suite…

Categories: Administration, Général, Technologies Tags:

To virtualize or not to virtualize …

02/06/2010 Comments off

Seeing everyone becoming crazy about virtualization latest years, especially for some months, my « technician » point of view is completely amazed by the fundamental nonsense everyone puts in this.

Major companies are virtualizing almost all their servers and even smaller companies ask us now to help them virtualize their IT infrastructure.

I must admit, even if I use virtualized machines everyday and have been quite informed in this matter for some years that I still cannot understand the actual buzz about it.

Hey guys, it’s a technology, nothing more, nothing less !

As with any technology, especially a new one, we must provide use cases, pros and cons, and balance the usage we make out of it.

In magazines and some self-called « specialized » IT shows or blogs, everyone seems crazy with virtualization, being the remedy of all IT problems. Remember the green powder from IBM ? It seems to have come true !

More seriously, what virtualization really is ? Only a mean to abstract the hardware part of a computer (especially a server) and run a complete OS on top of it (or many OSes nowadays). It involves very complex and yet insecure mechanisms to achieve this goal and consumes a lot of computing power, even when hardware accelerated, to get everything running « almost fine ».

But, the main reasons I decided to write this article where :

  • a so-called « IT Magazine » (in France we have many that spit completely useless assumptions about what an IT infrastructure should be and deserves us rather that anything else) that was pretending the new trend to be « desktop virtualization », what a nonsense ! (I will explain later) Everything « virtualized » seem to make them sell better, what a mess …
  • seing many companies, even customers, trying to virtualize services on many instances of the same OS (in this case Linux !) on underpowered machines and getting catastrophic results, so low that they had to go back completely on « traditional » hardware powered single OS per machine.

People should think before they do, we always say that, but in this case it does apply very well.

Of course, you get less power by virtualizing many instances of a same OS rather than executing this OS only once ! Usually the performance loss is not negligible even if acceptable. Virtualizing many Linux instances on a Linux host is a complete mess for me. This particular OS has great abilities to isolate (chroot) environments, make safe protections and even live audit the running kernel to enforce policies on processes and filesystems. It’s technically completely useless to run many Linux instances on a Linux host !

But when thinking about it, the main problem with this approach is that we are transferring the complexities of managing correctly, with care, good knowledge and intelligent conception and communication between the developing team and the production team, to products that are much more complex but promise to be really easy to manage…

It appears as if most IT teams have much lowered their expectations for the team members and are trying to compensate with technologies to try hiding the fact that they member don’t exactly understand well what happens for example on a Linux kernel…

Don’t misunderstand me, I am a great fan of virtualization, we use it, on purpose, for tasks or applications that really need it. In fact it’s proven to be very useful to test OS configurations, start and stop (and restart) machines for OS or network tests very quickly, host a different OS for specific purposes, or even virtualize customers’ parts of infrastructure to make a test environment in almost the same conditions.

Hardware has never been cheaper and powerful, 8 to 12 cores processors are emerging at affordable prices on the market now, why not simply buy a computer (server) each time you need a different OS instance ? Even data-centers use now very small servers to be space efficient, but still use a full computer to host OS and services. If you saw news about the « SheevaPlug », you have seen an impressive computer with an exceptional size/power/consumption ratio. Having less hardware won’t even cost you less licenses ! (for those who still use inferior OSes with expensive license fees, even when not needed…)

Virtualizing the desktop part of an IT infrastructure is even funnier. I first thought it was a joke ! In fact it seems we’re coming back to the terminal paradigm. IT managers don’t want to spend time on making useful, adapted and efficient configurations and manage hardware differences, they want everything to be uniform, uniformly accessible … Why don’t you even ask people to be all the same : same sex, same color, and so on ? Terminals have always used the least efficient denominator of network and servers capabilities, because as always, if you still have low end old machines, everyone else should be compatible with them (complete waste of resources…)

Anyway, I know you readers are not going to stop virtualizing everything (why not virtualize the OS on your Phone then ?) but please, please, pay more attention to what really needs virtualization (and brings real and important benefits) and what should continue to work on always cheaper, smaller, and power-efficient hardware.

I didn’t write about the risks, that are obviously much more important with less servers doing more « work » since I didn’t want this article to be even longer, you can easily conclude about what I think of this, especially when a strong demand goes now about being more redundant, more secure, and more fail-safe…  « Don’t put all your eggs in the same basket » says the idiom, even in French !

EmisFR rejoint Nancy Numérique

02/06/2010 Comments off

Après plusieurs mois de présence en 2005 et 2006 lorsque nous nous appelions encore Hybrid Perception, nous avions mis de côté, faute de temps et peut-être de convergence avec les objectifs et moyens de l’époque de Nancy Numérique notre participation au cluster.

Suite à une impulsion de Denys Levassort de COVALOR et à juste titre semble-t-il, il nous est apparu plus que judicieux de rejoindre « à nouveau » donc le cluster Nancy Numérique. La nouvelle dynamique insufflée par Nicolas Bauer et Daniel Vigneau (Cobiz) marque clairement un tournant pour le cluster.

Il regroupe à l’heure actuelle 33 membres et va se former sous statut associatif pour plus de visibilité et plus d’impact sur le bassin de vie de Nancy.

C’est avec plaisir donc que nous allons y participer, en particulier Stéphane Berthelot qui y représentera EmisFR, afin d’y apporter notre vision et notre expérience avec bien entendu un envie de partager nos connaissances et nos compétences en matière de développement sur mesure de projets type extranet / intranet et web 2.0 mais aussi de notre activité d’infogérance de serveurs dédiés ou de maintenance de parc informatique sur la région de Nancy (et également sur Paris via nos partenariats)

N’hésitez donc pas à venir participer aux réunions et présentations du cluster Nancy Numérique. Que vous soyez entreprise utilisatrice de l’informatique en quête de modernité et de partenaires compétents à proximité ou bien prestataire des TIC près de Nancy il y aura forcément au moins un des aspects du cluster qui vous fera progresser !

Nouveau Site EmisFR en ligne !

01/06/2010 Comments off

Vous n’aurez certainement pas manqué de le constater : le nouveau site EmisFR est en ligne depuis le 30 Mai. Tout n’est pas encore complètement rodé et certaines démos techniques y seront ajoutées par la suite (un petit peu de Google Apps, Twitter, et autres mais je garde la surprise d’ici-là …)

Bien entendu si vous constatez des comportements étranges ou anormaux sur des navigateurs qui ne datent pas de la préhistoire (comme IE6 qui serait comme boire du lait périmé depuis 9 ans …) vous pouvez nous en faire part ici.

Merci à nouveau à tous pour votre soutien pendant ces 5 années qui nous motivent toujours pour apporter de nouveaux projets, un nouveau site et des services adaptés et sur mesure.

Bonne lecture : http://www.emisfr.com

Categories: Site web EmisFR Tags: