Sauvegardes au quotidien – Rdiff-Backup et MySqlDump

rdiff-backup sauvegarde sima78J’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.

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

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

enregistr-005.png

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« 

enregistr-011.png

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 commandeJ’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

cowsay fortune bash shellMettre 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 unbuntu 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.

https Lets Encrypt apache.png
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++.

 

Effacer définitivement la mémoire ram et swap – secure-delete

effacer ram et swapsVous perdez votre ordinateur portable, vous êtes cambriolé et on vous vole votre PC… Vous avez chiffré vos disques ou partitions, c’est déjà une bonne protection pour vos données personnelles, contre l’usurpation d’identité et autres malveillances.

Poussez la protection un peu plus loin… Vous êtes paranoïaque, vous avez sans doute raison, quelqu’un d’aussi pointu que votre niveau de parano peut aller fouiller dans la RAM (mémoire vive), le swap, les clusters du/des disque(s)…

Quelques pistes.

« secure-delete » comporte quatre outils (SRM, SMEM, SFIL et SSWAP), ces outils font par défaut 38 passes sur un cluster…

smem (Secure Memory Wiper) supprime les données dans la RAM.

smem

sswap (Secure Free Space Wiper) permet de faire la même chose que smem mais pour le swap, voir plus bas sswap.

srm (Secure remove) permet de supprimer de manière sécurisée des fichiers ou des répertoires de vos disques durs de façon définitive… En effet avec la commande rm les données supprimées sont récupérables.

srm nom_du_fichier
ou
srm -r nom_du_répertoire

sfill (Secure Free Space Wiper) pour effacer toutes les traces conservées dans l’espace libre des disques durs sans formater les disques durs.

sfill /répertoire

Retour sur la commande sswap. Avant de l’utiliser, il faut démonter la partition swap.
Vous ne savez pas où elle se trouve :

sudo fdisk -l
(…)
Périphérique Amorçage     Start       Fin  Secteurs   Size Id Type
/dev/sda1                  2048 207077375 207075328  98,8G  7 HPFS/NTFS/exFAT
/dev/sda2             812548094 976771071 164222978  78,3G  5 Étendue
/dev/sda3    *        226609152 812546651 585937500 279,4G 83 Linux
/dev/sda5             812548096 970024959 157476864  75,1G 83 Linux
/dev/sda6             970027008 976771071   6744064   3,2G 82 partition d'échange Linux / Solaris
(...)

Dans notre exemple il s’agit de (/dev/sda6), à vous d’ajuster le « /dev/sdxx »
Ensuite, il faut la désactiver :

sudo swapoff /dev/sda6

Puis on peut nettoyer avec la commande sswap :

sudo sswap /dev/sda6

Pour finir, il faut réactiver le swap :

sudo swapon /dev/sda6

A vous de créer un script qui s’exécute à la fermeture de votre session… Bien sûr ; lisez les man(s) de chaque commande.
Pour la suppression de fichiers, vous pouvez aussi « creuser » du côté de la commande « shred« … Bref, à vous de vous approprier et de partager ! 😉

Calculer pi en ligne de commande sous linux

pi en ligne de commande bash sous linuxL’idée de départ, est de me créer un tee-shirt sur lequel il y aurait pi suivi de 311 décimales pour en faire un « truc » graphique.

Je passe sur l’aspect graphique souhaité, je vous montrerai peut-être une fois l’œuvre terminée…

Soit! C’est très futile, mais les futilités nous emmènent toujours vers des chemins imprévus, comme l’idée d’en faire un billet.

Bref! Pour ce graphisme, j’ai besoin de pi à 311 décimales derrière la virgule, soit 3,(311chiffres).
Ouvrons un terminal, certains dirons une console… et voici la ligne de commande bash avec le résultat:

echo « scale=311; 4*a(1) » | bc -l

$ echo "scale=311; 4*a(1)" | bc -l
3.141592653589793238462643383279502884197169399375105820974944592307\
81640628620899862803482534211706798214808651328230664709384460955058\
22317253594081284811174502841027019385211055596446229489549303819644\
28810975665933446128475648233786783165271201909145648566923460348610\
45432664821339360726024914127372458700660

