6g perishablepress : règles de filtrage pour NGINX

Un post rapide pour partager un lien vers une adaptation NGINX des règles 6G de PerishablePress.

Il s’agit d’un ensemble de règles / filtres pour apache qui permettent de sécuriser sensiblement votre serveur web en bloquant toute requête dangereuse. (attention, les règles par défaut interdisent notamment les requêtes POST, il faudra les réactiver si vous utilisez des formulaires, par exemple)

Stéphane Huc a fait un très bon travail d’adaptation pour vous permettre d’appliquer quasiment toutes ces règles sur un serveur NGINX.

Enjoy !!

[ 6G PerishablePress pour NGINX ]

Passage du site en HTTPs avec letsencrypt

Letsencrypt.org Ayant abandonné mon hébergement OVH (pour ne garder que le nom de domaine), l’étape suivante était pour moi de passer en HTTPs.

Astuce : Résilier votre hébergement OVH en conservant le nom de domaine

Une info en passant : la résiliation d’hébergement seule n’est pas mise en évidence dans l’interface d’administration OVH.

Vous trouverez l’option de résiliation dans la partie facturation du manager OVH. (le lien est en haut à droite du site, à côté du choix de la langue). Ensuite, dirigez-vous vers la partie “Mes services” du menu.

Pourquoi ne pas utiliser l’offre SSL OVH ?

Cette démarche était “calculée”, car le coût d’un certificat SSL chez OVH est prohibitif (60€ par an, bien trop pour un site web perso).

De plus, l’autorité de certification let’s encrypt est entrée en bêta publique début décembre et fournit des certificats gratuits : l’occasion de sauter le pas. (et je ne parle pas de Google qui a annoncé favoriser les sites HTTPs dans ses recherches)

Let’s encrypt qu’est-ce que c’est ?

Si vous n’avez pas entendu parler de let’s encrypt, je vous encourage à vous y intéresser.

Cette autorité de certification soutenue par de nombreux groupes (EFF, Mozilla, Cisco, OVH, Free …) a pour but de fournir des certificats au plus grand nombre sans toute la complexité administrative généralement nécessaire à leur création.

Ici, tout est automatique et la création / le renouvellement sont scriptables.

Des instructions d’installation

Je pourrai vous fournir l’ensemble des instructions d’installation, mais celles-ci ont été très bien résumées sur le site suivant : xave.org

A noter :

  • Let’s encrypt est pour l’instant en bêta publique
  • un script officiel permet de tout automatiser, mais il nécessite un accès root et j’aime comprendre ce qui se passe, j’ai donc préféré faire moi-même les opérations.
  • n’oubliez pas de planifier le renouvellement automatique du certificat qui expire tous les 3 mois.
  • vous pouvez aussi utiliser le client officiel letsencrypt pour l’installation.

Autohébergement et Raspberry Pi

Suite à l’installation de mon petit serveur, voici un petit retour sur la “stack” utilisée.

PS: Au fait, bonne année :)

Le système

Pour mon Pi, je ne suis pas parti sur le système Raspbian traditionnel. Celui-ci fonctionne très bien, mais je préfère généralement me tourner vers Arch Linux pour les serveurs.

Arch Linux :

  • a l’avantage d’être une distribution légère,
  • n’installe que le strict nécessaire,
  • est parfaite pour être utilisée en ligne de commande
  • se met à jour facilement, pas de saut de version avec réinstallation du système à effectuer

De plus de nombreux packages sont mis à disposition via le dépôt communautaire AUR. Ce dépôt ne fournit pas de package précompilés mais des sources facilement installables.

D’ailleurs pour vous simplifier l’utilisation des packages d’AUR, je vous recommande l’utilisation de yaourt qui remplace pacman le package manager par défaut en tirant directement les paquets manquants depuis AUR.

Yaourt

Pour installer yaourt, ajoutez le dépôt suivant à votre fichier /etc/pacman.conf :

[archlinuxfr]
SigLevel = Never
Server = https://repo.archlinux.fr/$arch

Puis mettez à jour la base des packages :

pacman -Sy

et installez yaourt :

pacman -S yaourt

Yaourt s’utilise strictement comme pacman. Pour mettre à jour votre système :

yaourt -Syu

Pour installer le package vim, par exemple :

yaourt -S vim

Le serveur web

Pour servir les pages, je ne souhaite pas utiliser le serveur embarqué dans hugo afin d’avoir des fonctionnalités avancées (https dans l’avenir …). J’ai donc décidé d’installer NGINX.

Simple :

yaourt -S nginx

Activez le service avec systemctl :

systemctl enable nginx
systemctl start nginx

et les pages à servir doivent être déposées dans /usr/share/nginx/html.

Le CMS : Hugo

Hugo est un générateur de site static développé en go. Il a l’avantage d’être très rapide et peu gourmand en ressources, bref, parfait pour un Pi.

J’ai choisi d’installer hugo depuis ses sources pour pouvoir contribuer au développement de l’outil (ah, si j’avais plus de temps :) ). Il va donc falloir commencer par installer go, git et mercurial :

yaourt -S go git mercurial

Pour définir l’emplacement des sources et binaires go (mon arborescence go sera ici $HOME/go; ne pas oublier de créer le répertoire), définissez les variables suivantes dans votre .bashrc :

export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin

L’installation et la compilation d’hugo et de ses dépendances seront alors gérés directement par go :

go get -v github.com/spf13/hugo

Et si tout se passe bien, miracle : hugo est installé !

Vous n’avez plus qu’à suivre le getting started pour créer votre premier site et déployer vos pages dans /usr/share/nginx/html. Enjoy !

Un nouveau départ pour ce blog

Hugo Static Website Engine De temps en temps, il faut bien faire du ménage. Aujourd’hui, c’est au tour de mon blog.

Ca faisait un moment que j’utilisais wordpress pour gérer mes posts et j’ai décidé d’utiliser quelque chose de plus moderne :) : Hugo.

Hugo est un générateur de site statique inspiré de jekyll et développé en Go.

Et gros avantage : il est super rapide à s’exécuter !!

Pourquoi est-ce si important ? Car mon serveur est assez “light” :)

Auto-hébergement et Raspberry Pi

Raspberry Pi Logo Et oui, je saute le pas de l’auto-hébergement. Mais je ne souhaite pas avoir un PC en fonctionnement permanent chez moi qui consomme de l’électricité pour le plaisir …

Ca tombe bien, j’ai toujours un Raspberry Pi sous le coude, donc voilà : une ArchLinux, un serveur Nginx et c’est parti !

Et bonus : la Freebox a des ports USBs, utilisons-les pour l’alimentation du serveur.

Le Bilan

Un Raspberry Pi comme serveur HTTP
pas cher à laisser tourner en continu.
Une Arch Linux comme OS
facile à mettre à jour en continu, pas de saut de version à gérer.
Hugo pour la génération de pages
c'est du Go, parfait pour le Raspberry Pi car très véloce (et comme je pratique le langage, je peux contribuer au code :))
Git pour le versioning
youpi !!

Et voilou pour le nouveau site. D’ailleurs l’ancien contenu est toujours en ligne et accessible via le lien “Archives” du menu.

Note: J’ai ajouté de la pub, le but n’est pas d’en faire un revenu, juste un appoint pour le nom de domaine.