Rammstein - Du Hast (version bossa nova) photo

Rammstein – Du Hast (version bossa nova)

Vous êtes-vous déjà demandé à quoi ressemblerait Rammstein arrangé à la mode bossa nova?

Et bien Andy Rehfeldt s’est amusé à créer tous les arrangements pour donner naissance à ce mashup totalement surréaliste:

Écrit, arrangé, joué, produit par Andy. Et en plus, cela colle parfaitement à la vidéo d’un concert live !

Fail2Ban: protéger Postfix contre les attaques AUTH DoS photo

Fail2Ban: protéger Postfix contre les attaques DoS de types AUTH, UNKNOWN et EHLO

Aujourd’hui, Jac m’envoie un message pour m’informer que sa redirection email ne fonctionne plus.

Je lance donc un terminal et vérifie les logs de Postfix, qui chargent des dizaines de lignes d’erreurs de ce type:

Dec 15 16:30:33 mail postfix/smtpd[5912]: connect from static-68-236-203-102.nwrk.east.verizon.net[68.236.203.102]
Dec 15 16:30:34 mail postfix/smtpd[5912]: lost connection after AUTH from static-68-236-203-102.nwrk.east.verizon.net[68.236.203.102]
Dec 15 16:30:34 mail postfix/smtpd[5912]: disconnect from static-68-236-203-102.nwrk.east.verizon.net[68.236.203.102]
Dec 15 16:30:34 mail postfix/smtpd[5908]: connect from static-68-236-203-102.nwrk.east.verizon.net[68.236.203.102]
Dec 15 16:30:34 mail postfix/smtpd[5908]: lost connection after AUTH from static-68-236-203-102.nwrk.east.verizon.net[68.236.203.102]
Dec 15 16:30:34 mail postfix/smtpd[5908]: disconnect from static-68-236-203-102.nwrk.east.verizon.net[68.236.203.102]

Comme vous pourvez le constater, ça débite et ça impacte forcément les ressources du système. Voyons donc comment nous pouvons y mettre un terme.

Fail2Ban: protéger Postfix contre les attaques AUTH DoS photo

Pré-requis : fail2ban

Nous allons utiliser fail2ban, un compagnon très utile pour surveiller les logs et analyser les comportements néfastes à l’aide d’expressions régulières.

Je vous invite à relire le guide d’installation de fail2ban.

Nouvelle définition dans fail2ban : postfix-auth

Nous ajoutons donc une nouvelle définition, [postfix-auth], dans notre fichier jail.local:

nano /etc/fail2ban/jail.local

On l’ajoute à la fin des déclarations pour les serveurs mails :

[postfix-auth]
enabled     = true
filter      = postfix.auth
action      = iptables-multiport[name=postfix, port="http,https,smtp,submission,pop3,pop3s,imap,imaps,sieve", protocol=tcp]
#           sendmail[name=Postfix, dest=you@mail.com]
logpath     = /var/log/mail.logCode language: PHP (php)

Je désactive volontairement l’envoi des notifications, ce serait un comble.

Lire la suite

Serveur dédié : réduire les connexions TIME_WAIT des sockets et optimiser TCP photo

Serveur dédié : optimiser la couche TCP

Aujourd’hui, nous allons mettre quelques petites astuces qui permettent d’optimiser un peu le temps de réaction du serveur Apache.

Nous allons commencer par réduire le nombre de connexions TIME_WAIT des sockets TCP et nous verrons ensuite comment optimiser un peu la couche TCP.

Réduire le TIME_WAIT des sockets TCP

De temps à autre, on tombe sur un serveur Apache qui possède des tonnes de connexions TIME_WAIT qui semblent errer dans les limbes. Même si ces connexions ne prennent pas autant de ressources que des connexions ESTABLISHED, il n’est pas vraiment utile de les garder aussi longtemps.

Commençons par faire un petit état des lieux de nos connexions :

netstat -nat | awk '{print $6}' | sort | uniq -c | sort -nCode language: JavaScript (javascript)

Résultat :

      1 established)
      1 Foreign
      2 ESTABLISHED
      3 FIN_WAIT1
     20 LISTEN
    228 TIME_WAIT

Nous avons donc 228 connexions dans les limbes en TIME_WAIT, qui sont totalement inutiles. Voyons donc comment nous pouvons réduire ce nombre.

Vérifiez ces valeurs:

