Sécuriser tant bien que mal une application Symfony installée dans un sous-répertoire

Souvent, pour des raisons de coups liées aux certificats SSL, il n’est pas possible d’installer une application Symfony dans son propre virtual host. L’application se retrouve alors dans un sous-répertoire du DocumentRoot, ouverte à tous vents et c’est une catastrophe en terme de sécurité !

Imaginons que notre DocumentRoot soit /home/web et que l’application Symfony soit installée dans le répertoire /home/web/my-sf-app/. Ainsi l’URL de l’application est https://example.com/my-sf-app/web. Si un utilisateur mal intentionné accède à https://example.com/my-sf-app/app/config/config.yml il obtient le fichier de configuration principal de l’application qui contient entre-autre les identifiants d’accès à la base de données… Mauvaise idée.

Sécurisons tant bien que mal tout ça (en partant du principe que votre serveur est Apache) grâce aux fichiers de configuration .htaccess :

Le premier, à créer, sera /home/web/my-sf-app/.htaccess et servira à interdire l’accès à tous les fichiers de l’application :

Order allow,deny
Deny from all

Le second, /home/web/my-sf-app/web/.htaccess, existe normalement déjà dans notre application Symfony (il est utilisé pour l’URL rewriting), ajoutons-y au début :

Order allow,deny
Allow from all

Ce n’est toujours pas la panacée, il est toujours aisée de reconnaitre quelle est la technologie employée à la structure des répertoires, mais c’est déjà mieux !

Installer PHP sur OS X avec le support de MySQL et de INTL

Après avoir installé Homebrew, il ajoutons les dépôts Homebrew-PHP et Homebrew-dupes :

$ brew tap josegonzalez/php
$ brew tap homebrew/dupes

Installons maintenant PHP 5.4 avec le support de MySQL et de INTL :

$ brew install php54 --with-mysql --with-intl
$ brew install php54-intl

Ajoutez maintenant la ligne indiquée par Homebrew pour que Apache charge le module PHP à la fin du fichier /etc/apache2/httpd.conf.

Exemple pour la version 5.4.10 :

LoadModule php5_module    /usr/local/Cellar/php54/5.4.10/libexec/apache2/libphp5.so

Pour booster les performances de PHP, très utile si vous comptez développer avec Symfony, installez également APC :

$ brew install php54-apc

Redémarrez PHP pour que vos modifications soient prises en compte :

$ sudo apachectl restart

Installer un stack LAMP sur un dédié OVH avec Ubuntu 12.10

Petit mémo pour configurer un serveur web LAMP sur un dédié OVH fraichement livré. La distro choisie est Ubuntu 12.10.

Apache, PHP, MySQL

Commençons par mettre à jour la liste des paquets :

# apt-get update

Puis la distribution elle même :

# apt-get dist-upgrade

Installons Apache, PHP, MySQL, phpMyAdmin et les extensions qui vont bien pour faire tourner Symfony 2, WordPress, Prestashop

# apt-get install phpmyadmin mysql-server php5-intl php5-mcrypt php5-xsl php5-cli php5-sqlite php5-memcached php5-curl php-apc php-pear

L’installateur nous demande de rentrer un mot de passe root pour le serveur MySQL (tant mieux) et le serveur web à configurer pour phpMyAdmin. Choisir apache2.

Donnons ensuite à dbconfig-common les mots de passe nécessaire pour qu’il configure les bases de données utiles à phpMyAdmin.

Beaucoup d’applications PHP utilisent le module rewrite de Apache Activons-le :

# a2enmod rewrite

Notre serveur web est prêt à l’emploi !

Un zeste de sécurité

Commençons par éditer /etc/apache2/conf.d/security pour rendre Apache plus discret. Passons ServerTokens à Prod et ServerSignature à Off.

Au tour de PHP. C’est dans /etc/php5/apache2/php.ini que ça se passe, expose_php doit être à Off. Profitons-en pour régler notre fuseau horraire : date.timezone = Europe/Paris.

Ubuntu 12.10 est fournie avec PHP 5.4. Plus besoin de s’occuper de register_globals et des Magic Quotes, ces “fonctionnalités” ont été supprimées upstream. Bon débarras !

Si vous n’utilisez pas d’applications PHP antédiluviennes, passez short_open_tag à Off .

Redémarrons Apache pour que nos réglages soient pris en considération :

# service apache2 restart

