Connexion lente, testez les résolveurs DNS – NameBench

Connexion lente, testez les résolveurs DNS – NameBench

Avant tout, la différence entre « Résolveur » (ou serveur récursif) et Serveur faisant autorité (serveur DNS) !
On parle souvent de serveur DNS à tort car il s’agit souvent et surtout dans le cas NameBench de serveurs récursifs.

Résolveur (ou serveur récursif) : serveur DNS qui ne connaît rien mais pose des questions aux serveurs faisant autorité et mémorise les réponses. Chez le FAI, ou sur le réseau local ou serveurs récursifs publics (Quad9, OpenDNS, Google, etc.).
Serveur faisant autorité : serveur DNS qui connaît le contenu d’un domaine. Exemple : les serveurs de l’AFNIC qui connaissent ce qu’il y a dans « .fr » et peuvent répondre. Ou les serveurs de gouvernement.fr chez Gandi et autres…

Pour approfondir vos connaissances sur le sujet allez sur le blog de Stéphane Bortzmeyer que je remercie.

Bon, revenons-en à nos moutons !…

Je suis parmi les utilisateurs les plus distants de mon FAI, ce qui a pour conséquence une connexion internet dont les utilisateurs de modems n’ont rien à m’envier.

Dans ce cas, plus qu’ailleurs, le temps de réponse d’un résolveur DNS a son importance.

Trouver le plus rapide, c’est ce que fait NameBench en testant la rapidité des serveurs récursifs, pour cela il va utiliser l’historique du navigateur et va parcourir les résolveurs DNS locaux et globaux (publics). Il vous signalera également les résolveurs DNS menteurs.
Il est dans les dépôts Debian, une fois installé il suffit le lancer par la commande

$ namebench

Vous avez l’interface ci-dessous, on peut voir que j’ai comme résolveur DNS 9.9.9.9 et 9.9.9.10 de Quad9

Capture d’écran de l’outil Namebench, un logiciel open source utilisé pour évaluer et comparer les performances des serveurs DNS, avec des options de configuration pour inclure des fournisseurs globaux ou régionaux, des vérifications de censure, et une analyse de la rapidité des requêtes DNS.
L’interface de Namebench, un outil conçu pour tester et classer les serveurs DNS en fonction de leur vitesse, de leur fiabilité et de leur capacité à contourner la censure.

Cliquez sur test ou running.
C’est parti ! Vous pouvez aller vous faire chauffer un thé, chercher le pain à la boulangerie cela va prendre un certain temps !

Sortie terminal de Namebench, affichant l’envoi de 250 requêtes à quatre serveurs DNS, avec des pourcentages de réussite, des erreurs de timeout (comme pour UltraDNS), et un rapport final indiquant que Google Public DNS-2 (8.8.4.4) est le serveur le plus performant.
Exemple de sortie de Namebench, un outil qui teste la réactivité de plusieurs serveurs DNS en envoyant des milliers de requêtes. Ici, Google Public DNS-2 (8.8.4.4) est identifié comme le plus efficace.

A la fin vous avez les résultats qui s’affiche sur votre navigateur.

Résultat d’un test Namebench indiquant le serveur le plus rapide
Analyse Namebench révélant que Google Public DNS-2 offre des performances supérieures de 38,4 %, avec une configuration optimale pour améliorer votre connexion internet.

J’ai fait le choix de refaire un test avec les résolveur  DNS 208.67.222.220 et 208.67.220.222 de OpenDNS.
Choix que j’ai gardé, même si celui de Google est un poil de cul plus rapide. J’ai plus confiance à OpenDNS qu’en Google.
S’en suit une série de screenshots.

Capture d’écran de Namebench, un outil pour tester et comparer les performances des serveurs DNS (comme Google Public DNS, OpenDNS, etc.).
nterface de Namebench permettant de configurer et de lancer des tests de performance sur différents serveurs DNS.
Résultat de Namebench
Recommandation NameBench
Tableau de résultats de Namebench comparant les performances de plusieurs serveurs DNS (temps de réponse moyen, temps minimum/maximum, erreurs de timeout, notes sur leur fiabilité).
Namebench affiche les résultats de test pour plusieurs serveurs DNS, avec des métriques comme le temps de réponse (Avg ms), les erreurs (TO, NX) et des notes sur leur fiabilité.
Graphiques Namebench illustrant les temps de réponse moyens et individuels des serveurs DNS (Google Public DNS-2, SYS-208.67.222.220, UltraDNS, DynGuide), ainsi que la distribution des réponses dans les 200 premières millisecondes.
Namebench présente les temps de réponse moyens et individuels des serveurs DNS, ainsi qu’une courbe de distribution pour évaluer leur réactivité globale.
Graphique illustrant la répartition des temps de réponse (en millisecondes) de quatre serveurs DNS : SYS-208.67.222.220, DynGuide, Google Public DNS-2 et UltraDNS.
Ce graphique montre la distribution des temps de réponse des serveurs DNS analysés. Les courbes représentent le pourcentage cumulé de réponses en fonction du temps de réponse (en ms).
Capture d'écran d'un fichier CSV nommé "namebench_2018-01-02_1814.csv" ouvert dans LibreOffice Calc, affichant des données de tests DNS.
Cette image montre un extrait du fichier CSV « namebench_2018-01-02_1814.csv » ouvert dans LibreOffice Calc. Le tableau contient des informations sur les tests DNS, incluant des colonnes comme l’adresse IP, le type de test, le type d’enregistrement, la durée, le TTL, le nombre de réponses et la réponse elle-même.

