Installer l’extension intl

PHP Aucun commentaire »

Pour travailler dans de bonne condition avec Symfony2, il vous faut l’extension intl.

Voici la démarche à suivre pour l’installer avec pear.

installer un compilateur C++ & les libraries libicu-devel libicu

yum install gcc-c++ libicu libicu-devel
pear channel-update pear.php.net
pear upgrade PEAR
pecl channel-update pecl.php.net
pear install intl

Créer le fichier /etc/php.d/intl.ini et ajouter

extension=intl.so
Mots-clefs :, , , , ,
 

CentOS 6, Apache & NFS

Linux Aucun commentaire »

SELinux est installé et activé par défaut sur les installations CentOS 6.

Pour mettre en place une infrastructure Web éclatée, j’ai choisis de mettre en place un serveur NFS qui héberge les fichiers de mes applications PHP.
Les serveurs Apache sont donc configurés comme des clients NFS, et le DocumentRoot point vers le point de montage NFS.

Au démarrage d’Apache :
Warning: DocumentRoot [/var/www/tld.domain/subdomains/foo/httpdocs] does not exist

Ce problème peut-être causé par un défault de configuration de SELinux,
Pour vérifier on désactive SELinux et on relance Apache.

setenforce Permissive
service httpd restart

Si Apache démarre correctement, c’est donc bien une configuration SELinux qui bloque.
Il faut modifier un booléen SELinux : httpd_use_nfs qui est à « off » par défaut.

setsebool httpd_use_nfs on

Cela fonctionnera aussi apres un reboot de votre serveur.

Mots-clefs :, , , , , ,
 

Comment pourrir la vie d’un utilisateur Windows

Système, Windows Aucun commentaire »

L’objectif est simple, pourrir la vie d’un utilisateur Windows.

En pré-requis

  • Vous devez avoir accès à un compte local sur l’ordinateur de votre victime. Ce compte doit être membre du groupe Administrateurs local.
  • gestion des MMC en générale.
  • Comme nous allons travailler à distance, il vous faut connaitre l’adresse IP du pauvre malheureux.

Phase 0 : La prise de la bastille

Alors que cela est un pré-requit pour l’article, voici quelques astuces pour avoir accès à la session administrateur de votre victime et ainsi créer un autre compte d’administration dont vous connaissez le mot de passe.

  • Le plus simple est d’aller sur le PC de votre pigeon cible lorsque celui-ci ira faire un pipi et qu’il aura oublié de verrouiller sa session.
  • S’il dispose d’une authentification par reconnaissance faciale, prenez une photo ;)
  • Si vous avez du temps, et que vous pouvez démarrer à partir d’un CD ou d’une clé USB, utiliser OphCrack

Phase 1 : Le camouflage

Nous allons commencer par nous rendre invisible ! Par défaut, Windows affiche la liste des utilisateurs locaux de la machine avant l’ouverture de session.
Sous Windows XP et Vista, vous pouvez suivre le petit tutoriel sur Generation-NT. Sous Windows 7, il suffit de rajouter un $ à la fin du compte utilisateur pour le camoufler.

Phase 2 : Début des hostilités

Ouvrir la MMC Editeur d’objets de stratégie de groupe..

Le mieux, c’est que vous cherchiez dans les options… C’est assez intuitif, et facilement modifiable.
Voici quelques exemples :

  • Supprimer l’affichage des disques durs dans le poste de travail.
  • Bloquer le volume au minimum
  • Empêcher l’accès au panneaux de configuration
  • Changer le fond d’écran.

Phase 2 : Après avoir poser les pièges, on joue!

Pour pouvoir appliquer les modifications sur les Stratégie de groupe, il faut que votre victime redémarre son ordinateur.
Deux possibilités, soit vous êtes patient, soit vous ne l’êtes pas…
Nous, on est des ouf ! Nous allons donc forcer le redémarrage de la machine. Pour cela, télécharger l’outil PsExec développé par Windows.

PsExec est un substitut léger à Telnet qui vous permet d’exécuter des processus sur d’autres systèmes, avec une interactivité totale pour les applications de console, sans avoir à installer manuellement le logiciel client.

psexec \\ip-victime -u compteAdmin -p passwordAdmin shutdown -t 30

Là où vous achevez votre œuvre, commence les déboires pour votre victime. Celui-ce verra en effet une boite de dialogue avec un jolie message « Il vous reste 30 secondes avant extinction de votre ordinateur ».

Phase 3 : Détournement

