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

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

Linux : résoudre l'erreur cron

Linux : résoudre l’erreur cron “line too long in state file /var/lib/logrotate/status”

Ce matin, j’ai reçu ce message d’erreur de mon serveur par email :

/etc/cron.daily/logrotate:
error: line 672139 too long in state file /var/lib/logrotate/status
error: could not read state file, will not attempt to write into it
run-parts: /etc/cron.daily/logrotate exited with return code 1Code language: JavaScript (javascript)
log-rotate

Sous les systèmes GNU/linux, logrotate est le service qui archive les fichiers log de manière à ne pas travailler sur des fichiers trop lourds.

Les fichiers sont donc archivés plus ou moins régulièrement, selon leur taille et leur utilisation : certains sont archivés tous les jours, d’autres toutes les semaines.

Or, si logrotate ne fonctionne pas correctement, la taille des fichiers explose, ce qui posera tôt ou tard un souci sur le serveur.

Lorsque logrotate n’arrive pas à lire ou à écrire dans le fichier /var/lib/logrotate/status, il faut :

1. supprimer le fichier /var/lib/logrotate/status :

rm -rf /var/lib/logrotate/statusCode language: JavaScript (javascript)

2. et relancer logrotate :

logrotate -f /etc/logrotate.conf

Le fichier /var/lib/logrotate/status ne sert finalement qu’à garder une trace de la dernière rotation des fichiers logs. Ce fichier ne devrait pas contenir énormément de lignes.

Ps : si vous utilisez Varnish, commentez les lignes le concernant dans /etc/logrotate.conf, il est peu utile d’encombrer le serveur avec les logs de ressources statiques.

sdcard-recovery-testdisk

Linux : réparer la table de partition d’une carte SD (erreur : “can’t read superblock”)

Le problème : une carte SD non détectée

sdcard-recovery-testdisk

Aujourd’hui, je me rends compte que la carte microSD de mon téléphone Android n’est plus reconnue. Je ne l’ai pas vu tout de suite donc il est fort possible que cela fasse un petit bout de temps que cette situation perdure.

Je la branche sur un lecteur de carte pour voir ce qui se passe et j’obtiens ce message d’erreur :

Error mounting: mount: /dev/sdh1: can't read superblockCode language: JavaScript (javascript)

On vérifie que la carte est détectée :

sudo fdisk -l

Résultat :

Disk /dev/sdh: 16.6 GB, 16574840832 bytes
28 têtes, 60 secteurs/piste, 19269 cylindres, total 32372736 secteurs
Unités = secteurs de 1 * 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Identifiant de disque : 0x00000000

Périphérique Amorçage  Début         Fin      Blocs    Id. Système
/dev/sdh1            8192    32372735    16182272    c  W95 FAT32 (LBA)

La carte est bien détectée mais elle ne peut être montée. On vérifie maintenant le système de fichiers. Ma carte est en FAT32 donc on lance :

sudo fsck.msdos /dev/sdh1

Résultat :

dosfsck 3.0.12, 29 Oct 2011, FAT32, LFN
/
  Contains a free cluster (2). Assuming EOF.
FAT32 root dir starts with a bad cluster!
Code language: JavaScript (javascript)

Nous avons donc bien des clusters corrompus qui empêchent de monter le sytème de fichier. Nous allons donc utiliser l’utilitaire testdisk pour réparer les mauvais clusters.

La solution : testdisk

On installe testdisk:

sudo apt-get install testdiskCode language: JavaScript (javascript)

et on le lance :

sudo testdisk

Voici ensuite les étapes à suivre dans l’interface sommaire de testdisk :

  1. → Create a new log file
  2. [ choisir le disque qui correspond à la carte SD dans la liste ]
  3. → Intel/PC partition
  4. → Advanced
  5. [ choisir la partition ]
  6. → Boot
  7. → Repair FAT
  8. [ accepter la configuration par défaut et sélectionner Write]
  9. → appuyez sur (Q)uit jusqu’à sortir de l’application.

Et voilà! Quelques secondes plus tard la carte peut de nouveau être montée. Je précise que toutes les données présentes sur la carte avant l’opération sont toujours là, rien n’a été perdu.

A garder sous le coude au cas où cela recommencerait.

