Category

Web/Tech

Category

Tous les tutoriels et articles de barbus orientés technique.

Lorsque l’on possède un NAS, on apprécie de pouvoir bénéficier de toutes ses fonctionnalités. Or, outre les fonctions de sauvegardes, de téléchargement et téléversement des données, il est aussi très agréable de pouvoir lire de la musique ou des vidéos (stockées sur le NAS) directement sur une télévision.

Ce tutoriel s’adresse à celles et ceux qui possèdent une Freebox et un NAS Synology. Nous allons voir comment configurer le NAS afin que les sous-titres soient détectés et lus par notre Freebox Revolution, automatiquement au lancement de notre vidéo.

Synology : installation du Media Server

Sur le Synology, il faut installer le paquet Media Server. Pour cela, il suffit de se rendre dans Main Menu > Package Center >Multimedia > Media Server > Install.

Vous devriez avoir quelque chose comme ceci:

Freebox : lire une vidéo avec un fichier de sous-titres en DLNA depuis un NAS Synology photo

Synology : configuration du DLNA

Ensuite, il faut configurer le DLNA. Rendez-vous dans Main Menu > Media Server > DMA Compatibility où plusieurs réglages sont à effectuer:

Freebox : lire une vidéo avec un fichier de sous-titres en DLNA depuis un NAS Synology photo 1

On commence par cocher l’option « Enable customized MIME types« . Voici la liste dont je dispose :

avi=video/x-ms-video,wav=audio/x-wav,m4v=video/mp4,mp4=video/mp4,mkv=video/x-msvideo,srt=plain/text,sub=plain/text

Ensuite, il faut cocher l’option « restrict access to Media Server for newly detected UPnP/DLNA devices ».

Pour mes 35 ans, j’ai reçu un super cadeau d’anniversaire : un nouvel ordinateur portable Asus N551VW-FW119T.

Asus N551VW

Voici la bête en images :

Mon nouveau laptop : Asus N551V photo

et le clavier :

Mon nouveau laptop : Asus N551V photo 1

Au programme : un écran 15,6″ mat et anti-reflets, un processeur i7-6700HQ (2,6 GHz), 8 Go de RAM en DDR4, une carte graphique GTX 960M, un disque SSD de 128 Go + 1 To en SATA, coque en aluminium brossé…

Premières impressions

On ne va pas se le cacher, il est très rapide! Démarrage éclair, aucun lag dans le lancement des applications, c’est vraiment du bonheur. Le clavier est vraiment bien, avec pavé numérique et rétro-éclairage.

Parmi les inconvénients, je noterai le poids/encombrement puisque avec ses 2.7 kg, on ne va pas le trimballer tous les jours et l’autonomie – qui tourne autour des 3h30-4h. Il est difficile d’allier performance et autonomie à l’heure actuelle.

Mon NAS Synology vient de mettre à jour son firmware DSM et je constate en lançant ma sauvegarde rsync que la connexion rsync vers le NAS ne se fait plus : après saisie du mot de passe, on obtient une erreur « permission denied ».

NAS Synology : résoudre l'erreur rsync "permission denied" lors de la connexion au NAS photo

Voici comment remédier à ce petit désagrément en deux minutes montre en main.

Problème : connexion SSH refusée

Lors de la connexion initiale, démarrée par :