Amusez-vous à supprimer ses nouveaux films dans le répertoire Film. Attention, il faut être prudent et le faire uniquement lorsque celui-ci dispose d’une bonne collection. Quelques films supplémentaires passeront bien plus discrètement.

Un conseil, pensez au série. Si vous le savez Fan de Lost, supprimer le dernier épisode alors qu’il ne l’a pas encore vu, et vous pouvez être sur qu’il voudra le voir dans la soirée ou le weekend :p

Si quand vous allez sur Google vous voyez une grosse vidéo bien dégueulasse ? Vous gueuleriez.. Alors qu’attendons nous ?
Ouvrez le fichier host de votre victime.

\\ip-victime\C$\Windows\System32\drivers\etc\hosts
url_salase     google.fr

Lorsque nous avons testé cette technique, nous avons monter un serveur Apache sur une machine locale, et en page d’accueil nous avions une vidéo fullscreen assez underground.

Sans accès

Si vous ne disposez pas d’accès administrateur à la machine,

Vous pouvez jouer un peu. Lorsque l’utilisateur verrouille sa session, appuyez sur les touche « Alt + Shift ». Cela a pour effet de passer le clavier de « Fr » à « En », et donc Azerty vers Qwerty.
Lorsque l’utilisateur voudra se reconnecter, il mettra un peu plus de temps que d’habitude ;)

PS : L’article était en brouillon sur mon blog depuis 2008. Excuse moi pour le style adolescent.

Mots-clefs :, , ,
 

Que faire à montréal – Application RIA

Flash Aucun commentaire »

Made in Montréal

Outil d’exploration basé sur une application RIA utilisant la technologie Flash d’Adobe.
MadeinMTL.com regorge d’informations sur les bons coins de Montréal.

Le site n’est pas tout jeune, il a été ouvert en 2003, et une nouvelle version de leur application à vu le jour récemment.
Quand on regarde la partie « A propos« , nous observons :

MadeinMTL permet l’exploration virtuelle de Montréal, â travers plus de 15 000 photos, 400 textes, 50 heures de vidéo, 40 capsules sonores et 25 courts-métrages, intégrés dans un environnement organique, qui traduit l’expérience véritable que nous avons d’une ville en y habitant ou en la visitant.

PS : L’article était en brouillon sur mon blog depuis 2008.

Mots-clefs :, , , , , , , ,
 

Livre – Beginning PhoneGap

Livres Aucun commentaire »

beginning_phonegapBeginning PhoneGap, Mobile Web Framework for JavaScript and HTML5 se propose de vous faire découvrir PhoneGap.

Ce livre n’a pas été pour moi un coups de coeur. Vous trouverez une centaine de pages sur PhoneGap, les autres 200 pages seront sur jQueryMobile, Sencha ou autres frameworks.

Du coups, je ne vous recommande pas la lecture de ce livre pour découvrir PhoneGap.
Afin d’aller plus loin, Kitpages m’a conseillé la lecture de Phonegap Beginner’s Guide qui semble être un ouvrage portant sur l’utilisation de PhoneGap lui meme plus que sur les frameworks qui peuvent améliorer la production de projet via PhoneGap.
phonegap

PhoneGap

D’après ce que j’en ai vu le produit semble très interessant pour de petit projet.

L’interêt principal étant de pouvoir réaliser rapidement une WebAPP HTML/CSS/JS et compiler sans effort via PhoneGap Builder pour les principaux acteurs mobiles.

Les projets un peu touchy auront sans doute plus de difficulté à trouver un avantage à l’utilisation de PhoneGap.

Mots-clefs :, , , , , , ,
 

Livre – MongoDB in Action

Livres 2 Commentaires »

mongodb-in-actionJe souhaitais approfondir MongoDB depuis un petit moment déjà. Et bien qu’il y ai suffisamment de ressource sur le site officiel, la lecture d’un ouvrage papier a toujours été pour moi un luxe lors des mes découvertes techniques.

MongoDB

Pour commencer,
C’est un serveur de base de donnée NoSQL stockant les données sous forme de Document.
Contrairement à d’autres serveurs NoSQL comme Redis qui ne permet un acces aux données que par une clé unique, MongoDB permet d’acceder à un ou plusieurs Document via un système de requête pouvant utiliser des indexes.
MongoDB c’est aussi un déploiement Haute Disponibilité simplifié par la Réplication, une répartition des données – Sharding – possible pour les projets d’envergures, du Map/Reduce et du stockage de fichier via GridFS.
Bref, c’est une mine d’or pour les technophiles.

Le livre