Schéma simplifié d’une requête DNS

Schéma illustrant le chiffrement des requêtes DNS via des connexions sécurisées entre des appareils (smartphone, tablette, ordinateur) et des serveurs DNS privés (dnsprivacy.org), protégeant les données contre l'interception.
Comment les connexions DNS chiffrées (DoH/DoT) protègent vos données contre les regards indiscrets, avec des appareils connectés à un serveur DNS sécurisé via dnsprivacy.org.

Comment installer VM VirtualBox sur Debian 9 (Stretch) ou autres distributions

VM VirtualBox est un logiciel libre et open source de virtualisation publié par Oracle. Bien entendu il est disponible pour GNU/Linux mais aussi pour Windows.

Par défaut, les packages de VM VirtualBox ne sont pas disponibles dans les dépôts de paquets de la Debian 9 (nom de code « Stretch« ).

Nous allons donc voir comment installer la dernière version de Oracle VM Virtualbox sur debian.

Allez déjà faire un tour du côté d’Oracle pour connaître quelle est la dernière version de VM Virtualbox. À ce stade, en cliquant sur l’onglet « Downloads » vous pouvez voir les différents « paquets ou sources » au téléchargement proposés aux diverses distributions et systèmes d’exploitations.

Mais si on souhaite avoir un suivi des mises-à-jour… Sous linux il nous suffit de configurer les dépôts, pour Debian c’est là… Voyons comment faire :
Rappel : $=User    #=Root

Étape 1 : Ajout du dépôt VM VirtualBox

Ouvrez le terminal et exécutez la commande suivante pour ajouter le dépôt.

# apt-add-repository 'deb http://download.virtualbox.org/virtualbox/debian stretch contrib'

Étape : 2 Ajouter une clé publique de VirtualBox

# curl -O https://www.virtualbox.org/download/oracle_vbox_2016.asc
# apt-key add oracle_vbox_2016.asc

Étape 3 : Installez VirtualBox avec la commande apt-get

# apt-get update
# apt-get install virtualbox

La version n’étant pas spécifiée vous aurez un message comme ci-dessous

Le paquet virtualbox est un paquet virtuel fourni par :
  virtualbox-5.2 5.2.2-119230~Debian~stretch
  virtualbox-5.1 5.1.30-118389~Debian~stretch
  virtualbox-5.0 5.0.40-115130~Debian~stretch
Vous devez explicitement sélectionner un paquet à installer.
E: Le paquet « virtualbox » n'a pas de version susceptible d'être installée

C’est le moment de choisir la dernière version…

# apt-get install virtualbox-5.2 5.2.2

Une fois l’installation terminée, essayez maintenant d’y accéder.

Accéder à VirtualBox

Interface de recherche du système d'exploitation affichant VirtualBox comme résultat pour "vm virtualbox".
Cette capture montre l’interface de recherche du système d’exploitation, où l’utilisateur a saisi « vm virtualbox ». L’icône de VirtualBox est visible dans les résultats, indiquant que l’application est installée et prête à être lancée.

Cliquez sur l’icône de la VM VirtualBox

Interface principale de VirtualBox affichant le gestionnaire de machines virtuelles avec un message de bienvenue et des instructions pour créer une nouvelle machine virtuelle.
Cette capture montre l’interface principale de VirtualBox, où aucun machine virtuelle n’a encore été créée. Un message de bienvenue guide l’utilisateur pour créer sa première machine virtuelle en utilisant le bouton « Nouvelle ».

Installer le pack d’extension VirtualBox

Il est recommandé d’installer le module d’extension après l’installation de la VirtualBox. Pour installer le pack d’extension VirtualBox 5.2, nous devons d’abord télécharger le fichier du pack d’extension en utilisant la commande wget suivante :

$ wget http://download.virtualbox.org/virtualbox/5.2.2/Oracle_VM_VirtualBox_Extension_Pack-5.2.2-119230.vbox-extpack

Pour être certain de bien charger la bonne extension pack, vérifiez ici.
Une fois le fichier téléchargé, accédez à l’interface graphique de VirtualBox et allez sur:
Fichier -> Paramètres -> Extensions et sélectionnez le fichier ‘vbox-extpack’ Puis cliquez sur Installer (voir série de screenshots)

Interface des préférences de VirtualBox : onglet Extensions avec une liste vide de paquets d'extension.
Cette capture montre l’onglet « Extensions » dans les préférences de VirtualBox. Aucun paquet d’extension n’est installé ou activé, comme indiqué par la liste vide sous « Paquets d’extension ».
Fenêtre de sélection de fichier d'extension VirtualBox : le fichier Oracle_VM_VirtualBox_Extension_Pack-5.2.22-119230.vbox-extpack est sélectionné dans le dossier Téléchargements.
Cette capture montre la fenêtre de sélection de fichier pour ajouter une extension à VirtualBox. Le fichier Oracle_VM_VirtualBox_Extension_Pack-5.2.22-119230.vbox-extpack est mis en surbrillance dans le dossier Téléchargements, prêt à être installé.
Fenêtre de l'accord de licence pour Oracle VM VirtualBox, affichant les termes et conditions d'utilisation.
Cette capture montre la fenêtre de licence d’Oracle VM VirtualBox. L’utilisateur est invité à accepter les termes et conditions pour continuer l’installation ou l’utilisation du logiciel.
Fenêtre d'avertissement de VirtualBox : détails sur l'extension Oracle VM VirtualBox Extension Pack en cours d'installation, avec un message sur les risques potentiels des extensions.
Cette capture montre une fenêtre d’avertissement de VirtualBox qui informe l’utilisateur des risques potentiels liés à l’installation d’une extension. Elle détaille le nom, la version et les fonctionnalités de l’extension Oracle VM VirtualBox Extension Pack.