cat /proc/sys/net/ipv4/tcp_fin_timeout
cat /proc/sys/net/ipv4/tcp_tw_recycle
cat /proc/sys/net/ipv4/tcp_tw_reuse

Vous devriez obtenir, respectivement, les valeurs 60 pour le timeout, 0 pour le reyclage et 0 pour la réutilisation.

Nous allons modifier ces valeurs pour réduire le timeout à 30 secondes, et recycler et réutiliser nos connexions :

echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout
echo 1 > /proc/sys/net/ipv4/tcp_tw_recycle
echo 1 > /proc/sys/net/ipv4/tcp_tw_reuseCode language: JavaScript (javascript)

Pour que les changements soient persistants, il faut ajouter ces valeurs au fichier sysctl.conf.

Lire la suite

Monkey3 - Once We Were photo

Monkey3 – Once We Were

Voici un deuxième extrait de l’album “The 5th Sun” du groupe de stoner suisse Monkey3 :

Toujours aussi lourd, martial, épique mais à la fois empreint de délicatesse et d’un côté presque aérien dans les breaks. C’est un vrai régal de se plonger dans leur univers.

Je n’ai pas encore pu les voir cette année… l’année prochaine peut-être?!

Lire la suite

Serveur dédié : installer PHP7 FPM avec FastCGI photo

Serveur dédié : installer PHP7 FPM avec FastCGI sous Debian

Aujourd’hui, on passe de PHP5 à PHP7 en moins de 20 minutes montre en main sur notre serveur dédié qui tourne sous la version stable de Debian.

Pré-requis : les dépôts Dotdeb

Avant toute chose, vous devez avoir les dépôts Dotdeb installés dans votre apt.

On édite donc la liste des dépôts:

nano /etc/apt/sources.listCode language: PHP (php)

puis on y ajoute :

# Dotdeb stable
deb http://packages.dotdeb.org stable all
deb-src http://packages.dotdeb.org stable allCode language: PHP (php)

On installe la clé GPG de Dotdeb:

wget https://www.dotdeb.org/dotdeb.gpg
sudo apt-key add dotdeb.gpgCode language: JavaScript (javascript)

et on met notre liste de paquet à jour :

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

Lorsque vous avez complété cette étape, vous êtes prêt à lancer la mise à jour de PHP.

Installation de PHP7

Je découpe volontairement cette installation en plusieurs sous-étapes, par souci de clarté.

Suppression des paquets PHP5

On commence par supprimer tous les paquets relatifs à PHP5 sur le serveur:

apt-get purge php5-*Code language: JavaScript (javascript)

Résultat:

The following packages will be REMOVED:
libapache2-mod-php5* php-pear* php5* php5-apc* php5-cli* php5-common* php5-curl* php5-dev* php5-fpm* php5-gd* php5-json* php5-mcrypt* php5-mysql* php5-mysqlnd* php5-pecl-http* php5-propro* php5-raphf* php5-ssh2*

On garde cette liste sous le coude en cas de problème.

Installation des paquets PHP7

On installe les paquets PHP7 qui nous sont nécessaires:

apt-get install php7.0 php7.0-fpm php7.0-gd php7.0-mysql php7.0-cli php7.0-common php7.0-curl php7.0-opcache php7.0-jsonCode language: CSS (css)

Lire la suite

8 règles d'or pour un bon déploiement de DNSSEC et DANE photo

8 règles d’or pour bien déployer DNSSEC et DANE

Vous avez sécurisé votre domaine avec DNSSEC et DANE ? Très bien ! Il a cependant quelques petites choses à garder à l’esprit pour anticiper les difficultés et bien gérer la maintenance.

De la rigueur dans la gestion des enregistrements DS (DNSSEC) et TLSA (DANE)

Les enregistrements au niveau du DNS sont à manipuler avec précaution, ce ne sont pas le genre de choses que l’on peut configurer une bonne fois pour toute. On ne publie pas des enregistrements DS (DNSSEC) et TLSA (DANE) par effet de mode.

Les zones DNSSEC doivent être signées régulièrement et les enregistrements TLSA mis à jour en cas de changement de certificats TLS. Si la maintenance n’est pas assurée correctement, le domaine risque d’être injoignable.

Automatiser la signature de la zone DNS

Vous devez absolument mettre en place un crontab qui signe votre zone DNS automatiquement et vous informe du bon fonctionnement de votre zone.