Ce livre s’adresse à ceux souhaitant découvrir MongoDB, voici les différents chapitres

  • A database for the modern web
  • MongoDB through the JavaScript shell
  • Writting programs using MongoDB
  • Document-oriented data
  • Queries and aggregation
  • Updates, atomic operations, and deletes
  • Indexing and query optimization
  • Replication
  • Sharding
  • Deployment and administration

Il s’agit d’un ouvrage écrit en Anglais dans un registre légèrement plus soutenu que les autres livres techniques Anglais. Heureusement il ne s’agit pas d’un roman, on comprends donc assez facilement les messages que souhaite faire passer l’auteur.

mongodbDès les 50 premieres pages, j’ai été convaincu par cette « nouvelle » technologie !
J’avais énormément de question sur la structure d’un projet MongoDB et la migration depuis un SGBDR.
C’est là que les exemples sont très parlant et illustrent les problématiques qu’un développeur rencontra à coups sûr. On trouve réponse à de nombreuses questions concernant la conception d’un projet avec MongoDB.

La partie qui m’a un peu déçu concerne le Sharding sous MongoDB.
Je m’attendais à une fonctionnalité simple à mettre en place alors qu’en fait, cela implique quelques contraintes sur les indexes, et alourdit de maniere significative l’administration.
Au final, c’est moi qui avait un mauvais jugement, le Sharding étant une fonctionnalité tellement excellente pour les entreprises disposant d’un jeux de données colossale qu’il ne fallait pas s’attendre à une simple commande CLI. De grands pouvoirs impliquent de grandes responsabilités !

Pour conclure

MongoDB a un avenir plus que certain au sein de nos SI. Il manque encore un peu de maturité à ce projet pour qu’il puisse s’imposer face à MySQL. Mais un jour on utilisera les SGBDR uniquement lorsque l’on aura des contraintes liées aux transactions ou à une propriété dédiée des nos SGBRD.

Pour aller un peu plus loin

doctrine
Si vous êtes développeur PHP, je vous recommande fortement la lecture du projet Doctrine MongoDB ODM.
Mon point de vue est qu’il s’agit d’un must have sur les projets MongoDB.
Sans parler de la possibilité de faire du mapping vers des POJO, MongoDB ODM permet d’assembler deux collections liés par des références, et je vous laisse découvrir l’intérêt du priming qui ne vous laissera surement pas de marbre.

Commander le livre sur Amazon.

Mots-clefs :, , , , , , , , , , ,
 

CentOS 6 – Varnish & GeoIP

Linux Aucun commentaire »

centosNous allons voir comment déporter le système de géo-localisation IP sur Varnish.
L’objectif final est de permettre à vos backends de récupérer le Pays de l’utilisateur au sein de la requête HTTP.

Par défault, Varnish n’intègre pas de système de géo-localisation par IP, en revanche il existe quelques plugins qui permettent l’utilisation de GeoIP de MaxMind.

Voici les parties de l’article :

  • Installation de Varnish
  • Installation de GeoIP pour Varnish
  • Configuration du Varnish Module
  • Configuration de SELinux

A noter que nous avons opter pour le VMOD Geoip-vmod par leed25d. Contrairement aux autres plugins, celui-ci ne travail pas le header HTTP de manière autonome. Ce sera à vous de le faire, et grâce à cela vous allez pouvoir choisir comment…

Varnish

Pour compiler le VMOD, il vous faudra récupérer les sources de Varnish et les compiler même si vous choisissez l’installation par YUM.
De mon coté, je n’utilise pas en production la version que je compile mais la version provenant du dépot varnish-cache.org. A vous de voir.

Commençons par l’installation de Varnish via YUM (cf. Doc officielle):

rpm --nosignature -i http://repo.varnish-cache.org/redhat/varnish-3.0/el5/noarch/varnish-release-3.0-1.noarch.rpm
yum install varnish

Pour compiler Varnish nous allons avoir besoin de quelques outils et des sources.

yum install pcre-devel make
cd && curl -o varnish-source.tar.gz http://repo.varnish-cache.org/source/varnish-3.0.2.tar.gz
tar -xvzf varnish-source.tar.gz

On lance la compilation de Varnish.

cd varnish-3.0.2/
./configure
make

Normalement, Varnish a été compilé dans votre repertoire $HOME/varnish-3.0.2/.

GeoIP VMOD

On récupère les sources sur github.

Après l’installation de quelques outils dont GeoIP, on lance la compilation du VMOD.
Attention, pour les version 32Bits utiliser VMODDIR=/usr/lib/varnish/vmods/.