enceintes-bluetooth-novodio-puresound

Ubuntu : associer une clé bluetooth avec des enceintes bluetooth Novodio PureSound

Pour mon anniversaire, j’ai eu la bonne surprise de découvrir mon cadeau : des enceintes Bluetooth Novodio PureSound, pour écouter de la musique ou des podcasts dans le salon sans pour autant rester planté devant l’ordinateur du bureau.

J’ai récupéré une vieille clé bluetooth. Je la branche, elle est détectée instantanément sous Ubuntu sans avoir à installer de pilotes additionnels. Génial.

Etape 1 : installation des paquets bluetooth

Pour commencer, j’avais enlevé il y a quelques années tous les pilotes et applications relatifs à bluetooth, étant donné que je n’avais rien sur cette machine qui disposait de cette technologie.

Du coup, il me faut réinstaller le paquet gnome-bluetooth

sudo apt-get install gnome-bluetoothCode language: JavaScript (javascript)

Etape 2 : établir une connexion permanente

Mettez l’enceinte sous tension et appuyez sur le gros bouton broadcast au dos de l’appareil pour qu’il puisse être détecté.

On lance le scan des appareils Bluetooth à portée :

hcitool scan

Résultat:

Scanning ...
	DC:2C:26:10:09:8D	Novodio PureSoundCode language: CSS (css)

Notre enceinte bluetooth Novodio PureSound est bien détectée. hcitool nous donne également son adresse MAC, que nous allons ajouter à notre configuration :

sudo nano /etc/bluetooth/hcid.conf

et on ajoute les informations relatives à notre enceinte :

device DC:2C:26:10:09:8D {
         name "Novodio PureSound"
         auth enable;
         encrypt enable;
 }Code language: JavaScript (javascript)

et on redémarre le service bluetooth

sudo service bluetooth start

Il existe une manière plus graphique d’ajouter l’enceinte : il suffit de cliquer sur Applications > Outils Système > Paramètres Systèmes > Bluetooth.

Lire la suite

WordPress : accorder les bonnes permissions aux fichiers et dossiers avec chown et chmod photo 2

WordPress : accorder les bonnes permissions aux fichiers et dossiers avec chown et chmod

Il est primordial d’accorder les bonnes permissions aux fichiers et dossiers d’un site sur un serveur web. Si ces permissions sont trop permissives, l’administrateur du site s’expose à la compromission du site, voire du serveur.

Sous WordPress, c’est la même chose : les fichiers et dossiers du site doivent avoir les bonnes permissions.

Le problème : des permissions trop larges

chmod-007-permis-executer-300

Sur le site, j’ai eu pendant trop longtemps un problème avec les fichiers et répertoires de thèmes ou de plugins.

Je m’explique : à chaque fois qu’un plugin voulait créer des fichiers (dans un répertoire /cache par exemple), la seule solution était de mettre les permissions de ce répertoire à 777, le mal absolu puisque cela permet au monde entier de lire, écrire et exécuter des fichiers dans ce dossier.

Pour les fichiers de thèmes éditables par WordPress, il fallait que leurs permissions soient à 666, ce qui là aussi posait un gros souci de sécurité.

Voici donc un tuto pour apprendre comment mettre les bonnes permissions à vos fichiers et dossiers pour votre site, qu’il tourne sous WordPress ou non.

Étape 1 : définir le bon propriétaire et groupe pour les fichiers

Les fichiers du site doivent appartenir au propriétaire et au groupe qui les fait tourner.

En règle générale; les serveurs de fichiers (comme Apache ou NginX) ont comme propriétaire www-data et comme groupe groupe www-data.

Dans mon cas, ayant installé les fichiers via SSH, les fichiers étaient détenus par l’utilisateur root. Je crée donc un nouvel utilisateur pour mon site:

adduser caddy www-data

Je vais donc assigner à l’utilisateur caddyet au groupe www-data la permission d’être propriétaire de mes fichiers, avec la commande chown.

Pensez à changer caddypour le nom de votre utilisateur web ou FTP.

Lire la suite

thunar-bulk-renamer

Linux : renommer des fichier en masse avec Thunar Bulk Renamer

Il peut être très utile d’avoir sous la main un petit utilitaire qui permet de renommer des fichiers en masse facilement.