Mettre à jour les enregistrements TLSA avant la chaine de certificat du serveur

Vous devez absolument mettre à jour les enregistrements TLSA avant de mettre à jour la chaine de certificat du serveur (déploiement de nouvelles clés ou utilisation d’un nouveau certificat TLS issu par une autorité de certification).

Lorsque vous mettez à jour votre certificat, vous devez garder les anciens enregistrements TLSA dans votre fichier de zone et ajouter les nouveaux enregistrements TLSA.

Les anciens et les nouveaux doivent donc coexister, le temps que les enregistrements DNS soient mis à jour, après quelques TTLS (quelques jours seulement).

Par exemple, la key1 est déployée initialement sur le serveur :

_25._tcp.mail.example.com. IN TLSA 3 0 1 Code language: CSS (css)

On ajoute la nouvelle clé key2 pendant quelques jours, juste derrière la key1 :

_25._tcp.mail.example.com. IN TLSA 3 0 1 
_25._tcp.mail.example.com. IN TLSA 3 0 1 Code language: CSS (css)

Après le déploiement de la key2, on supprime la key1 :

_25._tcp.mail.example.com. IN TLSA 3 0 1 Code language: CSS (css)

Lire la suite

In lycée with Mister B. : roadrunner photo

In lycée with Mister B. : roadrunner

Cette scène se passe à la fin d’un cours de seconde.

Alors qu’il ne reste que quelques secondes avant la sonnerie, une élève m’interpelle et m’annonce qu’elle m’a vu dans la rue.

Je souris, l’écoute, et obtiens ceci :

In lycée with Mister B. : roadrunner photo

Hilarité générale de la classe. Ils aiment bien se moquer gentiment de leurs professeurs. J’ai bien ri avec eux. Et, je l’avoue, je n’ai rien eu d’intelligent à redire… juste rire !

They just pwned me ! :)

Serveur dédié : mise en place du protocole DANE photo 2

Serveur dédié : mise en place du protocole DANE

Aujourd’hui, je vous montre comment mettre en place le protocole DANE sur votre serveur.

En pré-requis, votre domaine doit:

  1. être servi en HTTPS avec un certificat TLS valide,
  2. être signé par DNSSEC.

Cela prend environ 20 minutes à configurer, auxquelles s’ajouteront quelques heures afin que la résolution DNS avec les changements soit complète.

DANE : l’authentification TLS sans autorité de certification

Serveur dédié : mise en place du protocole DANE photo 2

DANE (DNS-based Authentication of Named Entities) est un protocole qui permet aux certificats X.509 – généralement utilisés pour TLS – d’être liés au DNS en s’appuyant sur DNSSEC.

L’IETF a défini DANE dans la RFC 6698 comme un moyen d’authentifier des clients TLS et des serveurs sans passer par une autorité de certification (AC).

Cette démarche s’enregistre dans une logique de sécurisation des accès clients-serveurs pour d’une part sécuriser les requêtes DNS effectuées depuis les postes clients au travers des protocoles/mécanismes DNSSEC et TLS, et d’autre part mieux sécuriser les accès chiffrés des clients vers le serveurs.

Le chiffrement TLS est actuellement basé sur des certificats qui sont délivrés par des Autorités de Certification (AC ou Certificate Authority, CA en anglais).

Or, ces dernières années ont vu un certain nombre d’AC qui ont souffert de sérieux problèmes d’intrusions et de failles de sécurité, ce qui a permis la délivrance de certificats pour des sites très connus à des personnes qui ne détenaient pas ces domaines.

Faire confiance à un large nombre d’Autorités de Certification peut être un problème, étant donné que n’importe laquelle d’entre elles, si elle est compromise, pourrait délivrer un certificat pour n’importe quel nom de domaine.

Le protocole DANE permet à l’administrateur d’un nom de domaine de certifier les clés utilisées dans les clients ou serveurs TLS de ce domaine en les insérant au niveau du DNS.

DANE a donc besoin que les enregistrements DNS soient signés avec DNSSEC pour que son modèle de sécurité fonctionne.

De surcroit, DANE permet à l’adminstrateur du domaine de spécifier quelle autorité de certification est autorisée à délivrer des certificats pour une ressource particulière, ce qui résoud le problème des autorités de certification qui sont capables de délivrer des certificats pour n’importe quel nom de domaine.