Appliquons les bons conseils de Marion et installons un système de sauvegarde automatisée, disons Backup Manager :

# apt-get install backup-manager

Ajoutons /var/lib aux répertoires sauvegardés quand l’installateur nous le propose (ce répertoire contient entre-autre les base de données binaires MySQL).

Si vous avez opté pour un dédié OVH vous disposez peut-être d’un espace de sauvegarde FTP gratuit (ce service ne semble malheureusement plus exister sur certaines offres Kimsufi). Pour l’activer rendez-vous dans le manager : section Services puis Backup Ftp. Une fois le mail avec les identifiants reçu éditons /etc/backup-manager.conf pour les indiquer à l’utilitaire.

Et le courrier ?

Au cas ou nos applications aient besoin d’envoyer des emails :

# apt-get install postfix

Choisissez le type de configuration “Site internet”.

Note : la configuration d’un serveur mail qui envoi des courriers qui ne finissent pas dans “Spam” nécessiterait un article complet.

Changer l’emplacement de mysql.sock avec MAMP

Si comme moi vous utilisez le serveur MySQL fourni avec MAMP pour d’autres usages que le développement PHP, par exemple comme gestionnaire de base de données pendant la création d’applications Django ou Ruby on Rails, il peut être utile de changer l’emplacement de son socket UNIX vers un emplacement plus commun, qui sera trouvé automatiquement par ces applications. Par exemple /tmp/mysql.sock.

Pour ce faire il va nous falloir modifier les script de lancement et d’arrêt de MySQL. Rendons nous dans le dossier bin de MAMP :
cd /Applications/MAMP/bin

Et sauvegardons les scripts dans leur version actuelle :
cp startMysql.sh startMysql.old.sh
cp stopMysql.sg stopMysql.old.sh

Éditons maintenant ces deux fichiers avec notre éditeur de texte préféré (pour ma part ça donnera vim startMysql.sh stopMysql.sh) et remplaçons les occurrences de /Applications/MAMP/tmp/mysql/mysql.sock par /tmp/mysql.sock. Sauvegardez ces deux fichiers puis relancez MAMP.

Vos applications extérieures à MAMP seront désormais à même de se connecter au serveur MySQL via socket UNIX sans configuration particulière… en revanche impossible de se connecter au serveur via PHP. Effectivement, il nous faut également mettre à jour la configuration de PHP.

Éditons le fichier /Applications/MAMP/conf/php5/php.ini (ou /Applications/MAMP/conf/php4/php.ini si vous utilisez encore PHP 4) et remplaçons la ligne mysql.default_socket = /Applications/MAMP/tmp/mysql/mysql.sock par mysql.default_socket = /tmp/mysql.sock.

Redémarrez à nouveau MAMP et tout devrait fonctionner correctement !

Monter une partition Linux sous Mac OS X

Ou plus précisément une partition de type ext2/3, le système de fichier le plus populaire sous GNU/Linux, utilisé par défaut sur Ubuntu.

Mac OS X n’inclut pas de pilote pour monter les partitions ext2, heureusement un projet libre comble ce manque : ext2fsx. Récupérer la version
ext2fsx_dev

sur le site du projet, la seule supportant l’architecture x86 (tous les Mac depuis le passage aux processeurs Intel). Un simple double clic sur le fichier .dmg et un redémarrage de l’ordinateur suffira à l’activation du pilote.

Gestionnaire ExtFS

Vous pouvez désormais monter vos partitions formatés en ext2, 3 ou 4 via la commande mount ou depuis un sympathique petit utilitaire nommé
Gestionnaire ExtFS

que l’on trouve dans le menu
Autre

des
Préférences Système

.

Se connecter au chat Facebook via Pidgin sous Ubuntu

Tout comme dans la dernière version de Adium, l’excellent client libre de messagerie instantanée pour Mac, il est possible de se connecter au chat Facebook via Pidgin (anciennement GAIM). Pour ce faire, nous devrons lui greffer un plugin disponible sur Google Code. Voici la marche à suivre pour l’installer sous Ubuntu.

