Changement de design : SkyMinds 2016 photo 1

Changement de design : SkyMinds 2016

Ce week-end, pour fêter la nouvelle année et les 17 ans du site (et oui, déjà !), je me suis amusé à changer radicalement le thème graphique du site.

Nouvelle année, nouveau thème

Cela fait des années que je n’ai pas changé de thème : apparemment, mon thème précédent remonte à 2010, soit 6 ans. A l’échelle d’Internet, cela remonte quasiment à la préhistoire !

Il aura bien évolué : de XHTML transitional à strict, puis HTML5. D’abord basique puis responsive, avec microdata… on peut dire que je l’ai bien usé, sous toutes les coutures mais que j’ai envie maintenant de quelque chose d’autre.

La charte graphique convenait à une certaine époque mais il faut savoir faire table rase et se remettre en question pour essayer des choses différentes.

A titre de comparaison, voici à quoi ressemblait le site le 1er janvier au petit matin:

Changement de design : SkyMinds 2016 photo

et voici maintenant le nouveau thème, sobrement intitulé “SkyMinds 2016” :

Changement de design : SkyMinds 2016 photo 1

Les nouveautés

Pas mal de nouveautés sont apparues. Tout d’abord, le site est désormais entièrement responsive, ce qui n’était pas tout à fait le cas avant. J’avais – bonant malant – utilisé des responsive queries mais on ne peut pas dire que l’affichage était optimal sur toutes les tailles d’écran. Là, c’est bien mieux géré.

Ensuite, le thème utilise beaucoup moins d’images que le précédent : adieu l’image de fond pour le header, le dégradé en PNG de 1600 pixels de hauteur et les dégradés CSS pour les colonnes de contenus et le footer.

Je n’ai gardé que le logo, le reste n’est composé que de couleurs unies. Mine de rien, cela influe énormément sur le rendu des pages.

En ce qui concerne la CSS, je n’ai gardé que quelques styles que j’affectionne mais le principal a changé.

Ce changement graphique est pour moi l’occasion de donner un petit coup de peinture et surtout de faire le ménage dans ma feuille de style et les fichiers du thème de WordPress.

J’ai également désactivé certains plugins comme le plugin qui créait un menu responsive – maintenant géré nativement par le thème, ainsi que d’autres qui s’ajoutaient à la feuille de style principale.

Le rendu est donc plus moderne et devrait se charger plus rapidement, faisant appel à moins de ressources.

What’s next?

Pour l’instant, ce nouveau thème est clair et me convient plutôt bien. J’y apporte quelques petites touches çà et là afin d’harmoniser le tout mais je trouve que le résultat n’est pas trop mal.

Et vous, vos impressions?

Bash : personnaliser les couleurs de l'invite de commande (prompt) du terminal photo

Bash : personnaliser les couleurs de l’invite de commande (prompt) du terminal

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

Lorsque l’on jongle avec différents serveurs et plusieurs fenêtres de terminal, il n’est pas toujours évident d’identifier immédiatement sur quelle machine on se trouve.

Pour remédier à ce problème, je vous propose de changer les couleurs de l’invite de commande (prompt) de votre terminal sous linux.

Editer le fichier .bashrc

Nous allons éditer le fichier .bashrc, qui permet d’éditer les préférences utilisateurs pour tout ce qui concerne bash:

nano .bashrcCode language: CSS (css)

Ajout de styles

Et voici quelques styles sympas à ajouter pour tuner votre prompt.

Style Lemon Lime

Ajoutez ceci à votre fichier .bashrc:

export PS1="\[$(tput bold)\]\[$(tput setaf 6)\]\t \[$(tput setaf 2)\][\[$(tput setaf 3)\]\u\[$(tput setaf 1)\]@\[$(tput setaf 3)\]\H \[$(tput setaf 6)\]\w\[$(tput setaf 2)\]]\[$(tput setaf 4)\]\\$ \[$(tput sgr0)\]"Code language: JavaScript (javascript)
Bash : personnaliser les couleurs de l'invite de commande (prompt) du terminal photo

C’est mon style préféré, très cocktail d’été. Voilà ce que cela donne:

Style Matrix

Vous pouvez aussi opter pour le style Matrix, tout vert:

export PS1="\[$(tput bold)\]\[$(tput setaf 2)\][\u@\h \W]\\$ \[$(tput sgr0)\]"Code language: JavaScript (javascript)

Style Rainbow

Ou encore pour un arc-en-ciel de couleurs :

export PS1="\[$(tput bold)\]\[$(tput setaf 1)\][\[$(tput setaf 3)\]\u\[$(tput setaf 2)\]@\[$(tput setaf 4)\]\h \[$(tput setaf 5)\]\W\[$(tput setaf 1)\]]\[$(tput setaf 7)\]\\$ \[$(tput sgr0)\]"Code language: JavaScript (javascript)

Personnalisation du prompt

Si vous souhaitez ajoutez des composants à votre prompt, voici quelques mots-clé utiles:

  • \u le nom de session utilisateur
  • \h le nom d’hôte jusqu’au premier ‘.’
  • \H le nom d’hôte complet
  • \n saut de ligne
  • \$ affiche le signe $ pour un simple utilisateur ou # pour l’utilisateur root
  • \\ un backslash “\”

Et voilà, un peu de couleur dans notre terminal !