Serveur dédié : mise en place du protocole DANE photo 3

Les enregistrements TLSA

DANE utilise des enregistrements TLSA, qui incluent l’empreinte du certificats X.509 qui protège un nom de domaine.

Nous devons tout d’abord générer cet enregistrement TLSA en nous basant sur le certificat installé sur notre serveur. Ensuite, cet enregistrement TLSA sera ajouté à notre zone DNS.

Lire la suite

Happy Valley saison 1 photo

Happy Valley saison 1

Voici Happy Valley, une excellente mini-série anglaise diffusée sur BBC One.

À Nestling, dans la région des vallées du Yorkshire, le sergent de police Catherine Cawood, divorcée, vit avec sa soeur et son petit-fils, qu’elle élève. Catherine s’est secrètement promis de venger sa fille, qui s’est suicidée huit ans plus tôt après un viol dont elle ne s’était jamais remise.

Alors qu’elle semble finalement reprendre le dessus, elle apprend que Tommy Lee Royce, l’homme qu’elle juge responsable de ce suicide, sort de prison ayant purgé une peine pour d’autres faits.

Elle devient rapidement obsédée par l’idée de se confronter à lui, ignorant qu’il est impliqué dans une organisation criminelle visant à enlever une jeune femme afin d’en obtenir une rançon.

Lire la suite

Kurt Vile - Pretty Pimpin photo

Kurt Vile – Pretty Pimpin

Kurt Samuel Vile est un auteur-compositeur multi-instrumentaliste qui a fondé le groupe d’indie rock The War on Drugs, avec lequel il a enregistré un album avant de se consacrer à sa carrière solo.

Voici “Pretty Pimpin”, une chanson plutôt entêtante:

Kurt Vile, qui arbore fièrement un look des années 70 avec ses cheveux longs et son look old-school, est influencé par Pavement, Bruce Springsteen, Neil Young, Tom Petty, et John Fahey.

En studio et lors des concerts, Kurt Vile est accompagné de son groupe, the Violators, qui inclut Jesse Trbovich (basse, guitare, saxophone), Rob Laakso (guitare, basse) et Kyle Spence (batterie).

Le single “Pretty Pimpin” est à retrouver sur le sixième album studio de Kurt Vile, intitulé B’lieve I’m Goin Down… et sorti le 25 septembre 2015 chez Matador Records.

Amazon Prime Video

Chaudement recommandé !

PHP : script pour retirer les attributs des tags HTML photo

PHP : script pour supprimer certains attributs de tags HTML

J’ai eu besoin récemment de pouvoir contrôler les attributs des liens qui s’affichaient sur le blog et plus spécialement ceux qui sont fournis par des sites tiers (sponsors etc).

PHP : script pour retirer les attributs des tags HTML photo

Et bien figurez-vous que certains liens ne sont pas du tout valides : leurs liens ont des attributs obsolètes ou inadaptés avec comme des target="_blank".

Tout cela brise la navigation en fenêtres/onglets supplémentaires, et supprime la fonctionnalité du bouton back pour revenir à la page précédente.

Du coup, j’ai retroussé un peu mes manches pour remédier à ce problème.

Cela m’a donné ce script, qui me permet de dresser la liste des attributs à filtrer dans un code source donné.

Sky Cleanup Attributes

Voici la fonction principale, sobrement appelée Sky Cleanup Attributes : elle permet de filtrer des attributs définis dans une liste. Il suffit de passer le code dans une variable et la fonction filtre et retourne le code final, sans les attributs gênants.

Lire la suite

Arcade Fire - My Body is a Cage photo

Arcade Fire – My Body is a Cage

Voici un clip vidéo intitulé “A Rain of Sadness” et réalisé par Anthony Taieb qui met en scène la musique “My Body is a Cage” du groupe canadien Arcade Fire :

Ce clip est tout simplement magnifique et colle très bien à l’ambiance de la chanson et à son univers à la fois écorché et grandiloquent.

On peut y reconnaitre quelques extraits de films tels que “La fille sur le pont” de Patrice Leconte, “Blade Runner” de Ridley Scott, “Matrix Revolution” des frères Wachowski, et “Singin’ in the Rain” de Stanley Donen et Gene Kelly.

On peut également retrouver quelques images qui proviennent du clip vidéo pour la chanson “Stranger in Moscow” de Mickael Jackson.