Sous Linux, j’utilise l’outil Thunar Bulk Renamer (Thunar Renommer en masse en français) qui ressemble à ceci :

thunar-bulk-renamer

Thunar Renommer en masse

Thunar est un gestionnaire de fichiers puissant pour XFCE, dont les fonctions peuvent être étendues à l’aide de plugins.

Renommer en masse est un plugin qui permet de renommer toute une liste de fichiers très facilement, avec une interface simple et intuitive. Il permet de :

  • insérer et remplacer des noms de fichiers
  • insérer diverses manières de numéroter
  • rechercher, remplacer, supprimer des caractères
  • changer la casse

Installation de Thunar

Pour installer Thunar, il suffit de lancer :

sudo apt-get install thunarCode language: JavaScript (javascript)

Le raccourci vers l’application Thunar Bulk Renamer se trouve dans Applications > Outils Système > Renommer en masse.

Si le raccourci n’est pas créé, il suffit d’ajouter un nouveau raccourci sur le tableau de bord comme ceci :

1. clic droit sur le tableau de bord > ajouter au tableau de bord > lanceur d’application personnalisé

thunar-bulk-renamer-lanceur

2. entrez la commande suivante :

thunar --bulk-rename

3. choisissez une icône (engrampa.svg m’a semblée adéquate!) et validez.

Thunar Renommer en masse supporte aussi les expressions régulières (regex), c’est un vrai plaisir à utiliser (voir copie d’écran). Un vrai gain de temps également.

Et vous, qu’est-ce que vous utilisez pour renommer vos fichiers ?

Le logo VirtualBox d'Oracle, représentant un cube 3D avec les lettres VM, signifie ses capacités en tant que logiciel de virtualisation permettant aux utilisateurs d'exécuter plusieurs systèmes d'exploitation sur un seul ordinateur, y compris Linux.

Linux : installer VirtualBox via le PPA d’Oracle

J’ai toujours eu un peu de mal avec l’installation et la mise à jour de VirtualBox sous Linux. Il ne faut pas l’installer via les dépôts Ubuntu car ceux-ci deviennent vite obsolètes et ne seront proposées que les mises à jour de sécurité.

Il vaut donc mieux installer VirtualBox directement depuis Oracle, en installant d’abord le noyau linux, les entêtes du noyau et dkms pour éviter toutes les erreurs récurrentes au démarrage de l’application.

Voici ce que j’utilise désormais : tout est automatisé et ne prend que quelques secondes.

Etape 1 : installation des paquets pré-requis

On installe dkms et le noyau linux pour résoudre tous problèmes de dépendances ultérieurs :

sudo apt-get install build-essential dkms linux-source linux-headers-`uname -r`Code language: JavaScript (javascript)

Cela évite, entre autres, de tomber sur cette erreur lors du lancement d’une machine virtuelle :

Kernel driver not installed The VirtualBox Linux kernel driver (vboxdrv) is either not loaded or there is a permission problem with /dev/vboxdrv. Please reinstall the kernel module by executing
‘/etc/init.d/vboxdrv setup’
as root.

Etape 2 : installation de VirtualBox avec le PPA d’Oracle

Installation de VirtualBox en une seule commande :

echo "deb http://download.virtualbox.org/virtualbox/debian `lsb_release -sc` contrib" | sudo tee -a /etc/apt/sources.list.d/virtualbox.list && wget -q http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc -O- | sudo apt-key add - && sudo apt-get update && sudo apt-get install virtualbox-4.3Code language: PHP (php)

Avec cette commande, on télécharge la clé Oracle pour VirtualBox, on installe le dépôt de VirtualBox en fonction de notre version de Linux, on rafraichit la liste des paquets et on installe la dernière version de VirtualBox.

Lire la suite

Ubuntu : graver un disque blu-ray avec K3B photo 1

Ubuntu : graver un disque blu-ray avec K3B

Je viens de faire l’acquisition d’un graveur Blu-Ray, histoire de ne pas passer mon temps à découper le contenu de mes répertoires en dossiers de 4.38 Go. J’ai opté pour un graveur externe USB, de chez Samsung.

samsung-se506bb

Premiers essais