Il y a une dernière fenêtre, dont j’ai oublié de faire le screenshot, qui nous indique que le pack d’extension a été installé avec succès.

C’est fini pour ce tutoriel, j’espère que vous avez une idée sur la façon d’installer VM VirtualBox et son extension sur Debian (et autres distributions linux).
En espérant vous avoir été utile et n’hésitez pas à me faire savoir comment faire mieux ou si j’ai commis des coquilles…

Copier-Coller – Danger!

Suite à un petit message de Hoper sur notre mailing liste des membres Root66.net, j’ai décidé de faire un billet sur le sujet.

Rendre à César ce qui appartient à César.

Hoper:
L’un des points fort de Linux c’est la capacité d’absolument tout faire en ligne de commande. Cela permet de dépanner ou d’indiquer quoi faire à une personne assez facilement.
Bien sûr tout le monde dit et répète qu’il ne faut jamais copier/coller sans lire et comprendre au moins un minimum ce qu’on met dans le terminal.

Malheureusement, c’est encore pire que ça… Des petits farceurs peuvent sans problème dissimuler des commandes, rendant la technique du copier/coller encore plus dangereuse.
Un très bon exemple de dissimulation se trouve ici:
https://thejh.net/misc/website-terminal-copy-paste
(essayez de faire un copier/coller de la première ligne dans votre terminal)
Le copier/coller reste très utile. Mais: …

  • Ne faite des copier/coller que depuis un site de confiance
  • Après avoir lu et compris un minimum ce que vous vous apprêtez à faire…

Pour ceux qui l’ignorent, la commande git permet simplement de récupérer le contenu d’un répertoire, elle n’est pas censée exécuter quoi que ce soit et est donc « safe » à priori…

Sima78, donc moi 😉 :
Vérification possible: faites un copier/coller sur un éditeur de texte pour voir ce que cela donne. Exemple ci-dessous:

git clone /dev/null; clear; echo -n "Hello ";whoami|tr -d '\n';echo -e '!\nThat was a bad idea. Don'"'"'t copy code from websites you don'"'"'t trust!
Here'"'"'s the first line of your /etc/passwd: ';head -n1 /etc/passwd
git clone git://git.kernel.org/pub/scm/utils/kup/kup.git

On voit immédiatement que cela ne colle plus au lien proposé…

Ou utilisez les outils Firefox:
Outils –> Dévellopement Web –> Inspecteur
Comme ci-dessous:

Capture d'écran de Firefox avec le menu Outils > Développement web > Inspecteur ouvert, sur une page traitant des dangers du copier-coller depuis un site web vers un terminal.
Pour vérifier le contenu réel d’une commande suspecte, l’Inspecteur de Firefox permet d’examiner le code source de la page.

Vous obtenez une nouvelle fenêtre sous le visuel de la page web.

Il vous suffit de faire glisser la souris dans la fenêtre « Inspecteur » et développer les « fils » pour voir ce qui s’y trouve. Exemple sur l’image ci-dessous.

Capture d'écran de l'Inspecteur Firefox révélant du code malveillant caché dans une commande apparemment anodine sur une page web.
La commande semble inoffensive à l’écran, mais l’inspecteur révèle ce qui se passe vraiment si on la colle dans un terminal.

Bref! Faites attention à ce que vous « Copier/coller » sur votre terminal !

Sauvegardes au quotidien – Rdiff-Backup et MySqlDump

Rdiff-Backup et sauvegardes

J’avais déjà écrit un billet intitulé « Scripts de sauvegardes journalières et hebdomadaires » et un commentaire de Tetsumaki m’a donner à réfléchir.

Pourquoi je fais compliqué quand ont peut faire simple?

Soit, j’aime les scripts, et du coup il m’arrive de m’emballer et il fallait un disque de sauvegarde assez « gros »… Et j’ai décidé de regarder du côté de Rdiff-Backup. J’ai été séduit !

Je fais donc un nouveau billet sur le sujet de la sauvegarde sans pour autant supprimer l’autre…

Rdiff-Backup existe aussi pour Windows, je suppose qu’il doit exister une interface graphique , j’avoue ne pas avoir cherché puisque je m’en sert pour la sauvegarde d’un serveur, qui n’a pas d’interface graphique et de façon automatisée.

Bien entendu, une sauvegarde ne se fait pas sur une partition du disque dur, pas même sur un autre disque dur sur le même pc, mais sur un disque externe ou un pc distant…

Une modification à été apporté le 07/12/2023 concernant le message d’érreur :

/bin/sh: 1: root: not found

Lire la suite…

Sauvegarde avec Rdiff-Backup et MysqlDump.

Dans un premier temps j’ai défini les répertoires que je souhaitais sauvegarder, puis j’ai créé un fichier texte pour les regrouper.
Dans cet exemple, je décide de sauvegarder « /etc », « /home », « /var »

# nano /root/scripts/include-dir.txt

Copiez ce qu’il y a ci-dessous:

/etc
/home
/var

Maintenant nous allons créer le script dans la « cron.daily »

# nano /etc/cron.daily/backup

Copiez en adaptant ce qui suit.