Le chat Facebook pour Pidgin

  1. Récupérez les archives
    facebook_icons.zip

    et
    pidgin-facebookchat-*.deb

    (à l’heure ou j’écris ces lignes
    pidgin-facebookchat-1.37.deb

    ) sur la page du projet dans le bloc
    Featured Downloads

    .

  2. Installez maintenant le plugin par un simple double-click sur le fichier
    .deb

    puis un click sur le bouton
    Installer le paquet

    qui se trouve en haut à droite de l’installateur de paquets Gdebi.

  3. Relancez Pidgin si il est déjà en cours d’exécution puis ajouter votre compte Facebook depuis le menu
    Comptes

    puis
    Gérer

    .

Ça marche !

Il existe également un thème d’émoticones pour Pidgin nommé Original Smileys qui contient tous les smileys officiels de nombreux services dont le Facebook chat. Son installation est simplissime, téléchargez l’archive, déroulez le menu
Outils

puis sélectionnez
Préférences

. Rendez-vous dans l’onglet
Thèmes des frimousses

, cliquez sur
Ajouter

et sélectionez l’archive téléchargée.

Gandi lance son offre d’hébergement !

Après 9 mois de beta test, Gandi, le célèbre registar qui a démocratisé l’achat de noms de domaines sur Internet, lance son offre d’hébergement extensible et à bas prix.

Pour 10€ HT par mois vous obtenez une “part” sur un serveur virtualisé (la techonologie sous jacente est Xen) ce qui équivaut à un serveur avec processeur Intel Celeron, 256Mo de mémoire vive (et 512Mo de SWAP) et 5 Go de disque dur. Si le besoin sans fait sentir, vous pouvez très simplement ajouter d’autre “parts” à votre serveur via une interface web et augmenter ainsi ses capacités sans avoir besoin de modifier la configuration de votre serveur.

Le traffic est illimité et l’offre inclus un système d’installation de services simplifiés (web, mail, …). Vous avez totalement la main sur votre serveur (shell root) et vous pouvez le configurer comme bon vous semble, comme si vous étiez sur un véritable serveur dédié.

Ce blog est hébergé sur des serveurs Gandi depuis quelques temps et je peux dire que j’en suis très conten, un nouveau concurrent de taille pour les Dedibox d’Illiad et l’offre Kimsufi d’OVH est né.

Faire fonctionner Google Notifier pour Mac en mode sécurisé

Peut-être utilisez-vous Google Notifier pour OS X ? Cet un utilitaire permet d’avertir en temps réel lors de la réception d’un messages sur Gmail, de rappeler les rendez-vous Calendar et d’intégrer ces services au système d’Apple.

Le problème, c’est que par défaut il fait transiter vos identifiants en clair sur le réseau. Si vous vous connectez à un réseau sans fil partagé tel que le réseau Wi-Fi de votre université ou d’une gare, c’est le vol de compte assuré.

Heureusement, une option cachée permet de forcer l’utilisation d’une connexion sécurisée via HTTPS, pour l’activer déployer le menu déroulant en cliquant sur l’icône de Google Notifier, appuyez simultanément sur commande (Pomme) et option (alt) puis sélectionnez l’entrée
Preferences...

.

Dans la fenêtre qui apparait entrez SecureAlways pour
Key

et 1 pour
Value

.

Cliquez sur
Set

pour valider et fermez la fenêtre. C’est fait !

Que vous utilisiez un Mac ou non, c’est toujours une bonne idée de vous connecter à Gmail via https://gmail.com afin de ne pas vous faire voler vos mots de passe. Pour éviter les dangereux oublis il existe une option intitulée
Toujours utiliser le protocole https

activable depuis les paramètres de l’application web.

Astuce originalement trouvée par Highplace.

Changer le message d’accueil de votre terminal

Lorsque vous lancez un shell sous votre Unix préféré (que ce soit GNU/Linux ou un BSD ou OS X), un petit texte est affiché avant le prompt, c’est le MOTD (Message Of The Day). Ils sont souvent austère, comme c’est le cas sur les serveurs d’hébergement Gandi :

Pour le changer pour quelque chose de plus joyeux il suffit de modifier le fichier /etc/motd en tant que root !

Petite astuce, vous pouvez utiliser un FIGlet-like pour créer un logo en art ASCII !

hosting.py 0.2 released

hosting.py is a web server account manager for Debian GNU/Linux and derivatives, such as Ubuntu Linux I am maintaining.

I am proud to announce that the version 0.2 is out !

hosting.py now supports MySQL accounts and databases management and his core is modular. The documentation as been rewrited and detailled.

hosting.py needs contributors. Testers and developers are wanted.

Downloads and details on Google Code.