Déballage, branchement, insertion d’un blu-ray vierge : 30 secondes. Lancement d’une gravure de 45 Go : plantage de la gravure. Second essai en créant une image disque avant : plantage de la gravure. Troisième essai, je baisse la vitesse de gravure à 2x – plantage.

Installation de cdrtools

Brasero et K3B ne peuvent pas graver de blu-rays par défaut. Il faut leur ajouter cdrtools :

sudo add-apt-repository ppa:brandonsnider/cdrtools 

On met à jour les dépôts :

sudo apt-get update && sudo apt-get upgradeCode language: JavaScript (javascript)

et on installe les paquets cdrecord et mkisofs :

sudo apt-get install cdrecord mkisofsCode language: JavaScript (javascript)

L’installation de cdrecord et mkisofs va supprimer deux paquets existants (genisoimage et wodim) et nous permettre de graver des BD sans erreurs.

Lire la suite

403-error

Des images qui renvoient une erreur 403

Aujourd’hui, j’édite un ancien article et le prévisualise pour voir les changements : je m’aperçois alors que l’image de l’article ne s’affiche plus.

Ni une ni deux, je sors mon terminal et tente de récupérer l’image avec wget. Erreur 403. Je vérifie la configuration Apache et Varnish, rien à signaler (et surtout rien n’avait été modifié).

Je vérifie alors le fichier via FTP : il se trouve qu’il ne possédait pas les bons droits!

Evidemment, avec un chmod 600, cela ne risque pas de s’afficher… Les autres images, celles qui s’affichaient bien et renvoyaient un code 200, étaient bien chmodées en 644.

Solution : CHMOD

Il faut donc chmoder l’ensemble des fichiers du répertoires, 640 pour les images ce sera parfait :

find /home/public_html/wp-content/uploads -type f -exec chmod 640 {} \;

et pour les répertoires, 750 c’est correct :

find /home/public_html/wp-content/uploads -type d -exec chmod 750 {} \;

Notez la différence de syntaxe : on utilise f pour les fichiers (files) et d pour les répertoires (directory).

Linux : résoudre l'erreur

Linux : résoudre l’erreur “cannot open pixbuf loader module file”

linux-logo

Aujourd’hui, je ressors mon ordinateur portable sur lequel se trouve mon installation Linux Mint.

Problème : une erreur récurrente dans le terminal de mise à jour

Un nouveau pack de mise à jour est disponible donc je lance l’installation des nouveaux paquets de ma Linux Mint Debian Edition. Au cours de la mise à jour, j’obtiens l’erreur suivante :

(gtk-update-icon-cache-3.0:12015): GdkPixbuf-WARNING **: Cannot open pixbuf loader module file '/usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/2.10.0/loaders.cache': No such file or directory

This likely means that your installation is broken.
Try running the command
  gdk-pixbuf-query-loaders > /usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/2.10.0/loaders.cache
to make things work again for the time being.Code language: JavaScript (javascript)

L’erreur est récurrente dans le terminal d’installation et il n’y a plus moyen d’ouvrir d’images : on obtient une erreur comme quoi le format n’est pas reconnu.

Solution : recréer le cache pixbuf

La solution, partiellement donné dans le message, consiste à lancer cette commande avec le chemin complet dans un terminal :

/usr/lib/i386-linux-gnu/gdk-pixbuf-query-loaders /usr/lib/i386-linux-gnu/gdk-pixbuf-2.0/2.10.0/loaders.cache

Ce bug a déjà été mentionné sur le gug tracker de Debian : https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=640150

Cela aide aussi de terminer l’installation et de lancer un petit :

apt-get update && apt-get upgrade && apt-get autocleanCode language: JavaScript (javascript)

Hop, résolu.

Bash : réparer les tables MySQL en cas de crash photo

BASH : renommer une liste de fichiers en ajoutant un suffixe aléatoire

Bash

J’ai récemment eu à renommer toute une floppée de fichiers PDF avec un suffixe aléatoire. BASH peut très bien faire l’affaire!

Ajouter un suffixe aléatoire à une liste de fichiers :

for f in *.pdf; do cp "$f" "${f%.*}-$RANDOM$RANDOM.${f##*.}"; doneCode language: JavaScript (javascript)

Vite fait, bien fait.