rsync --ignore-existing --progress -vr --rsh='ssh -p22222' /home/backup/* root@example.com:/volume1/video

on obtient le message d’erreur suivant, après saisie du mot de passe:

Permission denied, please try again.
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(226) [sender=3.1.1]

Après vérification que les identifiants (user/password) sont bien corrects, il s’avère que la solution réside dans l’utilisation de l’argument --rsync-path afin d’expliciter le chemin de l’exécutable rsync présent sur le NAS.

Solution : ajouter le chemin du binaire rsync du NAS

La solution est toute simple, il suffit de renseigner le chemin du binaire rsync qui se trouve sur le NAS Synology comme argument de notre connexion.

Sous DSM5, le chemin de rsync est /usr/syno/bin/rsync.
A partir de DSM6, le chemin de rsync est /usr/bin/rsync, qui est le chemin habituel sous linux.

Nous ajoutons donc l’argument --rsync-path à notre connexion initiale, ce qui nous donne :

rsync --ignore-existing --progress -vr --rsh='ssh -p22222' --rsync-path=/usr/bin/rsync /home/backup/* root@example.com:/volume1/video

[box]Note: n’oubliez pas de changer le chemin suivant que vous utilisez DSM5 ou DSM6.[/box]

Et hop, la sauvegarde rsync est de nouveau fonctionnelle.

Aujourd’hui, nous installons tous les outils nécessaires pour devélopper des applications Android sous Linux.

Ce tutoriel s’adresse aux utilisateurs Linux mais est très facilement transférable d’un système à l’autre.

Ma machine principale tourne sous Ubuntu mais le tuto fonctionne aussi pour Linux Mint ou Debian.

Linux : installer Android Studio pour développer des applications Android photo 1

Pour mener à bien l’installation, il nous faut donc : une version récente de Java et Android Studio pour coder nos applications pour mobiles, tablettes, télévision, Android wear… vous allez vraiment pouvoir vous amuser !

Installation de Java

On installe la version Oracle de Java pour maximiser les chances que tout tourne bien ensuite, avec un PPA :

sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update 
sudo apt-get install oracle-java8-installer
sudo apt-get install oracle-java8-set-default

On vérifie notre version de Java:

java -version

ce qui nous retourne :

java version "1.8.0_66"
Java(TM) SE Runtime Environment (build 1.8.0_66-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.66-b17, mixed mode)

Java 8 est donc bien installé.

Installation d’Android Studio

On installe Android Studio avec un PPA également:

sudo add-apt-repository ppa:paolorotolo/android-studio
sudo apt-get update
sudo apt-get install android-studio

et on lance l’assistant de configuration qui va récupérer les packages et les mises à jour :

/opt/android-studio/bin/studio.sh

L’installation prend pas mal de temps, il y a environ 600 Mo à télécharger et à compiler ensuite.

La sauvegarde des données

Un des problèmes majeurs dans la gestion des données informatiques est la sauvegarde des données.

Idéalement, il faut pouvoir être en mesure de disposer de plusieurs copies de sauvegarde de nos données, intégres et utilisables, disponibles dans plusieurs lieux géographiquement éloignés afin de prévenir les risques.

Il est très utile d’avoir un script de sauvegarde comme backup-manager sur le serveur qui va automatiquement envoyer les fichiers de sauvegarde sur un espace de stockage distant.

Sur ce serveur par exemple, les sauvegardes sont envoyées sur le FTP de backup mis à disposition par OVH.

Connexion à un serveur distant en SSH, sans mot de passe

Se connecter depuis un serveur vers un NAS Synology avec des clés SSH, sans mot de passe photo 1

Mais il est également possible d’en envoyer une copie chez vous, directement sur votre NAS. Pour plus de sécurité (le FTP n’est pas un protocole sécurisé) il peut être très intéressant de créer un set de clés SSH pour que le script de sauvegarde (ou alors rsync) se connecte directement à votre NAS/serveur de sauvegarde en SSH.

Voyons donc comment nous pouvons créer un jeu de clés SSH sur notre serveur linux – ou n’importe quelle autre machine Unix, comme votre PC – vers un NAS Synology.

Cela nous permettra de nous identifier sur le NAS depuis le serveur, sans avoir à rentrer de mot de passe ou à le mettre en clair dans un script. C’est aussi un grain de temps de se logguer en SSH au NAS sans mot de passe !

Se connecter depuis un serveur vers un NAS Synology avec des clés SSH, sans mot de passe photo

[box type= »info »] Note : IPKG n’est plus maintenu donc je vous conseille de suivre le nouveau tutoriel pour votre NAS Synology : installer Entware en remplacement d’IPKG pour des applications à jour.[/box] Installer IPKG sur un NAS Synology photo

De temps en temps, on a besoin d’intervenir sur le NAS et l’interface web d’administration du Synology n’est ni la plus intuitive, ni la plus rapide. En tout cas, sur un D212+, cela rame toujours un peu.

Aujourd’hui, je vous montre comment ouvrir une session SSH en tant que root sur votre Synology afin d’y installer des applications non-officielles mais toutes aussi valables comme nano ou screen. Ce tuto prend à peine 10 minutes à réaliser.

Cela nous permettra à terme de pouvoir lancer différentes commandes et d’exploiter à fond les possibilités du NAS.

Activer SSH sur le Synology

Première étape : on active le service SSH sur le Synology :

  1. connectez-vous au webadmin de votre Synology,
  2. rendez-vous dans Control Panel > Applications > Terminal & SNMP,
  3. dans l’onglet Terminal, cochez l’option Enable SSH service,
  4. changez le port par défaut pour quelque chose de plus exotique : 44222 par exemple,
  5. sauvegardez les options.

Retenez bien le numéro du port que vous avez défini. Il sera maintes fois utilisé par la suite.

Ouvrir une session SSH sur le NAS avec l’utilisateur root

[box type= »warning »]Cette étape est cruciale et permet d’éviter de longues heures de recherche sur Internet pour comprendre pourquoi les commandes des étapes suivantes ne fonctionnent pas…[/box]

Vous devez *absolument* ouvrir une session SSH sur le NAS en tant qu’utilisateur root.

Le mot de passe de l’utilisateur root est le même que celui de l’utilisateur admin mais une session en tant qu’admin ne vous donnera pas les droits nécessaires pour installer quoi que ce soit.

On se connecte avec l’utilisateur admin en SSH :

ssh admin@DiskStation -p44222

et comme nous devons être root, on le devient :

sudo -i

Résultat:

BusyBox v1.16.1 (2015-10-28 13:19:22 CST) built-in shell (ash)
Enter 'help' for a list of built-in commands.

DiskStation>

Installer IPKG sur le Synology

La deuxième étape est d’installer un gestionnaire de paquet sur le NAS, pour ajouter des paquets supplémentaires qui ne sont pas présents sur les dépôts officiels de Synology. C’est un peu comme un apt-get ou aptitude.

Vous devez connaître le modèle du processeur exact de votre Synology : pour cela, rendez-vous sur la page What kind of CPU does my NAs have ?

Cette page n’existe plus au moment où j’écris ces lignes (Synology semble avoir retiré son wiki) donc voici une capture d’écran récapitulative:

Configurer une sauvegarde du serveur vers un NAS Synology avec des clés SSH photo

Sur mon Synology 212+, le processeur est donc un Marvell Kirkwood mv6282 2.0Ghz ARM (Marvell ARMADA 300).

Un autre moyen de connaître le modèle du processeur est de lancer un simple:

cat /proc/cpuinfo | more

ce qui nous retourne:

Processor        : Feroceon 88FR131 rev 1 (v5l)
BogoMIPS        : 1985.74
Features        : swp half thumb fastmult edsp 
CPU implementer        : 0x56
CPU architecture: 5TE
CPU variant        : 0x2
CPU part        : 0x131
CPU revision        : 1

Apache : résoudre l'erreur "421 Misdirected Request" photo

Après la mise à jour d’Apache et HTTP/2, il est apparu un nouveau type d’erreur : l’erreur 421 Misdirected Request.

Erreur 421 : erreur de configuration mod_ssl entre Virtual Hosts

Ce type d’erreur arrive lorsque:

  1. HTTP/2 est activé,
  2. les paramètres SSL de plusieurs Virtual Hosts diffèrent du serveur responsable du handshake SSL/TLS.

En analysant le changelog d’Apache 2.4.18, je me suis rendu compte que si les paramètres SSL et notamment la liste des ciphers utilisables ne sont pas équivalentes entre les différents Virtual Hosts, alors l’erreur 421 est déclenchée.

Solution : harmoniser la configuration mod_ssl

La solution est donc toute simple, il suffit de comparer la configuration mod_ssl des Virtual Hosts et l’harmoniser de manière à lisser les différences. Je vous recommande un outil comme Meld pour comparer les différences entre vos fichiers.

Meld est disponible dans les dépôts de base, vous pouvez l’installer sur votre machine de dév avec un simple:

apt-get install meld

Le domain sharding ou servir les ressources statiques sur un sous-domaine

Sur le site, cela est dû à la mise en place du domain sharding que j’avais mis en place il y a quelques années pour charger plusieurs fichiers ressources en parallèle et accélérer les temps de chargement.

HTTP/2 promet beaucoup de choses et apparemment le domain sharding serait maintenant devenu inutile. J’attends un peu de voir comment vont évoluer les choses avant de changer toute ma configuration et éditer tous mes liens.

Bash : réparer les tables MySQL en cas de crash photoLorsque 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 .bashrc

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)\]"

C’est mon style préféré, très cocktail d’été. Voilà ce que cela donne:
Bash : personnaliser les couleurs de l'invite de commande (prompt) du terminal photo

Style Matrix

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

export PS1="\[$(tput bold)\]\[$(tput setaf 2)\][\u@\h \W]\\$ \[$(tput sgr0)\]"

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)\]"

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 !

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.

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

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 une gain de perfomance 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 concatenation ou la création de sous-domaines pour charger les ressources en parallèle (domain sharding) pour contourner les limitations d’HTTP 1.1.

Optimiser pour HTTP/2

Avec HTTP/2, il faut maintenant concentrer les efforts d’optimisation sur les scénarios de cache du site. La nouvelle règle est d’utiliser de petites ressources, granulaires, qui peuvent être mises en cache indépendamment et transferrées en parallèle.

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

Ce changement est possible grâce aux nouvelles fonctions de multiplexing et de compression des entêtes d’HTTP/2.

Le multiplexing permet à plusieurs requêtes de partager une connexion TCP unique, ce qui permet le chargement de plusieurs ressources en parallèle, sans le délai dû à la création de connexions multiples. Cela élimine le problème d’head-of-line blocking que l’on rencontre avec HTTP/1.1.

La compression des entêtes réduit encore davantage la pénalité lors du chargement de plusieurs ressources (requêtes HTTP multiples) puisque l’overhead de chaque requête est plus petit que leur équivalent non-compressé en HTTP/1.1.

HTTP/2 offre aussi la hiérarchisation des flux (stream prioritization) qui permet aux navigateurs de spécifier dans quel ordre ils souhaitent recevoir les ressources, ainsi que le server push qui laisse le serveur envoyer des ressources supplémentaires par anticipation, alors que le navigateur ne sait pas encore qu’il en aura besoin.

Cela implique donc pas mal de changements dans les manières et l’état d’esprit d’optimisation par rapport à HTTP/1.1.

Configuration initiale du serveur

Mon serveur dédié tourne sur la dernière version stable de Debian, c’est-à-dire sous Jessie à l’heure où j’écris ces lignes, qui ne dispose que d’Apache 2.4.10. Or le module http2 ne fonctionne qu’à partir d’Apache 2.4.17.

Il va donc falloir mettre Apache à jour ! Nous allons temporairement basculer sur les dépôts sid le temps de mettre à jour Apache et OpenSSL.

[box type= »warning »]Note : l’opération suivante n’est pas sans danger. Nous allons installer des paquets sid (still in development) donc instables en lieu et place de nos paquets d’origine, obsolètes mais testés.[/box]

Sommaire de la série Monter un serveur dédié de A à Z

  1. Serveur dédié : installation d’Apache, PHP, MySQL et Webmin
  2. Serveur dédié : créer la base de données MySQL et importer WordPress
  3. Serveur dédié : créer et activer un Virtual Host sous Apache
  4. Serveur dédié : changer les DNS du nom de domaine et le faire pointer vers le serveur
  5. Serveur dédié : sécurisation des services avec iptables et fail2ban
  6. Serveur dédié : sécurisation de la couche TCP/IP
  7. Serveur dédié : création d’un serveur mail Postfix (sécurisé avec Saslauthd et certificat SSL) et Courier (accès POP et IMAP) utilisant une base MySQL d’utilisateurs/domaines virtuels
  8. Serveur dédié : sécuriser Apache 2 avec ModSecurity
  9. Serveur dédié : CHMOD récursif sur des fichiers ou répertoires en ligne de commande
  10. Serveur dédié : installer APC comme système de cache et configurer Varnish comme reverse-proxy pour Apache pour améliorer les performances
  11. Serveur dédié : afficher la véritable IP derrière un reverse-proxy comme Varnish
  12. Serveur dédié : intégrer SSH à WordPress pour mettre à jour le core, les plugins et les thèmes
  13. Serveur dédié : installer la dernière version d’APC par SVN
  14. Serveur dédié : analyse des performances du serveur
  15. Serveur dédié : mettre à jour le noyau Debian de la Kimsufi
  16. Serveur dédié : sauvegarde automatique des fichiers avec Backup Manager sur le serveur de sauvegarde OVH
  17. Serveur dédié : configurer la limite mémoire pour PHP et Suhosin
  18. Bash : supprimer tous les fichiers et sous-répertoires d’un répertoire
  19. Serveur dédié : impossible de se connecter à un port distant
  20. Rsync: rapatrier les fichiers du serveur à la maison
  21. Bash : réparer les tables MySQL en cas de crash
  22. Serveur dédié : création d’une seedbox avec Transmission
  23. Serveur dédié : des paquets LAMP à jour sous Debian
  24. Serveur dédié : mise à jour vers Debian 7 Wheezy
  25. Serveur dédié : activer X11 forwarding pour SSH
  26. Serveur dédié : optimiser toutes les images JPG et PNG avec OptiPNG et JpegOptim
  27. Postfix : résoudre l’erreur « fatal: www-data(33): message file too big »
  28. Serveur dédié : mise en place de l’IPv6
  29. WordPress : accorder les bonnes permissions aux fichiers et dossiers avec chown et chmod
  30. WordPress : héberger les images sur un sous-domaine
  31. Serveur dédié : ajouter l’authentification SPF, Sender-ID et DKIM à Postfix et Bind9 avec opendkim
  32. Apache : lorsque le domaine seul (sans WWW) renvoie une erreur 403
  33. Serveur dédié : sécuriser Apache avec HTTPS (HTTP avec la couche TLS/SSL) en Perfect Forward Secrecy
  34. Serveur dédié : passer WordPress en HTTPS (TLS/SSL)
  35. Serveur dédié : configurer Webmin en TLS avec un certificat SSL
  36. Serveur dédié : configurer Transmission pour accéder au WebUI via TLS-SSL
  37. Serveur dédié : installer et configurer Varnish 4
  38. Serveur dédié : passage au mod FastCGI et PHP-FPM avec Apache MPM Worker
  39. J’ai planté le serveur… ou comment récupérer un serveur Kimsufi après un plantage de kernel avec le mode rescue OVH
  40. Serveur dédié : configurer Postfix et Courier pour utiliser TLS-SSL en Perfect Forward Secrecy
  41. Serveur dédié : retirer Varnish, devenu inutile avec HTTPS
  42. Serveur dédié : ajout de mod_spdy pour accélérer la connexion TLS-SSL sous Apache
  43. Serveur dédié : installer la dernière version d’OpenSSL sous Debian
  44. Serveur dédié : activer l’IP canonique du serveur sous Apache
  45. Serveur dédié : mise à jour vers PHP 5.6
  46. MySQL : convertir les tables MyISAM au format InnoDB
  47. Serveur dédié : optimiser toutes les images GIF avec GIFsicle
  48. Serveur dédié : migration de MySQL vers MariaDB
  49. BASH : lister, bloquer et débloquer des adresses IP avec iptables
  50. Serveur dédié : produire une meilleure réserve d’entropie avec haveged
  51. Serveur dédié : mettre en place DNSSEC pour sécuriser les DNS du domaine
  52. Serveur dédié : mise en place du protocole DANE
  53. 8 règles d’or pour bien déployer DNSSEC et DANE
  54. Serveur dédié : installer PHP7 FPM avec FastCGI sous Debian
  55. Serveur dédié : réduire les connexions TIME_WAIT des sockets et optimiser TCP
  56. Fail2Ban: protéger Postfix contre les attaques DoS de types AUTH, UNKNOWN et EHLO
  57. Serveur dédié : mettre à jour Apache et configurer le mod_http2 pour HTTP/2
  58. Serveur dédié : ajouter le domaine à la liste HSTS preload
  59. Serveur dédié : ajouter l’authentification DMARC à Postfix et BIND
  60. Serveur dédié : à la recherche de l’inode perdue ou comment résoudre le problème « no space left on device »
  61. Serveur dédié : installer NginX avec support HTTP2 et certificat SSL, PHP, MariaDB sous Debian

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.log

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

Sommaire de la série Monter un serveur dédié de A à Z

  1. Serveur dédié : installation d’Apache, PHP, MySQL et Webmin
  2. Serveur dédié : créer la base de données MySQL et importer WordPress
  3. Serveur dédié : créer et activer un Virtual Host sous Apache
  4. Serveur dédié : changer les DNS du nom de domaine et le faire pointer vers le serveur
  5. Serveur dédié : sécurisation des services avec iptables et fail2ban
  6. Serveur dédié : sécurisation de la couche TCP/IP
  7. Serveur dédié : création d’un serveur mail Postfix (sécurisé avec Saslauthd et certificat SSL) et Courier (accès POP et IMAP) utilisant une base MySQL d’utilisateurs/domaines virtuels
  8. Serveur dédié : sécuriser Apache 2 avec ModSecurity
  9. Serveur dédié : CHMOD récursif sur des fichiers ou répertoires en ligne de commande
  10. Serveur dédié : installer APC comme système de cache et configurer Varnish comme reverse-proxy pour Apache pour améliorer les performances
  11. Serveur dédié : afficher la véritable IP derrière un reverse-proxy comme Varnish
  12. Serveur dédié : intégrer SSH à WordPress pour mettre à jour le core, les plugins et les thèmes
  13. Serveur dédié : installer la dernière version d’APC par SVN
  14. Serveur dédié : analyse des performances du serveur
  15. Serveur dédié : mettre à jour le noyau Debian de la Kimsufi
  16. Serveur dédié : sauvegarde automatique des fichiers avec Backup Manager sur le serveur de sauvegarde OVH
  17. Serveur dédié : configurer la limite mémoire pour PHP et Suhosin
  18. Bash : supprimer tous les fichiers et sous-répertoires d’un répertoire
  19. Serveur dédié : impossible de se connecter à un port distant
  20. Rsync: rapatrier les fichiers du serveur à la maison
  21. Bash : réparer les tables MySQL en cas de crash
  22. Serveur dédié : création d’une seedbox avec Transmission
  23. Serveur dédié : des paquets LAMP à jour sous Debian
  24. Serveur dédié : mise à jour vers Debian 7 Wheezy
  25. Serveur dédié : activer X11 forwarding pour SSH
  26. Serveur dédié : optimiser toutes les images JPG et PNG avec OptiPNG et JpegOptim
  27. Postfix : résoudre l’erreur « fatal: www-data(33): message file too big »
  28. Serveur dédié : mise en place de l’IPv6
  29. WordPress : accorder les bonnes permissions aux fichiers et dossiers avec chown et chmod
  30. WordPress : héberger les images sur un sous-domaine
  31. Serveur dédié : ajouter l’authentification SPF, Sender-ID et DKIM à Postfix et Bind9 avec opendkim
  32. Apache : lorsque le domaine seul (sans WWW) renvoie une erreur 403
  33. Serveur dédié : sécuriser Apache avec HTTPS (HTTP avec la couche TLS/SSL) en Perfect Forward Secrecy
  34. Serveur dédié : passer WordPress en HTTPS (TLS/SSL)
  35. Serveur dédié : configurer Webmin en TLS avec un certificat SSL
  36. Serveur dédié : configurer Transmission pour accéder au WebUI via TLS-SSL
  37. Serveur dédié : installer et configurer Varnish 4
  38. Serveur dédié : passage au mod FastCGI et PHP-FPM avec Apache MPM Worker
  39. J’ai planté le serveur… ou comment récupérer un serveur Kimsufi après un plantage de kernel avec le mode rescue OVH
  40. Serveur dédié : configurer Postfix et Courier pour utiliser TLS-SSL en Perfect Forward Secrecy
  41. Serveur dédié : retirer Varnish, devenu inutile avec HTTPS
  42. Serveur dédié : ajout de mod_spdy pour accélérer la connexion TLS-SSL sous Apache
  43. Serveur dédié : installer la dernière version d’OpenSSL sous Debian
  44. Serveur dédié : activer l’IP canonique du serveur sous Apache
  45. Serveur dédié : mise à jour vers PHP 5.6
  46. MySQL : convertir les tables MyISAM au format InnoDB
  47. Serveur dédié : optimiser toutes les images GIF avec GIFsicle
  48. Serveur dédié : migration de MySQL vers MariaDB
  49. BASH : lister, bloquer et débloquer des adresses IP avec iptables
  50. Serveur dédié : produire une meilleure réserve d’entropie avec haveged
  51. Serveur dédié : mettre en place DNSSEC pour sécuriser les DNS du domaine
  52. Serveur dédié : mise en place du protocole DANE
  53. 8 règles d’or pour bien déployer DNSSEC et DANE
  54. Serveur dédié : installer PHP7 FPM avec FastCGI sous Debian
  55. Serveur dédié : réduire les connexions TIME_WAIT des sockets et optimiser TCP
  56. Fail2Ban: protéger Postfix contre les attaques DoS de types AUTH, UNKNOWN et EHLO
  57. Serveur dédié : mettre à jour Apache et configurer le mod_http2 pour HTTP/2
  58. Serveur dédié : ajouter le domaine à la liste HSTS preload
  59. Serveur dédié : ajouter l’authentification DMARC à Postfix et BIND
  60. Serveur dédié : à la recherche de l’inode perdue ou comment résoudre le problème « no space left on device »
  61. Serveur dédié : installer NginX avec support HTTP2 et certificat SSL, PHP, MariaDB sous Debian

Serveur dédié : optimiser les connexions TIME_WAIT des sockets TCP photoAujourd’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 -n

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_reuse

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

Sommaire de la série Monter un serveur dédié de A à Z

  1. Serveur dédié : installation d’Apache, PHP, MySQL et Webmin
  2. Serveur dédié : créer la base de données MySQL et importer WordPress
  3. Serveur dédié : créer et activer un Virtual Host sous Apache
  4. Serveur dédié : changer les DNS du nom de domaine et le faire pointer vers le serveur
  5. Serveur dédié : sécurisation des services avec iptables et fail2ban
  6. Serveur dédié : sécurisation de la couche TCP/IP
  7. Serveur dédié : création d’un serveur mail Postfix (sécurisé avec Saslauthd et certificat SSL) et Courier (accès POP et IMAP) utilisant une base MySQL d’utilisateurs/domaines virtuels
  8. Serveur dédié : sécuriser Apache 2 avec ModSecurity
  9. Serveur dédié : CHMOD récursif sur des fichiers ou répertoires en ligne de commande
  10. Serveur dédié : installer APC comme système de cache et configurer Varnish comme reverse-proxy pour Apache pour améliorer les performances
  11. Serveur dédié : afficher la véritable IP derrière un reverse-proxy comme Varnish
  12. Serveur dédié : intégrer SSH à WordPress pour mettre à jour le core, les plugins et les thèmes
  13. Serveur dédié : installer la dernière version d’APC par SVN
  14. Serveur dédié : analyse des performances du serveur
  15. Serveur dédié : mettre à jour le noyau Debian de la Kimsufi
  16. Serveur dédié : sauvegarde automatique des fichiers avec Backup Manager sur le serveur de sauvegarde OVH
  17. Serveur dédié : configurer la limite mémoire pour PHP et Suhosin
  18. Bash : supprimer tous les fichiers et sous-répertoires d’un répertoire
  19. Serveur dédié : impossible de se connecter à un port distant
  20. Rsync: rapatrier les fichiers du serveur à la maison
  21. Bash : réparer les tables MySQL en cas de crash
  22. Serveur dédié : création d’une seedbox avec Transmission
  23. Serveur dédié : des paquets LAMP à jour sous Debian
  24. Serveur dédié : mise à jour vers Debian 7 Wheezy
  25. Serveur dédié : activer X11 forwarding pour SSH
  26. Serveur dédié : optimiser toutes les images JPG et PNG avec OptiPNG et JpegOptim
  27. Postfix : résoudre l’erreur « fatal: www-data(33): message file too big »
  28. Serveur dédié : mise en place de l’IPv6
  29. WordPress : accorder les bonnes permissions aux fichiers et dossiers avec chown et chmod
  30. WordPress : héberger les images sur un sous-domaine
  31. Serveur dédié : ajouter l’authentification SPF, Sender-ID et DKIM à Postfix et Bind9 avec opendkim
  32. Apache : lorsque le domaine seul (sans WWW) renvoie une erreur 403
  33. Serveur dédié : sécuriser Apache avec HTTPS (HTTP avec la couche TLS/SSL) en Perfect Forward Secrecy
  34. Serveur dédié : passer WordPress en HTTPS (TLS/SSL)
  35. Serveur dédié : configurer Webmin en TLS avec un certificat SSL
  36. Serveur dédié : configurer Transmission pour accéder au WebUI via TLS-SSL
  37. Serveur dédié : installer et configurer Varnish 4
  38. Serveur dédié : passage au mod FastCGI et PHP-FPM avec Apache MPM Worker
  39. J’ai planté le serveur… ou comment récupérer un serveur Kimsufi après un plantage de kernel avec le mode rescue OVH
  40. Serveur dédié : configurer Postfix et Courier pour utiliser TLS-SSL en Perfect Forward Secrecy
  41. Serveur dédié : retirer Varnish, devenu inutile avec HTTPS
  42. Serveur dédié : ajout de mod_spdy pour accélérer la connexion TLS-SSL sous Apache
  43. Serveur dédié : installer la dernière version d’OpenSSL sous Debian
  44. Serveur dédié : activer l’IP canonique du serveur sous Apache
  45. Serveur dédié : mise à jour vers PHP 5.6
  46. MySQL : convertir les tables MyISAM au format InnoDB
  47. Serveur dédié : optimiser toutes les images GIF avec GIFsicle
  48. Serveur dédié : migration de MySQL vers MariaDB
  49. BASH : lister, bloquer et débloquer des adresses IP avec iptables
  50. Serveur dédié : produire une meilleure réserve d’entropie avec haveged
  51. Serveur dédié : mettre en place DNSSEC pour sécuriser les DNS du domaine
  52. Serveur dédié : mise en place du protocole DANE
  53. 8 règles d’or pour bien déployer DNSSEC et DANE
  54. Serveur dédié : installer PHP7 FPM avec FastCGI sous Debian
  55. Serveur dédié : réduire les connexions TIME_WAIT des sockets et optimiser TCP
  56. Fail2Ban: protéger Postfix contre les attaques DoS de types AUTH, UNKNOWN et EHLO
  57. Serveur dédié : mettre à jour Apache et configurer le mod_http2 pour HTTP/2
  58. Serveur dédié : ajouter le domaine à la liste HSTS preload
  59. Serveur dédié : ajouter l’authentification DMARC à Postfix et BIND
  60. Serveur dédié : à la recherche de l’inode perdue ou comment résoudre le problème « no space left on device »
  61. Serveur dédié : installer NginX avec support HTTP2 et certificat SSL, PHP, MariaDB 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.

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

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.list

puis on y ajoute :

# Dotdeb stable
deb http://packages.dotdeb.org stable all
deb-src http://packages.dotdeb.org stable all

On installe la clé GPG de Dotdeb:

wget https://www.dotdeb.org/dotdeb.gpg
sudo apt-key add dotdeb.gpg

et on met notre liste de paquet à jour :

apt-get update && apt-get upgrade

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-*

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-json

Sommaire de la série Monter un serveur dédié de A à Z

  1. Serveur dédié : installation d’Apache, PHP, MySQL et Webmin
  2. Serveur dédié : créer la base de données MySQL et importer WordPress
  3. Serveur dédié : créer et activer un Virtual Host sous Apache
  4. Serveur dédié : changer les DNS du nom de domaine et le faire pointer vers le serveur
  5. Serveur dédié : sécurisation des services avec iptables et fail2ban
  6. Serveur dédié : sécurisation de la couche TCP/IP
  7. Serveur dédié : création d’un serveur mail Postfix (sécurisé avec Saslauthd et certificat SSL) et Courier (accès POP et IMAP) utilisant une base MySQL d’utilisateurs/domaines virtuels
  8. Serveur dédié : sécuriser Apache 2 avec ModSecurity
  9. Serveur dédié : CHMOD récursif sur des fichiers ou répertoires en ligne de commande
  10. Serveur dédié : installer APC comme système de cache et configurer Varnish comme reverse-proxy pour Apache pour améliorer les performances
  11. Serveur dédié : afficher la véritable IP derrière un reverse-proxy comme Varnish
  12. Serveur dédié : intégrer SSH à WordPress pour mettre à jour le core, les plugins et les thèmes
  13. Serveur dédié : installer la dernière version d’APC par SVN
  14. Serveur dédié : analyse des performances du serveur
  15. Serveur dédié : mettre à jour le noyau Debian de la Kimsufi
  16. Serveur dédié : sauvegarde automatique des fichiers avec Backup Manager sur le serveur de sauvegarde OVH
  17. Serveur dédié : configurer la limite mémoire pour PHP et Suhosin
  18. Bash : supprimer tous les fichiers et sous-répertoires d’un répertoire
  19. Serveur dédié : impossible de se connecter à un port distant
  20. Rsync: rapatrier les fichiers du serveur à la maison
  21. Bash : réparer les tables MySQL en cas de crash
  22. Serveur dédié : création d’une seedbox avec Transmission
  23. Serveur dédié : des paquets LAMP à jour sous Debian
  24. Serveur dédié : mise à jour vers Debian 7 Wheezy
  25. Serveur dédié : activer X11 forwarding pour SSH
  26. Serveur dédié : optimiser toutes les images JPG et PNG avec OptiPNG et JpegOptim
  27. Postfix : résoudre l’erreur « fatal: www-data(33): message file too big »
  28. Serveur dédié : mise en place de l’IPv6
  29. WordPress : accorder les bonnes permissions aux fichiers et dossiers avec chown et chmod
  30. WordPress : héberger les images sur un sous-domaine
  31. Serveur dédié : ajouter l’authentification SPF, Sender-ID et DKIM à Postfix et Bind9 avec opendkim
  32. Apache : lorsque le domaine seul (sans WWW) renvoie une erreur 403
  33. Serveur dédié : sécuriser Apache avec HTTPS (HTTP avec la couche TLS/SSL) en Perfect Forward Secrecy
  34. Serveur dédié : passer WordPress en HTTPS (TLS/SSL)
  35. Serveur dédié : configurer Webmin en TLS avec un certificat SSL
  36. Serveur dédié : configurer Transmission pour accéder au WebUI via TLS-SSL
  37. Serveur dédié : installer et configurer Varnish 4
  38. Serveur dédié : passage au mod FastCGI et PHP-FPM avec Apache MPM Worker
  39. J’ai planté le serveur… ou comment récupérer un serveur Kimsufi après un plantage de kernel avec le mode rescue OVH
  40. Serveur dédié : configurer Postfix et Courier pour utiliser TLS-SSL en Perfect Forward Secrecy
  41. Serveur dédié : retirer Varnish, devenu inutile avec HTTPS
  42. Serveur dédié : ajout de mod_spdy pour accélérer la connexion TLS-SSL sous Apache
  43. Serveur dédié : installer la dernière version d’OpenSSL sous Debian
  44. Serveur dédié : activer l’IP canonique du serveur sous Apache
  45. Serveur dédié : mise à jour vers PHP 5.6
  46. MySQL : convertir les tables MyISAM au format InnoDB
  47. Serveur dédié : optimiser toutes les images GIF avec GIFsicle
  48. Serveur dédié : migration de MySQL vers MariaDB
  49. BASH : lister, bloquer et débloquer des adresses IP avec iptables
  50. Serveur dédié : produire une meilleure réserve d’entropie avec haveged
  51. Serveur dédié : mettre en place DNSSEC pour sécuriser les DNS du domaine
  52. Serveur dédié : mise en place du protocole DANE
  53. 8 règles d’or pour bien déployer DNSSEC et DANE
  54. Serveur dédié : installer PHP7 FPM avec FastCGI sous Debian
  55. Serveur dédié : réduire les connexions TIME_WAIT des sockets et optimiser TCP
  56. Fail2Ban: protéger Postfix contre les attaques DoS de types AUTH, UNKNOWN et EHLO
  57. Serveur dédié : mettre à jour Apache et configurer le mod_http2 pour HTTP/2
  58. Serveur dédié : ajouter le domaine à la liste HSTS preload
  59. Serveur dédié : ajouter l’authentification DMARC à Postfix et BIND
  60. Serveur dédié : à la recherche de l’inode perdue ou comment résoudre le problème « no space left on device »
  61. Serveur dédié : installer NginX avec support HTTP2 et certificat SSL, PHP, MariaDB sous Debian

Rapport de faute d’orthographe

Le texte suivant sera envoyé à nos rédacteurs :