#!/bin/bash
rdiff-backup --include-globbing-filelist /root/scripts/include-dir.txt --exclude '**' / /dir/de/sauvegarde/backup/

/dir/de/sauvegarde/backup/ est la destination de la sauvegarde, je vous laisse l’adapter selon vos choix.

Le rendre exécutable:

chmod +x /etc/cron.daily/backup

Je souhaite également sauvegarder des bases de données, on peut aussi le faire via Rdiff-backup, personnellement le préfère utiliser « mysqldump » (et oui, je suis un animal d’habitudes) :

# nano /etc/cron.daily/mysql-backup

Copiez en adaptant ce qui suit.

#!/bin/bash
mysqldump -u nextcloud -motdepasse nextcloud > /dir/de/sauvegarde/bd/nextcloud.sql
mysqldump -u dolibarr -motdepasse dolibarr > /dir/de/sauvegarde/bd/dolibarr.sql
mysqldump -u grr -motdepasse grr > /dir/de/sauvegarde/bd/grr.sql

Le rendre exécutable:

chmod +x /etc/cron.daily/mysql-backup

Pour que cela se fasse automatiquement et chaque jour, mettez le tout dans votre crontab:

# crontab -e

Copiez en adaptant ce qui suit.

PATH=/usr/sbin:/usr/bin:/sbin:/bin
SHELL=/bin/sh
MAILTO=""
# m h  dom mon dow   command
0 10 * * * root sh /etc/cron.daily/backup >/var/log/monbackup 2>&1 # JOB_BACKUP
0 15 * * * root sh /etc/cron.daily/mysql-backup >/var/log/monsav-bd 2>&1 # JOB_MYSQL-BACKUP

<Ajout du 07/12/2023>

J’ai le message d’erreur suivant : /bin/sh: 1: root: not found

Il arrive que root n’a pas de Shell et que l’user principal peut utiliser « sudo » sans confirmation de mot de passe, le cas par exemple de Raspberry, d’où un mot de passe fort pour cette user.

# nano /etc/cron.daily/backup

Copiez en adaptant ce qui suit.

#!/bin/bash
sudo rdiff-backup --include-globbing-filelist /root/scripts/include-dir.txt --exclude '**' / /dir/de/sauvegarde/backup/
# crontab -e

Copiez en adaptant ce qui suit.

PATH=/usr/sbin:/usr/bin:/sbin:/bin
SHELL=/bin/sh
MAILTO=""
# m h  dom mon dow   command
0 10 * * * /etc/cron.daily/backup >/var/log/monbackup 2>&1 # JOB_BACKUP
0 15 * * * /etc/cron.daily/mysql-backup >/var/log/monsav-bd 2>&1 # JOB_MYSQL-BACKUP

</Ajout du 07/12/2023>

Ceci-dit, il faut vérifier les sauvegardes, moi je simule une restauration dans un dossier de test, ici « test-sauv »

rdiff-backup --force -r now /dir/de/sauvegarde/backup/ /home/sima78/backup/rdiff-backup-data/test-sauv/

On peut voir les statistiques de la dernière sauvegarde

rdiff-backup-statistics /dir/de/sauvegarde/backup/

Ou la liste des incréments d’une sauvegarde

rdiff-backup -l /dir/de/sauvegarde/backup/

Vous pouvez aussi spécifier une durée de rétention des sauvegardes, dans le cas ci-dessous je supprime au-delà de 10 jours

rdiff-backup --remove-older-than 10D --force /dir/de/sauvegarde/backup/

Vous pouvez mettre D pour(Day), W pour(Week), M pour (Month) et Y pour (Year).
Donc voilà ma base, maintenant vous pouvez affiner comme par exemple avec mysqldump par lequel il est possible d’exporter plusieurs bases de données en une seule commande:

mysqldump --databases database1 database2 [...] > /home/sima78/my_databases.sql

Bref plein de possibilités il suffit de faire un « man » pour s’en rendre compte

man rdiff-backup
man mysqldump

Enregistrer directement depuis votre carte son – linux.

Votre enfant fait partie de la chorale de la maternelle et le son est sur le site de votre mairie.

Mais, impossible de le télécharger, le site est fait en sorte qu’aucun de vos plugins Firefox fonctionnent et aucun fichier mis à disposition au téléchargement… Mais merde! flûte! C’est la voix de votre enfant dont vous voulez garder une trace!

On se calme, si le son sort de la carte son, c’est qu’il y a moyen de le récupérer.

Ma méthode:

Pavucontrol et AudaCity

Il vous faut deux applications « Pavucontrol » et une application capable d’enregistrer, il y en a plein sous linux, moi j’utilise « Audacity« .