yum install unzip automake autoinstall libtool geoip geoip-devel
unzip leed25d-geoip-vmod-[REVISION].zip
cd leed25d-geoip-vmod-[REVISION]
./autogen.sh
./configure VARNISHSRC=$HOME/varnish-3.0.2/ VMODDIR=/usr/lib64/varnish/vmods/
make
make install

Suite à l’installation Varnish, penser à ouvrir votre firewall.

#/etc/sysconfig/iptables
-A INPUT -m tcp -p tcp --dport 80 -j ACCEPT
service iptables restart

De même, il faut configurer Varnish pour écouter sur le port 80 à la place du 6081.

#/etc/sysconfig/varnish</strong>
VARNISH_LISTEN_PORT=80

Ensuite, on va vérifier que l’on peut lancer Varnish en chargeant le plugin GeoIP.

#/etc/varnish/default.vcl
#Top of file.
import geoip;

On va lancer le processus en debug pour voir si tout se passe bien :

varnishd -d -f /etc/varnish/default.vcl
start

Si vous n’avez pas d’erreur, c’est une bonne chose. Sinon, vérifier les étapes ci-dessus.

On va donc pouvoir inclure le pays de l’utilisateur dans le Header HTTP en suivant l’exemple de l’auteur du VMOD

#/etc/varnish/default.vcl
import geoip;
 
sub vcl_recv {
    set req.http.X-Forwarded-For = client.ip;
    set req.http.X-GeoIP = geoip.country(req.http.X-Forwarded-For)
}

Maintenant on va pouvoir mettre Varnish en démarrage automatique.

chkconfig varnish on
service varnish start

Attention:
Sachant que vous êtes sous CentOS, SELinux est surement activé et bloquera l’access au fichier de données /usr/share/GeoIP/GeoIP.dat. Vous pouvez le désactiver ou aller voir à la fin de l’article comment le configurer aux petits oignons.

setenforce 0

Et pour finir, un peu de ménage.

cd && rm -Rf varnish-* && rm -Rf leed25d-*
yum remove pcre-devel make unzip automake autoinstall geoip-devel

Pour aller plus loin

Avec la configuration ci-dessus,
Si un client de France se connecte directement à Varnish, lorsqu’une requête sera générée pour atteindre vos backends elle contiendra : X-GeoIP: FR

Vous pourrez donc récupérer le pays de l’utilisateur en analysant le contenu de la requête HTTP.
Il est à noter que GeoIP retourne le code pays « AA » lorsqu’il ne parvient pas à faire la détection.

Voici comment vous pouvez exploiter le contenu du header en PHP :

$headers = apache_request_headers();
$code = null;
 
if ($headers && is_array($headers) && array_key_exists("X-GeoIP", $headers)) {
    $code = $headers["X-GeoIP"];
}
 
if ((null == $code)||("AA" == $code)) {
    $code = $this->getDefaultCountry();
}
 
$code = strtoupper($code);

Retournons du coté de Varnish.
Comment les choses vont se passer si vous ajoutez un Proxy en amont de Varnish. Par exemple, Pound pour gérer le protocole HTTPS.

La detection du pays ne fonctionnera plus normalement car la valeur contenu dans le script VCL ‘client.ip‘ correspondra à l’IP de votre serveur Pound.

Nous allons donc devoir travailler avec un autre Header HTTP: X-Forwarded-For. Celui-ci permet de conserver l’historique des différents point de passage d’une requête HTTP et contient l’IP du client qui a initié la connection HTTP.

Lorsque les différents Proxy implementent correctement ce standard, le champs X-Forwarded-For contient l’IP du client, le proxy A, le proxy B, etc.. le tout séparé avec des virgules.

Voici comment en tenir compte au sein de votre configuration VCL :

sub vcl_recv {
    //...
 
    if (req.restarts == 0) {
        if (req.http.x-forwarded-for) {
            set req.http.X-Forwarded-For =
            req.http.X-Forwarded-For + ", " + client.ip;
        } else {
            set req.http.X-Forwarded-For = client.ip;
        }
    }
 
    set req.http.X-GeoIP = geoip.country(regsub (req.http.X-Forwarded-For, "(,.*)", ""));
 
    //...
}

Maintenant parlons un peu du système de cache de Varnish.
Si vous avez besoin de connaitre le pays de l’utilisateur, il y a donc fort à parier que le contenu retourné à l’utilisateur sera different en fonction de son Pays.

