J'ai planté le serveur... ou comment récupérer un serveur Kimsufi après un plantage de kernel avec le mode rescue OVH photo

Récupérer un serveur Kimsufi après un plantage de kernel avec le mode rescue OVH

J’ai lamentablement fait planter le serveur en voulant mettre le kernel à jour…

Heureusement, il existe le mode rescue chez OVH qui permet d’installer un linux provisoire sur le serveur et d’initier une connexion SSH pour que l’on puisse réparer le système.

Si jamais cela vous arrive, voici la marche à suivre.

Passage en mode rescue depuis le manager OVH

lifesaver

1. Aller sur le manager OVH > Dedicated > Infrastructure > clic sur votre serveur > clic sur l’onglet Server Status.

Lire la suite

Linux : installer l'imprimante d'étiquettes WiFi Brother QL-710W et utiliser gLabels pour le publipostage photo 1

Linux : installer l’imprimante d’étiquettes WiFi Brother QL-710W et utiliser gLabels pour le publipostage

J’ai toujours rêvé d’une imprimante d’étiquettes – principalement parce que j’ai la flemme de toujours rechercher sur Google les mêmes adresses parce que je n’ai pas de carnet d’adresse à jour, mais aussi parce que cela fait plus professionnel pour les gens qui reçoivent mes missives.

Après une petite visite sur Amazon, je découvre l’imprimante d’étiquette Brother QL-710W, qui en plus bénéficie d’une offre de remboursement de 50 euros jusqu’à fin décembre 2014. Je me dis que cela pourrait être cool, surtout qu’elle est USB et WiFi.

brother-ql710w

Commandée, reçue le lendemain, déballée, branchée en USB, je me penche maintenant sur la configuration sous Linux.

Installation en USB

Alors, sous Ubuntu, l’imprimante s’installe toute seule. Par contre, sous certaines versions Linux (Linux Mint ou Debian par exemple), il va falloir passer en manuel, en ligne de commandes dans le terminal.

On branche l’imprimante en USB et on l’allume.

On se rend sur la page des pilotes linux de la Brother QL-710W et on y télécharge les deux fichiers suivants : LPR printer driver et CUPSwrapper printer driver.

En voulant lancer l’installation des paquets comme indiqué sur la page du support Brother, j’ai été confronté aux erreurs suivantes :

mkdir: impossible de creer le repertoire "/var/spool/lpd/ql710w": Aucun fichier ou dossier de ce type chown: impossible d'acceder à "/var/spool/lpd/ql710w": Aucun fichier ou dossier de ce type chgrp: impossible d'acceder à "/var/spool/lpd/ql710w": Aucun fichier ou dossier de ce type chmod: impossible d'acceder à "/var/spool/lpd/ql710w": Aucun fichier ou dossier de ce type<Code language: JavaScript (javascript)

Ce qui signifie tout simplement que le répertoire /var/spool/lpd n’existe pas. On s’en assure :

file /var/spool/lpdCode language: JavaScript (javascript)

résultat :