Pearl Jam - Indifference photo 1

Pearl Jam – Indifference (waves)

Voici Indifference par Pearl Jam:

Intro: Em - Dsus4 - D (4x)

        Em                       D       Em             D 
I will light the match this mornin', so I won't be alone
   Em                  D         Em                 D
Watch as she lies silent, for soon light will be gone
   Em                       D          Em                 D
Oh, I will stand arms outstretched, pretend I'm free to roam
   Em                D            Em          D
Oh, I will make my way, through, one more day...alone...
  G          D                    Em - Em7
    How much difference does it make
  G          D                    Em - Em7 
    How much difference does it make, yeah...
    
     Em - Dsus4 - D

   Em               D         Em           D
I will hold the candle till it burns up my arm
   Em               D         Em                  D   
Oh, I'll keep takin' punches until their will grows tired
   Em               D         Em                 D
Oh, I will stare the sun down until my eyes go blind
    Em                 D           Em                D
Hey, I won't change direction, and I won't change my mind
   G            D               Em - Em7
     How much difference does it make
   G            D               Em - Em7   
Mmm, how much difference does it make..
     how much difference...

  Em - Dsus4 - D  
 
                Em       D          Em     D
I'll swallow poison, until I grow immune
         Em          D              Em           D        
I will scream my lungs out till it fills this roomCode language: PHP (php)

Très belle chanson.

Si de Rudyard Kipling, poème.

“If” – by Rudyard Kipling

If you can keep your head when all about you
Are losing theirs and blaming it on you,
If you can trust yourself when all men doubt you,
But make allowance for their doubting too;
If you can wait and not be tired by waiting,
Or being lied about, don’t deal in lies,
Or being hated, don’t give way to hating,
And yet don’t look too good, nor talk too wise:

If you can dream – and not make dreams your master;
If you can think – and not make thoughts your aim;
If you can meet with Triumph and Disaster
And treat those two impostors just the same;
If you can bear to hear the truth you’ve spoken
Twisted by knaves to make a trap for fools,
Or watch the things you gave your life to, broken,
And stoop and build ‘em up with worn-out tools:

If you can make one heap of all your winnings
And risk it on one turn of pitch-and-toss,
And lose, and start again at your beginnings
And never breathe a word about your loss;
If you can force your heart and nerve and sinew
To serve your turn long after they are gone,
And so hold on when there is nothing in you
Except the Will which says to them: ‘Hold on!’

If you can talk with crowds and keep your virtue,
‘ Or walk with Kings – nor lose the common touch,
if neither foes nor loving friends can hurt you,
If all men count with you, but none too much;
If you can fill the unforgiving minute
With sixty seconds’ worth of distance run,
Yours is the Earth and everything that’s in it,
And – which is more – you’ll be a Man, my son!

— Rudyard Kipling, “If”, 1895

Serveur dédié : mettre à jour Apache et configurer le mod_h2 pour HTTP/2 photo

Serveur dédié : mettre à jour Apache pour HTTP/2

C’est sur toutes les lèvres : 2015 aura vu l’arrivée de PHP7 et de la révision du protocole HTTP qui passe à la version 2, en remplacement du mod_spdy de Google.

Tout cela promet pas mal de gains de performance donc il est très tentant de le vérifier par nous-mêmes.

HTTP/2 : une évolution du protocole HTTP

Avec HTTP/1.1, la vie des développeurs n’était pas simple. L’optimisation d’un site revenait à plusieurs techniques qui tournaient toutes autour de l’idée de minimiser le nombre de requêtes HTTP vers un serveur d’origine.

Un navigateur ne peut ouvrir qu’un nombre limité de connexions TCP simultanées vers une origine et le chargement des ces ressources via chacune de ces connexions est un processus en série : la réponse de chaque ressource doit être retournée avant que la réponse de la ressource suivante ne soit envoyée. C’est ce qu’on appelle le head-of-line blocking.

HTTP/2 promet donc des gains de performance d’environ 30%, sans avoir à gérer ni minification ni concaténation dans le processus de création et déploiement des pages.

Plus besoin (normalement!) d’optimiser les connexions TCP ou les requêtes HTTP avec la création de sprites, le chargement des ressources directement dans le corps des pages, la concaténation ou la création de sous-domaines pour charger les ressources en parallèle (domain sharding) pour contourner les limitations d’HTTP 1.1.

Lire la suite

Histoire des Arts with Mister B. : Louis Aragon photo

Histoire des Arts with Mister B. : Louis Aragon

Cette planche commence à dater un peu mais je me dis que si je ne la sors pas maintenant, elle restera dans un carton pendant très longtemps, avec toutes les chances de ne jamais voir le jour.

La scène se passe lors de la journée Histoire des Arts, qui fait partie intégrante des épreuves du Brevet des Collèges.

Emma nous parle alors de Louis Aragon:

Histoire des Arts with Mister B. : Louis Aragon photo

Louis Aragon est un poète, romancier et journaliste français, né le 3 octobre 1897 à Paris et mort le 24 décembre 1982. Il est également connu pour son engagement et son soutien au Parti communiste français de 1930 à sa mort.

Avec André Breton, Paul Éluard et Philippe Soupault, il fut l’un des fers de lance du dadaïsme parisien et du surréalisme.

Lire la suite

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