si vous ne les avez pas, installez-les (pour Debian et dérivés ».

# apt-get install pavucontrol audacity

Lancez « Pavucontrol », puis « Audacity ».

Personnellement, je n’ai pas eu besoin d’intervenir dans les configurations, tout est par défaut.

Agencez vos fenêtres de façon à être efficace dans les clics… Image ci-dessous.

Capture d'écran d'un bureau Linux avec le logiciel Audacity, le contrôle du volume PulseAudio et une vidéo en attente dans Firefox.
Configuration typique sous Linux pour enregistrer le son d’une vidéo web avec Audacity via PulseAudio.

Lorsque vous lancez la lecture sur votre navigateur, puis enregistrement sur Audicity, vous devriez avoir quelque chose du même genre que  ci-dessous.

Alt : Capture d'écran d'un enregistrement Audacity sous Linux avec PulseAudio sur l'onglet Enregistrement, montrant les formes d'ondes dans la piste stéréo.
Source d’enregistrement : Audacity capture le moniteur stéréo analogique au lieu du flux Firefox.

Positionnez-vous sur l’onglet « Enregistrement » du contrôle du volume et vous devriez avoir quelque chose du même genre que l’image ci-dessous.

Il faut que ALSA plug-in soit sur « Monitor of Audio interne Stéréo analogique »

Alt : Capture d'écran montrant un enregistrement audio en cours dans Audacity, avec Firefox lisant une vidéo et PulseAudio affichant le flux audio actif.
Enregistrement audio en cours — Audacity, PulseAudio et Firefox sous Linux

Vous êtes prêt! Alors repartez de zéro, agencez vos fenêtres, puis lancez le fichier son (ou vidéo dont vous voulez récupérer le son) depuis votre navigateur, cliquez sur enregistrer de votre enregistreur (ici Audacity) et il n’y a plus qu’à attendre la fin où vous stopperez votre enregistrement. Faites exporter ou enregistrer en fonction du format souhaité et c’est fini!

Il y a sans doute plein d’autres méthodes n’hésitez pas à les faire connaître.

Scripts de sauvegardes journalières et hebdomadaires

Bin-Bash, scripts, ligne de commande

J’avais pris cela sur un site, je ne sais plus où et ça a bien fonctionné un certain temps puis plus rien lorsque j’ai passé un des serveurs qui était sous Ubuntu serveur 12.04 sous Debian 8.7

J’ai donc repris en grande partie, même si les bases restent les mêmes. Voici donc la version fonctionnelle.

Sur Debian 8.7

Automatiser les sauvegardes.

Dans cet exemple, il s’agit de sauvegarder chaque jour de la semaine (samedi, dimanche, lundi, mardi, etc.), puis le vendredi soir, on sauvegarde sur le n° de la semaine. Puis on repart sur samedi, dimanche, etc.

Avant tout vous devez définir le « lieux » de sauvegarde, s’agit-il d’un disque dur supplémentaire, d’un disque externe, d’un lieu distant (par ssh ou autres)… Bref vous devrez adapter les scripts à vos choix et besoin.

Il s’agit là d’une idée sur le principe, à chacun de se l’approprier.

Ici je vais partir du principe que j’ai un disque dur chiffré supplémentaire monté sur /mnt/
Il est nommé « save » et le répertoire de sauvegarde est « s_server »

ce qui donne le chemin de sauvegarde « /mnt/save/s_server »

Avant tout, vous devez savoir en quelle langue sont vos jours de la semaine (anglais, français, etc.).

date +%A
vendredi

Le résultat est Français.
Connectez-vous en administrateur.

su root

Créer le script qui créera les répertoires des n° de semaine et les jours de la semaine.

#!/bin/bash
for x in lundi mardi mercredi jeudi vendredi samedi dimanche {01..52}
do
mkdir $x
done

Pourquoi {01..52} et non {1..52}? il suffit de lire le man date

man date
(...)
%V     ISO week number, with Monday as first day of week (01..53)
(...)

On voit donc qu’il faut numéroté de 01 à 52, car la 53ème semaine, lorsqu’elle existe est à cheval entre deux années et c’est donc pas dramatique de rater une semaine.

Rendre le script exécutable et on le place (dans notre exemple plus haut) dans « /mnt/save/s_server/ », puis on l’exécute…

./faire_mkdir.sh

Un petit « ls » pour vérifier que tout est ok.

Nous allons créer un fichier des dossiers à exclure. Si votre sauvegarde est locale, il faudra exclure le dossier de sauvegarde 😉 dans notre cas « /mnt/save/s_server/ » vous pouvez exclure tout ce qui ne vous semble pas judicieux, à vous de voir.

cd /etc/
nano rsync.exclude

On y met tout ce que l’on souhaite exclure.
Ci-dessous « /mnt/ » obligatoire dans l’exemple puisque la sauvegarde ce fait sur « /mnt/save/s_server/ », le reste en fonction de vos besoins.
Faites un copié/collé de ce qu’il y a ci-dessous.

# Mettez ici tous les dossiers que vous souhaitez exclure
# - /boot/
- /media/
- /lost+found/
- /mnt/
- /proc/
- /opt/
- /run/
- /srv/
- /tmp/
- /sys/

Créer les deux scripts ci dessous:

nano /etc/cron.daily/jour.sh

Copié/collé de ce qu’il y a ci-dessous

#!/bin/bash
# On va l'appeler "jour.sh"
# Sauvegarde quotidienne
jour=$(date +%A)
source="/"
destination="/mnt/save/s_server"
rsync -aurov -progress --delete --stats --exclude-from=/etc/rsync.exclude $source $destination/$jour

Ce qui donne le chemin /etc/cron.daily/jour.sh et rendez-le exécutable.

chmod +x /etc/cron.daily/jour.sh

Puis:

nano /etc/cron.weekly/semaine.sh

Copié/collé de ce qu’il y a ci-dessous

#!/bin/bash
# On va l'appeler "semaine.sh"
#  Sauvegarde hebdomadaire
semaine=$(date +%V)
source="/"
destination="/mnt/save/s_server"
rsync -aurov -progress --delete --stats --exclude-from=/etc/rsync.exclude $source $destination/$semaine

Ce qui donne le chemin /etc/cron.weekly/semaine.sh et rendez-le exécutable.

Chmod +x /etc/cron.weekly/semaine.sh

Maintenant il suffit juste de créer la crontab

crontab -e

Choisissez votre interprétateur texte « nano » ou « vi » et copiez les lignes ci-dessous:

PATH=/usr/sbin:/usr/bin:/sbin:/bin
SHELL=/bin/sh
MAILTO=""
# m h  dom mon dow   command
0 23 * * * /etc/cron.daily/jour.sh >/dev/null 2>&1 # JOB_1
30 23 * * 5 /etc/cron.weekly/semaine.sh >/dev/null 2>&1 # JOB_2

Pour Ubuntu ce devrait ressembler à cela:

PATH=/usr/sbin:/usr/bin:/sbin:/bin
SHELL=/bin/sh
MAILTO=""
# m h  dom mon dow   command
0 23 * * * sudo /etc/cron.daily/jour.sh >/dev/null 2>&1 # JOB_1
30 23 * * 5 sudo /etc/cron.weekly/semaine.sh >/dev/null 2>&1 # JOB_2

Ensuite vérifier le lendemain si la sauvegarde à bien fonctionné et revérifiez en fin de semaine.

Geneweb en service et https (suite)

geneweb https stunnel4

Alors bien entendu comme je l’avais dit dans un billet précédent, il suffit d’utiliser Geneweb comme un site lambda avec un script cgi

Sauf que moi je ne souhaite pas l’utiliser ainsi mais en service, via un port dédié.
J’ai donc sur le sujet fait un tutoriel, je l’ai proposé sur une liste de diffusion (mailling list) dédiée à Geneweb. On m’a proposé de le publier sur le site dédié.

Comme je n’avais pas vraiment le temps j’ai juste envoyé une compilation de mes deux tutoriels « https sous Apache – Même à l’école je n’ai jamais eu un A » et « https pour autres ports ou services ex Geneweb – stunnel4« .

Henri G. l’a mis en forme, publié sur le site de geneweb, il en a fait aussi la traduction en anglais, et mis un petit lien de renvoie en fin d’article qui me touche beaucoup.
Un mois plus tard JM fait également une proposition différente de la mienne sur la mailling list, et que je trouve aussi très intéressante.

Il ne s’agit pas d’un tutoriel car je n’ai pas testé, et je n’ai pas envie de modifier la configuration de mon serveur pour tester.
Je le mets pour ceux qui souhaitent tester, creuser, perfectionner, et aussi en pense bête, pour le tester moi-même un jour.
C’est basé sur des certificats auto-signés, ceux qui ont d’autres certificats sauront l’adapter.

La proposition.

JM : (…) un vhost en reverse proxy, comme ça Geneweb n’écoute qu’en local. Ici une vieille configuration éprouvée, pas à jour des dernières modes de Let’s Encrypt & co mais ça donne l’idée. Le passage important est le paragraphe avec RewriteEngine, ProxyPass et ProxyPassReverse – ainsi que le <Proxy *> :

<VirtualHost *:443>
ServerName genealogie.mafamille.org
ServerAdmin admin@mafamille.org
DocumentRoot /home/moi/www/www.mafamille.org/
CustomLog /home/moi/logs/apache2/mafamille.org/access.log combined
RewriteEngine On
ProxyPass / http://serveur.mafamille.com:2317/
ProxyPassReverse / http://serveur.mafamille.com:2317/

   <Proxy *>
        Order deny,allow
        Allow from all
   </Proxy>

SSLEngine               on
SSLCACertificateFile    /etc/apache2/ssl/certs.pem
SSLCertificateFile      /etc/apache2/ssl/apache2.pem
SSLCertificateKeyFile   /etc/apache2/ssl/apache2.key
SSLProtocol             all
SSLCipherSuite          HIGH:MEDIUM

   <directory /home/jim/www/www.mafamille.org/>
        Options None
        AllowOverride None
        Order Deny,Allow
        Allow from all
   </directory>
</VirtualHost>

Mettre des bulles sur votre terminal – Cowsay – Fortune

Mettre des bulles sur votre terminal – CowsayFortune.

Ce n’est pas d’une grande utilité, donc indispensable.
Cowsay permet d’afficher un dessin en caractères ASCII dans votre terminal.
Par défaut il représente un animal qui récite le texte de votre choix.

Voyons un peu cela: On installe

# apt-get install cowsay

Voyons ce que cela donne par défaut:

$ cowsay hello
_______
< hello >
-------
  \   ^__^
   \  (oo)\_______
      (__)\       )\/\
          ||----w |
          ||     ||