/var/spool/lpd: ERROR: cannot open `/var/spool/lpd' (No such file or directory)Code language: PHP (php)

donc on le crée :

sudo mkdir -p /var/spool/lpdCode language: JavaScript (javascript)

Ensuite, on installe nos deux paquets :

sudo dpkg -i --force-architecture ql710wlpr-1.0.1-1.i386.deb
sudo dpkg -i --force-architecture ql710wcupswrapper-1.0.1-1.i386.debCode language: CSS (css)

Plus d’erreurs, on continue et on vérifie que les pilotes ont été installés et chargés :

dpkg -l | grep Brother

qui nous retourne:

ii  printer-driver-ptouch     1.3-3ubuntu0.1     printer driver Brother P-touch label printers
ii  ql710wcupswrapper:i386     1.0.1-1     Brother CUPS PTouch Printer Definitions
ii  ql710wlpr:i386     1.0.1-1     Brother lpr Ptouch Printer DefinitionsCode language: CSS (css)

À ce stade l’imprimante est quasiment installée, il suffit de se rendre sur la page d’administration de CUPS, à l’adresse http://localhost:631 et de cliquer sur Admin > Add Printer > Local Printer et on se laisse guider.

Amazon Prime Video

Lire la suite

Serveur dédié : passage au mod FastCGI et PHP-FPM avec Apache MPM Worker photo

Serveur dédié : passage au mod FastCGI et PHP-FPM avec Apache MPM Worker

Aujourd’hui, j’ai changé la manière dont Apache et PHP interagissent ensemble.

Concrètement, au lieu d’utiliser la configuration par défaut du serveur Apache, c’est-à-dire le module mod_php par défaut, le serveur utilisera dorénavant mod_fastcgi (fastcgi) avec PHP-FPM (FastCGI Process Manager).

PHP : mod_php vs mod_fastcgi

La raison principale pour laquelle mod_php utilise plus de ressources réside dans le fait que le module est chargé par le serveur même lors de requêtes pour des fichiers autres que PHP, comme des fichiers HTML ou des fichiers JavaScript.

debian-apache-php-fpm

FastCGI Process Manager (PHP-FPM) aide à réduire l’addition des ressources système utilisées en forçant le serveur à agir comme un proxy et à ne passer que les fichiers portant l’extension php à PHP-FPM.

Ce tutoriel assume que vous avez une installation Apache/PHP sous Debian qui tourne sous mod_php, c’est-à-dire une installation standard. Les changements prennent moins de 15 minutes.

Objectifs : gagner en rapidité d’exécution et avoir une installation plus légère. On peut ainsi envisager un jour de changer Apache pour un autre serveur tout en gardant la même configuration PHP.

Lire la suite

Pack de correctifs post-SP3 photo

Pack de correctifs post-SP3 pour Windows XP

Je vous annonce la fin du pack de correctifs post-SP3 pour Windows XP.

Historiquement, le pack a géré toutes les mises à jour de Windows XP de niveau Critique et Important depuis la sortie du SP3 en mai 2008.

Les mises à jour obsolètes – remplacées par des correctifs plus récentes – sont retirées grâce à des fichiers batch.

Les raisons de la fin du pack

Je n’utilise plus Windows XP depuis 2009 et j’ai de plus en plus de mal à trouver le temps pour le mettre à jour. Il n’existe plus sur mon système que sur une machine virtuelle VirtualBox qui tourne sous Linux.

De plus, de moins en moins d’applications vont continuer de supporter XP donc avec le temps, il ne sera plus possible de mettre les applications à jour. La dernière version de FileZilla, par exemple, n’est plus compatible avec XP.

C’est dommage car Windows XP est l’un des systèmes d’exploitation qui a connu une longévité assez exceptionnelle. Il restera pour beaucoup d’entre nous un bon OS mais il est temps de migrer vers d’autres OS, plus sécurisés et maintenus plus régulièrement.

Lire la suite

PHP : résoudre l'erreur "Redefining already defined constructor for class ..." photo

PHP : résoudre l’erreur Apache “child pid xxxx exit signal Segmentation fault (11)”

php-logo

J’ai découvert dernièrement qu’après une mise à jour du module php-apc, mes logs Apache étaient emplis de message d’erreur comme ceux-ci :

[Sun Nov 02 09:15:11 2014] [notice] child pid 5937 exit signal Segmentation fault (11)
[Sun Nov 02 09:17:36 2014] [notice] child pid 5586 exit signal Segmentation fault (11)
[Sun Nov 02 09:21:50 2014] [notice] child pid 6230 exit signal Segmentation fault (11)
[Sun Nov 02 09:21:51 2014] [notice] child pid 6388 exit signal Segmentation fault (11)
[Sun Nov 02 09:21:52 2014] [notice] child pid 6228 exit signal Segmentation fault (11)
[Sun Nov 02 09:21:53 2014] [notice] child pid 6235 exit signal Segmentation fault (11)
[Sun Nov 02 09:21:54 2014] [notice] child pid 6392 exit signal Segmentation fault (11)
[Sun Nov 02 09:21:55 2014] [notice] child pid 6385 exit signal Segmentation fault (11)Code language: CSS (css)

Cela en fait des erreurs !

Augmenter la taille de la limite de mémoire PHP

Sur le serveur, APC est configuré pour utiliser un unique segment de 128 Mo. Le problème, c’est que la directive memory_limit de PHP est elle aussi à 128 Mo. Par conséquent, il convient d’augmenter cette dernière :

1. On édite notre fichier de configuration PHP :

nano /etc/php5/apache2/php.ini

2. On recherche (Ctrl + w) le mot clé memory_limit et on remplace:

; Maximum amount of memory a script may consume (128MB)
; http://php.net/manual/en/ini.core.php#ini.memory-limit
memory_limit = -1Code language: JavaScript (javascript)

par

; Maximum amount of memory a script may consume (128MB)
; http://php.net/manual/en/ini.core.php#ini.memory-limit
; memory_limit = -1
memory_limit = 256MCode language: JavaScript (javascript)

3. On enregistre la nouvelle configuration et on relance Apache :

service apache2 restart

Vérifiez maintenant les logs Apache. Cela peut ne pas être suffisant.

Désinstaller APC

Dans mon cas, avec PHP 5.4.x, APC semble générer ces erreurs de manière aléatoire. J’ai donc désactivé APC avec :

apt-get remove php5-apcCode language: JavaScript (javascript)

Après relance du serveur Apache et analyse des logs, la situation est revenue à la normale :

Apache PHP/5.4.34 configured -- resuming normal operations

Le problème viendrait donc d’APC et de PHP 5.4 – il est important de noter que PHP 5.5 contient déjà un optimiseur de code intégré (Zend) donc à la prochaine mise à jour majeure de PHP, il sera inutile d’installer APC.

PHP: résoudre l'erreur "file_get_contents(): SSL operation failed with code 1" photo

PHP : résoudre l’erreur “it is not safe to rely on the system’s timezone settings”

php-logo

Voici le message d’erreur PHP qui est apparu récemment dans mes logs Apache :

PHP Warning: strtotime(): It is not safe to rely on the system’s timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone ‘UTC’ for now, but please set date.timezone to select your timezone.

Ajout de la directive date.timezone dans php.ini

On commence par trouver le fichier php.ini qui est actuellement utilisé par le serveur. Il en existe plusieurs, suivant les modules activés donc on commence par repérer le bon avec :

php -i | grep 'Configuration File'Code language: JavaScript (javascript)

Résultat :

Configuration File (php.ini) Path => /etc/php5/cli
Loaded Configuration File => /etc/php5/cli/php.ini
PHP Warning:  Unknown: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in Unknown on line 0Code language: JavaScript (javascript)

Effectivement, l’erreur est répétée même dans un simple phpinfo(). On édite donc notre fichier :

nano /etc/php5/cli/php.ini

La page de manuel des timezones nous indique toute la liste des fuseaux horaires disponibles. Nous choisissons celle qui correspond à l’emplacement de notre serveur : ‘Europe/Paris’.

On recherche la bonne directive avec Ctrl + W et en tapant :

date.

On trouve alors :

[Date]
; Defines the default timezone used by the date functions
; http://php.net/manual/en/datetime.configuration.php#ini.date.timezone
;date.timezone =Code language: JavaScript (javascript)

qu’il faut modifier en :

[Date]
; Defines the default timezone used by the date functions
; http://php.net/manual/en/datetime.configuration.php#ini.date.timezone
date.timezone = 'Europe/Paris'Code language: JavaScript (javascript)

On relance Apache pour prendre en compte la nouvelle configuration :

service apache2 restart

Lire la suite

Linux : installation d'une carte WiFi b/g/n Broadcom 43222 photo

Linux : installation d’une carte WiFi b/g/n Broadcom 43222

Aujourd’hui, je me suis encore amusé à mettre à jour mon portable Toshiba de 2005 : après lui avoir mis un SSD et Linux Mint, je lui ai offert une carte WiFi Broadcom 43222, en remplacement de l’Intel WM3B2200BG d’origine.

wifi-broadcom-BCM43222

Je me suis aperçu que c’était difficile pour cette machine de capter le signal WiFi, que ce soit à la maison ou lorsque je suis à l’étranger : il n’y a rien de plus vexant que d’amener sa machine et de ne pas pouvoir se connecter au réseau.

Changer une carte réseau sur un ordinateur portable n’a rien de bien compliqué mais il m’a fallu du temps pour trouver une carte de remplacement compatible : toutes les nouvelles cartes sont en PCI-Express maintenant, or mon Toshiba n’accepte que du Mini-PCI Type III.

La carte Broadcom est la seule que j’ai trouvé qui fasse WiFi N et qui soit en Mini-PCI, je l’ai achetée pour une dizaine d’euros sur Ebay.

Par conséquent, voici un petit tutoriel qui montre comment changer une carte WiFi sur un Toshiba Satellite.

Etape 1 : démontage et remplacement de la carte

On commence par la base : on éteint la machine, on enlève le courant et on retire la batterie. Et on touche un objet métallique pour décharger l’électricité statique, on ne sait jamais.

Voici quelques images intéressantes pour le démontage du Toshiba Satellite.

1. Retourner le laptop pour avoir accès aux modules et enlever la batterie.

2. Retirer la vis du module WiFi.

3. Déconnecter les câbles de l’antenne de la carte. Le fil blanc va sur MAIN et le fil noir sur AUX.

4. Retirer la carte WiFi. Il suffit d’écarter simplement les deux pattes qui la retiennent : elle va se lever doucement et vous pourrez la retirer doucement. Il ne faut surtout pas utiliser la force : juste écarter les deux pattes et lever la carte.

5. Insérer la nouvelle carte. Elle est plus compacte donc aucun souci pour la placer. Remettre les deux fils d’antenne. Revisser le compartiment.

Etape 2 : installation des pilotes

Une fois la carte changée, un reboot et vous vous apercevez que nous n’avez plus le WiFi ? C’est normal, la nouvelle carte nécessite des pilotes qui ne sont pas installés par défaut… il faut donc passer par une connexion Ethernet le temps de les installer.

Je n’avais pas anticipé cela quand j’avais commencé le tutoriel mais étant chez moi, cela n’a pas posé de souci. C’est une chose importante à souligner toutefois.

Notre nouvelle carte est normalement gérée par les pilotes b43. On peut le vérifier avec cette commande :

sudo lspci -vnn -d 14e4:

qui retourne ceci :

06:02.0 Network controller [0280]: Broadcom Corporation BCM43222 Wireless Network Adapter [14e4:4350]Code language: CSS (css)

La dernière partie entre crochet – 4350 – signifie que nous avons bien affaire à une carte Broadcom BCM43222, prise en charge depuis la version 3.8 des pilotes, et capable de WiFi a/b/g/n.

Lire la suite

Serveur dédié : configurer Transmission pour accéder au WebUI via TLS-SSL photo

Serveur dédié : configurer Transmission pour accéder au WebUI via TLS-SSL

TLS est activé sur notre serveur Apache, WordPress sert désormais ses pages avec une connexion chiffrée et Webmin se sert de notre certificat SSL.

Aujourd’hui, je cherche à lancer le client bittorent Transmission et… je tombe sur un message d’erreur qui m’empêche d’accéder son interface web : “Error code: ssl_error_rx_record_too_long”.

transmission-icon

Voici donc comment corriger le problème et afficher l’interface Web de Transmission en HTTPS. Ce tutoriel prend moins de 10 minutes à réaliser.

Erreur : “SSL received a record that exceeded the maximum permissible length”

Le premier message d’erreur sur lequel je tombe est le suivant :

Secure Connection Failed

An error occurred during a connection to www.example.com:9091. SSL received a record that exceeded the maximum permissible length. (Error code: ssl_error_rx_record_too_long)

Je commence par vérifier le fichier de configuration de Transmission et m’aperçoit assez rapidement qu’il ne sera d’aucun secours.

Une recherche sur le net m’informe qu’il faut probablement voir du côté de la configuration Apache – qui ne contenait jusqu’alors aucune référence à Transmission.

Plusieurs essais de configuration plus tard, l’erreur se transforme en erreur 409.

Erreur “409: Conflict”

Le second message auquel je me heurte est le suivant :

409: Conflict

Your request had an invalid session-id header.

To fix this, follow these steps:

When reading a response, get its X-Transmission-Session-Id header and remember it
Add the updated header to your outgoing requests
When you get this 409 error message, resend your request with the updated header

This requirement has been added to help prevent CSRF attacks.

C’est la première fois que je tombe sur une erreur 409, je suis plutôt content. Je continue donc de tester diverses directives Apache jusqu’à trouver la bonne recette pour faire fonctionner le client web UI de Transmission over SSL.

Lire la suite

Serveur dédié : configurer Webmin en TLS avec un certificat SSL photo 1

Serveur dédié : configurer Webmin en TLS avec un certificat SSL

webmin-logo

Après avoir ajouté la couche TLS/SSL au serveur Apache puis configuré WordPress pour fonctionner uniquement en HTTPS, je me suis intéressé à Webmin.

Je n’utilise pas Webmin pour configurer le serveur parce que c’est une sacrée usine à gaz mais pour certaines choses, c’est utile.

Erreur Webmin : Secure Connection Failed

Après le passage aux connexions sécurisées, j’ai obtenu l’erreur suivante :

Secure Connection Failed

An error occurred during a connection to example.com:10000. The server presented a certificate with a key size that is too small to establish a secure connection. (Error code: mozilla_pkix_error_inadequate_key_size)

En substance, ce message d’erreur indique que la clé du certificat créé par Webmin lors de son installation est trop faible par rapport aux nouvelles exigences de notre certificat. Pas de problème, il suffit de créer un certificat spécialement pour Webmin.

Lire la suite

Serveur dédié : passer WordPress en HTTPS (TLS/SSL) photo

Serveur dédié : passer WordPress en HTTPS (TLS/SSL)

Vous avez sauté le pas et avez validé votre nom de domaine avec un certificat TLS/SSL. Très bien ! Voyons comment passer WordPress sur la version sécurisée de votre site.

Il existe des plugins WordPress entièrement dédiés à SSL pour rediriger vers les pages sécurisées mais on peut très bien faire sans, avec un peu d’huile de coude.

Le tutoriel est pour Debian et WordPress tourne sous Apache chez moi. Cela prend moins d’une heure pour configurer l’essentiel mais il est probable que vous ayez des petites corrections (thèmes, plugins) pour que tout soit servi en https.

Le but est de tout (oui, absolument tout!) servir via la connexion sécurisée.

Étape 1 : configurer Apache

On édite notre fichier de configuration :

nano /etc/apache2/sites-available/www.skyminds.net

et voici ce que garde pour VirtualHost *:80 :

ServerName www.skyminds.net
ServerAlias skyminds.net
DocumentRoot /home/skyminds/public_html/
Redirect 301 / https://www.skyminds.net/Code language: JavaScript (javascript)

La directive ServerName est nécessaire. Ensuite, une simple redirection renvoie toutes les requêtes du port 80 vers le port 443, sécurisé. Même pas besoin de mod_rewrite!

Lire la suite

Android : résoudre l'erreur "aucun APN détecté sur cet appareil" photo

Android : résoudre l’erreur “aucun APN détecté sur cet appareil”

virgin-mobile-logo

Je suis chez Virgin Mobile depuis quelques années déjà et à chaque fois que je me rends dans un autre pays, c’est la même chose : mon smartphone “perd” toutes ses données APN.

La conséquence est simple : sans les noms de points d’accès, plus moyen de se connecter au réseau de données (3G) et impossible d’envoyer et recevoir des MMS.

Solution : ajouter les APN manuellement

Voici donc les APN de Virgin Mobile, mon FAI mobile.

1. Rendez-vous dans Paramètres > Réseau mobile > Noms des points d’accès.

2. créez un nouvel APN pour la data avec ces informations :

Nom : VM data
APN : virgin-mobile.fr
Proxy :
Port :
Username :
Password :
Serveur :
MMSC : 
Proxy MMS :
Port MMS : 
MCC : 208
MNC : 23
Type d'authentification :
Type d'APN : defaultCode language: PHP (php)

3. créez ensuite un second APN pour les MMS avec :

Nom : VM MMS
APN : virgin-mobile.fr
Proxy :
Port :
Username :
Password :
Serveur :
MMSC : http://mmc.omeatelecom.fr/servlets/mms
Proxy MMS :10.6.10.1
Port MMS : 8080
MCC : 208
MNC : 23
Type d'authentification :
Type d'APN : mmsCode language: PHP (php)

4. validez, et sélectionnez l’APN data avec le bouton radio par défaut.

Redémarrez votre téléphone, vous devriez maintenant être capable de vous connecter au réseau Virgin et d’envoyer et recevoir des MMS.

Serveur dédié : sécuriser Apache avec HTTPS (HTTP avec la couche TLS/SSL) en Perfect Forward Secrecy photo 1

Serveur dédié : sécuriser Apache avec HTTPS (HTTP avec la couche TLS/SSL) en Perfect Forward Secrecy

Cela fait quelques mois que j’en parle mais aujourd’hui je le fais, je passe le site en HTTPS – ou techniquement en HTTP avec la couche TLS.

Après les révélations d’Edward Snowden et les multiples affaires concernant les écoutes et les fuites des données des citoyens, je pense qu’il est temps de reprendre un peu les choses en main et de nous intéresser au chiffrement de nos connexions.

La réalisation de ce tutoriel prend moins de 30 minutes, il y a peu de fichiers à éditer et de lignes à copier mais il faut être assez attentif aux diverses manipulations (notamment lors de la génération du certificat).

SSL ou TLS ?

Secure Sockets Layer (SSL) est un protocole cryptographique qui permet une communication sécurisée sur Internet. SSL a été développée par Netscape. SSL 2.0 date de 1995, SSL 3.0 de 1996. Les navigateurs actuels ne supportent plus SSL 2.0.

Transport Layer Security (TLS) est le successeur de SSL. TLS 1.0 date de 1999, TLS 1.1 de 2006 et TLS 1.2 de 2008.

Depuis septembre 2014, la dernière version de tous les navigateurs majeurs supporte SSL 3.0, TLS 1.0, 1.1, et 1.2 activés par défaut et les mitigations contre les attaques connues ont été implémentées.

Les navigateurs qui posent encore problème :

– support de TLS 1.1 and 1.2 mais désactivés par défaut : Internet Explorer (8–10 for Windows 7 / Server 2008 R2, 10 for Windows 8 / Server 2012, Mobile 10 for Windows Phone 8), Opera 12

– non-support de TLS 1.1 et 1.2: Internet Explorer (6-8 for Windows Server 2003, 7–9 for Windows Vista / Server 2008, Mobile 7 and 9 for Windows Phone 7.x), Safari 6 for Mac OS X 10.7 and 10.8

– mitigations contre les attaques connues non implémentées: Safari 6 for Mac OS X 10.7

HTTPS et TLS

Le protocole HTTPS (“Hypertext Transport Protocol Secure” ou protocole de transfert hypertexte sécurisé) protège l’intégrité et la confidentialité des informations des visiteurs d’un site.

Par exemple, lorsqu’un internaute saisit des informations dans un formulaire en ligne afin de recevoir des notifications ou d’acheter un produit, un site sécurisé protège les informations personnelles de cet internaute et garantit que ce dernier communique bien avec le propriétaire autorisé du site.

Avec le HTTPS, les informations sont sécurisées via le protocole Transport Layer Security (TLS), qui offre trois niveaux clés de protection.

1. le chiffrement : consiste à coder les données échangées pour les protéger des interceptions illicites. Cela signifie que lorsqu’un internaute navigue sur un site Web, personne ne peut “écouter” ses conversations, suivre ses activités sur diverses pages ni voler ses informations.

2. l’intégrité des données : les informations ne peuvent être ni modifiées, ni corrompues durant leur transfert, que ce soit délibérément ou autrement, sans être détectées.

3. l’authentication : prouve que les internautes communiquent avec le bon site Web. Cet élément protège contre les attaques de l’homme du milieu (“Man In The Middle” aka MITM) et instaure un climat de confiance pour l’internaute.

Lire la suite