En résumé, pour une URL : /mon-url, en fonction du Pays utilisateur le contenu sera different.
Si on conserve la spécification par défaut de Varnish qui consiste à mettre en cache les données provenant d’une même URL, vous allez avoir quelques mauvaises surprises.

Voici comment tenir compte du pays de l’utilisateur pour gérer les données qui sont mises en cache.

sub vcl_hash {
    //...
 
    hash_data(req.url);
    hash_data(req.http.X-GeoIP);
 
    //...
 
    return (hash);
}

SELinux

Sous Centos, il y a SELinux.
Si vous n’êtes pas un expert en sécurité Linux. Voici comment faire fonctionner Varnish & GeoIP sans désactiver SELinux.
Le processus Varnish fait parti d’un contexte SELinux different du fichier GetIP.dat qui est installé avec GeoIP.
Du coup, nous allons faire un module pour SELinux afin d’autoriser varnish_t à lire les contextes de type usr_t.

mkdir ~/myvarnish; cd ~/myvarnish;
echo "policy_module(myvarnish, 1.0.0) optional_policy(\` gen_require(\` type varnishd_t; ') files_read_usr_files(varnishd_t) ')" > myvarnish.te
make -f /usr/share/selinux/devel/Makefile myvarnish.pp
semodule -i myvarnish.pp

Pour le coup, cette partie provient d’une discussion avec une personne sur #SELinux on freenode.

Mots-clefs :, , , , , , , , , , , , ,
 

Pound HTTPS 2 HTTP – Format Certificat

Infrastructure, Linux, Sécurité 1 Commentaire »

Au niveau de la configuration, Pound peut prendre un fichier .pem contenant les certificats du serveurs ainsi que des certificats intermédiaires jusqu’à l’autorité de certification ROOT.

Ce que je ne savais pas et que j’ai eu beaucoup de mal à trouver, c’est qu’il faut inclure la clé privée du certificat pour que Pound puisse démarrer.
Sans cette clé privée, voici l’erreur que vous pouvez avoir : SSL_CTX_use_PrivateKey_file Error

Du coups, voici le format à utiliser :

—–BEGIN PRIVATE KEY—–
Server key (pasted in the new key here)
—–END PRIVATE KEY—–

—–BEGIN CERTIFICATE—–
Server certificate
—–END CERTIFICATE—–

—–BEGIN CERTIFICATE—–
Verisign Intermediate CA (for Extended Validation Certificates)
—–END CERTIFICATE—–

—–BEGIN CERTIFICATE—–
Verisign Root CA (Self signed)
—–END CERTIFICATE—–

PS : Information trouvée sur une archive Mailing List :apsis

Mots-clefs :, , , , ,
 

Linux – Trouver les fichiers contenant une chaine de caractere

Linux 2 Commentaires »

A chaque fois que j’ai besoin de chercher une liste de fichier contenant une chaine de caractere, je passe 15min à trouver la bonne commande.

Donc voici un aide mémoire :

find . | xargs grep 'string' -sl

Plus simple :

grep -lR "string" *
Mots-clefs :, , , , , , , ,
 

CentOS 6 – Installer APC

Linux Aucun commentaire »

centosApres avoir installé et configuré correctement votre environnement LAMP sous CentOS 6 vous souhaitez installer APC.

Ce dont vous avez besoin avant de commencer :
- PEAR,
- les interfaces de développement de PHP, Apache & PCRE,
- un compilateur C & l’outil Make.

yum install php-pear php-devel httpd-devel pcre-devel gcc make

Ensuite, on lance la compilation de l’extension APC.

pecl install apc

Voici les questions qui vous seront posées, personnellement j’ai utilisé les valeurs par défaut.

Enable internal debugging in APC [no] : 
Enable per request file info about files used from the APC cache [no] : 
Enable spin locks (EXPERIMENTAL) [no] : 
Enable memory protection (EXPERIMENTAL) [no] : 
Enable pthread mutexes (default) [yes] : 
Enable pthread read/write locks (EXPERIMENTAL) [no] :

On active l’extension PHP

echo "extension=apc.so" > /etc/php.d/apc.ini

Et on redémarre Apache.

service httpd restart

Vous pouvez vérifier que vous avez correctement installé APC via phpinfo().

Aussi, n’hésiter pas à utiliser le script PHP d’administration de APC.
Ici, nous le copions dans notre répertoire HTTP.

cp /usr/share/pear/apc.php /var/www/apc.php
Mots-clefs :, , , , , ,
 
Designed by NattyWP Wordpress Themes.
Images by desEXign.