A l’installation plusieurs dizaines de fichiers « .cow » sont installés dans /usr/share/cowsay/cows/

Testons-en un au hasard histoire de voir la différence:

$ cowsay -f sodomized-sheep.cow hello
 _______
< hello >
 -------
  \                 __ 
   \               (oo)
    \              (  )
     \             /--\
       __         / \  \ 
      UooU\.'@@@@@@`.\  )
      \__/(@@@@@@@@@@) /
           (@@@@@@@@)(( 
           `YY~~~~YY' \\
            ||    ||   >>

Bon, là c’est un peu cochon… Même s’il s’agit d’un mouton…

Si vous souhaitez qu’un dessin apparaisse de façon aléatoire dès l’ouverture de votre console, il suffit d’ajouter dans votre fichier « .bashrc »

cowsay -f `ls /usr/share/cowsay/cows | sort -R | tail -n 1` "votre_texte_d'accueil"

Explications :
Cowsay prend en argument le résultat d’une commande, ici « ls » sur le répertoire qui suit « /usr/share/cowsay/cows« . « sort -R » mélange le résultat, puis on affiche la dernière ligne par « tail -n 1« . S’en suit le texte de votre choix.
L’un des résultats:

 _______________________
< votre_texte_d'accueil >
 -----------------------
    \
     \
    ^__^         /
    (oo)\_______/  _________
    (__)\       )=(  ____|_ \_____
        ||----w |  \ \     \_____ |
        ||     ||   ||           ||

sima78@hohoho:~$

Si vous souhaitez des citations, vous pouvez combiner Cowsay avec Fortunes qui est un générateur aléatoire de citations. Pour avoir les citations Françaises:

# apt-get install fortunes-fr

Modifiez la dernière ligne que vous avez créée dans votre « .bashrc » par :

cowsay -f `ls /usr/share/cowsay/cows | sort -R | tail -n 1` "fortune -s"

L’option « -s » permet de sélectionner que les citations considérées comme « courtes »
Un des résultats:

 _________________________________________
/ Euclide avait-il raison raison de       \
| définir le nombre : collection d'unités |
| de même espèce ?                        |
|                                         |
| -+- Voltaire, Questions sur             |
\ l'encyclopédie -+-                      /
 -----------------------------------------
    \               ,-----._
  .  \         .  ,'        `-.__,------._
 //   \      __\\'                        `-.
((    _____-'___))                           |
 `:='/     (alf_/                            |
 `.=|      |='                               |
    |)   O |                                  \
    |      |                               /\  \
    |     /                          .    /  \  \
    |    .-..__            ___   .--' \  |\   \  |
   |o o  |     ``--.___.  /   `-'      \  \\   \ |
    `--''        '  .' / /             |  | |   | \
                 |  | / /              |  | |   mmm
                 |  ||  |              | /| |
                 ( .' \ \              || | |
                 | |   \ \            // / /
                 | |    \ \          || |_|
                /  |    |_/         /_|
               /__/
sima78@hohoho:~$

Vous pouvez enrichir votre répertoire /usr/share/cowsay/cows/ par vos propres créations ASCII ou d’autres téléchargées sur le web.

https pour autres ports ou services ex Geneweb – stunnel4

geneweb https stunnel4

Si vous avez une application avec un protocole ne supportant pas SSL, la solution est de l’encapsuler dans un tunnel SSL.
Bien entendu, il s’agit là d’un exemple, qui fonctionne chez-moi, n’hésitez pas à améliorer.

Geneweb en https

Depuis que mon serveur est en https, geneweb restait en http. Geneweb se lance sur mon serveur en service (il est son propre serveur) sur un port dédié. Une des solutions aurait été de l’installer sur /var/www/ avec un script CGI… Ce que je ne souhaitais pas.
Donc mon exemple s’applique à Geneweb, mais en cherchant sur le web, vous trouverez comment encapsuler d’autres protocoles tels que smtp, pop, vpn, imap…
Habituellement, on se connecte sur Geneweb en mode service sur le port 2317 (http://leserveur.net:2317) donc pas en https…

Voyons comment procéder…

sur Ubuntu 16.04 server

Geneweb et Stunnel

Installer Stunnel4

sudo apt-get install stunnel4

On se place dans le répertoire et on se positionne en Root, sinon tapez « sudo » devant chaque ligne.

cd /etc/stunnel
sudo -s

On génère les clés. On peut faire simple avec:

openssl req -new -x509 -nodes -days 365 -out stunnel.pem -keyout stunnel.pem #dans ce cas il faudra en tenir compte lors de la création du fichier « stunnel.conf »

Personnellement, j’ai procédé comme suit:

openssl genrsa -out cle-serveur.key 2048

Signature de la demande de certificat CSR.

openssl req -new -key cle-serveur.key -out demande-certif.csr

Le certificat auto-signé pour un an.

openssl x509 -req -days 365 -in demande-certif.csr -signkey cle-serveur.key -out cert-server.crt

On combine le certificat et la clé dans un même fichier.

cat cleserveur.key > server.pem && cat certserver.crt >> server.pem

On modifie les permissions.

chmod 0600 cert-server.crt cle-serveur.key server.pem

Ensuite je crée le fichier de configuration « stunnel.conf » dans /etc/stunnel/

« ; » signifie que c’est en commentaire, vous pouvez donc « fignoler » la configuration. Je n’ai pas tout traduit par paresse, mais c’est assez transparent.
Utilisez VI, ou nano, ou autre, selon vos habitudes, ici je vais utiliser nano

nano stunnel.conf

Ci-dessous mon fichier stunnel.conf

; **************************************************************************
; * Options générales                                                         *
; **************************************************************************
; Il est recommandé de changer les privilèges utilisateur et groupe
;setuid = stunnel4
;setgid = stunnel4
; un chroot pour un peu plus de sécurité
;chroot = /var/lib/stunnel4/
; Le fichier PID sera créé dans le chroot
;pid = /var/run/stunnel.pid
; Utile de mettre dans les logs pour suivre en cas de bug
foreground = yes
debug = info
output = /var/log/stunnel4/stunnel.log
; Enable FIPS 140-2 mode if needed for compliance
;fips = yes
; **************************************************************************
; * Service defaults may also be specified in individual service sections  *
; **************************************************************************
; Enable support for the insecure SSLv3 protocol
options = -NO_SSLv3
; These options provide additional security at some performance degradation
options = SINGLE_ECDH_USE
options = SINGLE_DH_USE
; **************************************************************************
; * Include all configuration file fragments from the specified folder     *
; **************************************************************************
;include = /etc/stunnel/conf.d
; **************************************************************************
; * Service definitions (remove all services for inetd mode)               *
; **************************************************************************
[geneweb]
accept = 22317
connect = 2317
cert=/etc/stunnel/server.pem
key=/etc/stunnel/cle-serveur.key

On modifie l’utilisateur et le groupe.

cd ..
chown -Rf stunnel4:stunnel4 stunnel/

Maintenant nous allons activer stunnel

nano /etc/default/stunnel4

Modifiez l’option suivante comme ci-dessous :

ENABLED=1

On redémarre Stunnel

/etc/init.d/stunnel4 stop
/etc/init.d/stunnel4 start

ou plus simplement

/etc/init.d/stunnel4 restart

Connexion à Geneweb en https

Sur cette exemple vous pourrez vous connecter sur Geneweb en https avec l’adresse suivante sur votre navigateur:
https://www.votre-verveur.fr:22317

Si vous utilisez iptables ou autre pare-feux, n’oubliez pas de le modifier et/ou si vous êtes auto-hébergé modifiez aussi la redirection de ports sur votre box….

Si vous avez déjà des certificats Let’s Encrypt, je pense que vous pouvez les utiliser en modifiant le fichier stunnel.conf, j’avoue ne pas avoir creusé la question puisque j’informe ceux que j’autorise à se connecter qu’ils doivent accepter le certificat lors du message d’alerte de leur navigateur.

https sous Apache – Même à l’école je n’ai jamais eu un A

https sur serveur Ubuntu facile

Depuis fin décembre le blog est enfin en accès https… Je devais le faire aux vacances de Pâques 2016, j’avais repoussé à juillet, puis aux vacances de la Toussaint.

Oui, je suis un fervent adepte de la procrastination, je suis de ceux qui remettent au sur-lendemain dans l’espoir qu’un autre le fera demain. Mais là, je dois me rendre à l’évidence, jamais personne ne le fera à ma place. Je l’ai donc fait entre Noël et le Jour de l’An.

Une fois fini, je fais un petit test sur SSL Server Test… Et là, j’ai un A!
Certains diront, et à raison, Let’s Encrypt c’est pas non plus le top du top… Ok, mais m@rd@ alors! P#tain j’ai un A! Même à l’école j’ai jamais eu un A, alors laissez-moi savourer ce A.
Je vous mets la capture d’écran pour me la péter vous montrer et ensuite on passe à la configuration.

Résultat d'audit SSL affichant une note globale « A » avec des scores élevés pour le certificat, le support de protocole, l'échange de clés et la force de chiffrement.
Un serveur Apache sécurisé avec Let’s Encrypt obtient la note « A » au test SSL de Qualys SSL Labs.

Ubuntu server 16.04 sous apache

https sous apaches avec Let’s Encrypt

Je commence par installer « git » sur /opt/

sudo -s
apt-get install git
git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt --depth=1

→ « sudo -s » Je ne sais pas combien de sudo je vais devoir taper, sans doute plus de trois, alors « sudo -s »
→ « –depth=1 » Je ne souhaite pas récupérer tout l’historique du site.

Générer les certificats

/opt/letsencrypt/letsencrypt-auto --apache -d domaine.fr -d www.domaine.fr

Si vous avez plusieurs domaines, sinon vous pouvez faire simplement:

/opt/letsencrypt/letsencrypt-auto

Configurer le VirtualHost pour l’accès https

Allez dans /etc/apache2/sites-available et modifier les VirtualHost

cd /etc/apache2/sites-available
nano votredomaineSSL.fr

La configuration que j’ai mise

<VirtualHost *:443>
   ...
      SSLProtocol -ALL -SSLv3 +TLSv1 +TLSv1.1 +TLSv1.2
      SSLHonorCipherOrder On
      SSLCipherSuite ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS

      SSLEngine on
      SSLCertificateFile /etc/letsencrypt/live/domaine.fr /fullchain.pem
      SSLCertificateKeyFile /etc/letsencrypt/live/domaine.fr /privkey.pem
   ...
</VirtualHost>

Configurer le VirtualHost http pour une redirection https

cd /etc/apache2/sites-available
nano votredomaine.fr

La configuration que j’ai mise

<VirtualHost *:80>
...
      RewriteEngine on
      RewriteRule ^ https://www.chispa.fr%{REQUEST_URI} [L,QSA,R=permanent]
...
</VirtualHost>

Renouvellement du certificat

ATTENTION, le certificat n’est valable que 90 jours. On peut le renouveler avec la commande:

/opt/letsencrypt/letsencrypt-auto --apache --renew-by-default -d domaine.fr -d www.domaine.fr

Le mieux est de rendre automatique le renouvellement, heureusement Erika Heidi a créer un script pour nous, il s’agit de le-renew.sh
Je l’ai récupéré, rendu exécutable et mis dans la crontab

curl -L -o /usr/local/sbin/le-renew http://do.co/le-renew
chmod +x /usr/local/sbin/le-renew
crontab -e
0 6 * * 1 /usr/local/sbin/le-renew domaine.fr >> /var/log/le-renew.log

Chaque lundi à 6:00, la validité du certificat en question sera vérifié, s’il est toujours valable, au cas contraire il demandera le renouvellement.

Bon, normalement en bon « copiteur » vous aurez un A, et si en plus vous améliorez, je ne vous en parle même pas! Un A+ ou A++.