Explications:

  • « echo » renvoie un affichage sur console (saisie, écriture, résultats)… Voir Initiation au shell (boucle for, do, done)
  • « scale=x » scale permet d’indiquer le nombre de chiffres après la virgule (remplacer x par le chiffre souhaité)
  • « 4*a(1) » a(1) se base sur la fonction Arc Tangente a(). Cette formule « 4*a(1) », permet entre autres, le calcul du nombre pi.
  • « | » «pipe» redirige le résultat d’une commande dans le flux d’entrée d’une autre commande. Ici la commande suivante sera « bc » qui est une commande de calculatrice «basic calculator»
  • « bc -l » récupère la formule « 4*a(1) » après le « pipe » pour effectuer le calcul. L’option « -l » utilise la librairie mathématique standard (Define the standard math library) qui utilise, entre autres, la fonction Arc Tangente a()… Voire « man bc »

Si l’on met à « scale » un nombre plus « gros », par exemple « 2000 » le temps de réponse est plus long, on peut « mesurer » le temps de réponse avec la commande « time », exemple:

time echo « scale=2000; 4*a(1) » | bc -l

$ time echo "scale=2000; 4*a(1)" | bc -l
3.141592653589793238462643383279502884197169399375105820974944592307\
81640628620899862803482534211706798214808651328230664709384460955058\
22317253594081284811174502841027019385211055596446229489549303819644\
(...)
74427862203919494504712371378696095636437191728746776465757396241389\
086583264599581339047802759008
real    0m2.470s
user    0m2.470s
sys    0m0.001s

Pas forcement utile au quotidien, donc nécessaire!

Décimales – Binaires – C’est simple

conversion binaires décimalesCela ne s’adresse pas aux informaticiens dont on peut supposer que cela n’a plus de secret pour eux. Certains me diront qu’il existe des sites pour faire les conversions…

Soit ! Le but est de comprendre et savoir le faire, d’autant plus que c’est très simple.

Prenons un chiffre binaire « 1 101 101 » que l’on souhaite convertir en un chiffre décimal. Commençons par écrire le chiffre binaire de façon verticale et inversée (le dernier chiffre en haut). On ajoute le signe multiplier « X » et en face, de haut vers le bas on met 2 puissance 0, puis deux puissance 1, puissance 2 et ainsi de suite jusqu’en bas.

On fait la multiplication. Reste plus qu’à additionner tous ces chiffre et on obtient sa valeur en décimales. Exemple ci-dessous :

1 = 1 X 2⁰ =     1
0 = 0 X 2¹ =     0
1 = 1 X 2² =     4
1 = 1 X 2³ =     8
0 = 0 X 2⁴ =     0
1 = 1 X 2⁵ =    32
1 = 1 X 2⁶ =    64
  ________________
Total          109

Maintenant faisons le travail inverse, convertir 315 en binaire. Deux solutions…

Solution 1 :
Chercher la plus grande puissance de 2 contenue dans 315 (2⁸ = 256, 2⁹ = 512) 2⁹ est trop grand, on prend donc 2⁸ la différence est de 59 (voir plus bas pour les puissances 2)
Donc 315 = 2⁸ + 59
La plus grande puissance (pgp) contenue dans 59 est 2⁵ (32) reste 27
315 = 2⁸ + 2⁵ + 27
La pgp contenue dans 27 est 2⁴ (16) reste 11
315 = 2⁸ + 2⁵ + 2⁴ + 11
La pgp contenue dans 11 est  2³ (8) reste 3
315 = 2⁸ + 2⁵ + 2⁴ + 2³ + 3
La pgp contenue dans 3 est 2¹ (2) reste 1 qui est égale 2⁰
315 = 2⁸ + 2⁵ + 2⁴ + 2³ + 2¹ + 2⁰
La transcription ce fait comme ci-dessous, les puissances absentes comptent pour 0

2⁸  2⁷  2⁶  2⁵  2⁴  2³  2²  2¹  2⁰
__________________________________
1   0   0   1   1   1   0   1   1

Soit : 100 111 011

Solution 2 :
Il suffit de diviser le nombre par 2, puis son résultat par 2 et ainsi de suite jusqu’à la dernière division.

conversion décimales binairesIl suffit de reprendre les chiffres dans le sens de la flèche ce qui fait 100 111 011

Puissances de 2 :

2¹           2
2²           4
2³           8
2⁴          16
2⁵          32
2⁶          64
2⁷         128
2⁸         256
2⁹         512
2¹⁰       1024
2¹¹       2048
2¹²       4096
2¹³       8192
2¹⁴      16384
2¹⁵      32768
2¹⁶      65536
2¹⁷     131072
2¹⁸     262144
2¹⁹     524288
2²⁰    1048576
2²¹    2097152
2²²    4194304