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

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>

Protéger vos données personnelles en milieu professionnel

Votre hygiène numérique et le milieu professionnel.

Un billet tiré d’une anecdote qui remonte à plus de six mois, une amie qui venait de démissionner m’appelle:

Sima mon chef de service m’a demandé le mot de passe de mon ordinateur, je lui ai donné… Le souci, c’est que j’ai un dossier personnel, rien de bien grave ni compromettant, mais tout de même personnel. Et puis sur mon navigateur j’ai des favoris vers lesquels mes logins et mots de passe sont enregistrés…

Cette situation peut également arriver lors d’un congé maladie d’un employé.Voyons la suite…

En effet, en milieu professionnel, pendant que certains font la pause clope, ou café, ou papotage avec les collègues, d’autres profitent de cette plage de détente pour aller sur les réseaux sociaux, forums, cloud, commander sur leur drive commercial, et autres achats, faire des courriers personnels, jouer…
Une situation normale, mais qui nécessite un minimum d’hygiène numérique.

Les règles simples d’hygiène numérique

– Sur votre ordinateur de travail, ce qui est personnel doit être contenu dans un dossier nommé « Privé ». S’en tenir qu’à ça, c’est avoir une confiance aveugle.

– Le mot de passe : il faut avoir un mot passe par application, donc le mot de passe de votre pc de travail devrait être unique. Ce n’est pas le cas, vous utiliser ce même mot passe pour d’autres applications (c’est pas bien), si votre disque dur (D.D.) n’est pas chiffré, vous n’êtes pas obligé de le donner. Un passage de votre ordinateur par le service informatique permettrait de récupérer les données facilement (dont votre dossier privé 🙁 ). Votre D.D. est chiffré, prenez le temps de vous déplacer et accédez à votre ordinateur devant votre employeur ou chef, et effacez votre dossier privé. Il en va de même pour vos mails privés.
Pour information: Cas des mails et dossiers personnels d’un salarié dans le système d’information mis à sa disposition par son employeur

– Les favoris de votre navigateur
En dehors du fait qu’ils attestent vos habitudes de navigation, si les sites nécessitent un login et mot de passe, ne jamais les enregistrer sur votre navigateur. Si c’est le cas, rendez-vous sur les sites en questions et modifiez les mots de passe, s’ils sont utilisés pour d’autres applications, faites de même sur les autres applications.

Quelques solutions

En plus des précautions ci-dessus, pour vos mots de passe utilisez un coffre-fort de mot passe. J’utilise Keepass, il existe sans doute d’autres utilitaires libres… Personnellement, j’ai deux bases de données Keepass, l’une pro l’autre perso.
Pour la navigation, je n’enregistre pas de favori personnel, donc ni login et ni mot de passe. On peut aller plus loin, si cela vous est possible, en installant Tor pour surfer sur le web ou surfer via un VPN, certains FAI en proposent.
Pour votre dossier privé, il existe la possibilité de créer un conteneur chiffré avec VeraCrypt.
Sur internet, vous trouverez de nombreux tutoriels sur Keepass et VeraCrypt.

Conclusion

Faites comme si demain vous ne pourrez pas vous rendre à votre bureau et que votre service doit accéder à vos dossiers professionnels, donc peut-être aussi à votre dossier privé, votre navigateur, etc.

Quelques pistes:
http://www.cil.cnrs.fr/CIL/spip.php?article1646
http://www.mcmillan.ca/Protection-des-donnees-personnelles-en-milieu-de-travail
http://www.cil.cnrs.fr/CIL/spip.php?article1471

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

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

Vous 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 ! 😉

Crypsetup – Chiffrer la partition var

chiffrer la partition var

ATTENTION! La partition « var/ » est solicitée très tôt au boot, la déplacer sans précaution sur une partition chiffrée, c’est vous assurer d’un plantage au démarrage… Sauvegardez et suivez les instructions sans sauter d’étape.

Partons d’un principe que vous ayez déjà une partition chiffrée nommée « d5 » sur laquelle vous souhaitez déplacer le dossier « var » et tout ce qui s’y trouve… Étape par étape…

Pour en savoir plus sur le chiffrement de données allez faire un tour du côté de chez Hoper que je remercie!
Chiffrement-Theorie
Chiffrement-Pratique

Donc c’est fait! Vous avez une partition chiffrée prête à accueillir votre dossier « /var/ »

Déplacer /var dans une partition chiffrée en 6 étapes

1 Créer un fichier « crypttab » dans /etc/
Mettre le nom de la partition chiffrée, le « /dev/XXX » Correspondant « none » et la méthode de chiffrement. Ici, nous prenons l’exemple qu’il s’agit du /dev/sda5… Recherchez votre « dev/ » avec la commande « sudo fdisk -l »:

# vi /etc/crypttab

Et mettre

d5   /dev/sda5    none     cipher=aes-xts-plain64,size=512

2 Rechercher UUID de la partition avec la commande « blkid »

# blkid
/dev/sda1: UUID="53ca7412-1ff7-105d-13fd-b15ab0d5" TYPE="ext4"
/dev/sda5: UUID="24fda933-44f3-30da-1947-3c4508af77ae" TYPE="swap"
/dev/mapper/d5: UUID="f254212d-9492-fab0-9220-4f5dad3c940a" TYPE="ext4"

Il s’agit de la 3ème ligne

3 Ouvrir le fichier « fstab » et rajouter à la fin:

UUID="f254212d-9492-fab0-9220-4f5dad3c940a" /var    ext4    defaults    0    0

Vérifier avec la commande df -h, vous devriez voir la ligne suivante dans la liste

# df -h
(…)
/dev/mapper/d5   650G    1,4G  382G   1% /var

Moi j’ai:
/dev/mapper/d5_unformatted   650G    1,4G  382G   1% /var
Mais ça marche très bien !

4 Vérifier les processus en cours

# ps -eaf | less

D’autres préférerons « more »

# ps -eaf | more

    Arrêter les bases de données et apaches… dans mon cas:

# /etc/init.d/mysql stop
# /etc/init.d/apache2 stop
# /etc/init.d/postgresql stop

Puis revérifier:

# ps -eaf | less

5 Copier le contenu de /var dans /d5

# cp -a /var/* /d5/

renommer le dossier /var pour pouvoir « faire marche arrière » en cas de problème.

# mv /var /var.old

6 C’est fini, on redémarre.
Seule contrainte, il faudra mettre un clavier et un écran sur le serveur qui demandera un mot de passe au moment de monter /var, donc à chaque reboot.

# reboot

LVM et cryptsetup partitioner et chiffrer un disque dur

J’ai mis ce billet dans la catégorie serveur, mais en réalité cela s’applique à n’importe quel PC

Vous venez d’installer un disque supplémentaire sur votre pc.

Vous souhaitez le partitionner avec LVM (logical volume management ou gestion par volumes logiques) puis chiffrer les partitions avec Cryptsetup.

Prenons ici un disque dur de 1To et que l’on souhaite faire deux partitions qu’on nommera « donnees » et « save »

Vérifier les disques montés, et éviter de se tromper de disque. 🙂
Deux commandes utiles
sudo fdisk -l
sudo df -h

Avant tout, connaître sur quel « dev » se trouve le nouveau disque.

sudo fdisk -l
(...)
Disk /dev/sdb: 1000.2 GB, 1000204886016 bytes
255 têtes, 63 secteurs/piste, 121601 cylindres, total 1953525168 secteurs
(...)
Le disque /dev/sdb ne contient pas une table de partitions valable
(...)

On commence par créer notre volume physique

sudo pvcreate /dev/sdb
  Physical volume "/dev/sdb" successfully created

Puis on crée le groupe de volume

sudo vgcreate mvg /dev/sdb
  Volume group "mvg" successfully created

Maintenant on crée les volumes logiques (nos nouvelles partitions) :

sudo lvcreate -n donnees -L 700g mvg
  Logical volume "donnees" created
sudo lvcreate -n save -L 300g mvg
  Volume group "mvg" has insufficient free space (59267 extents): 76800 required.

Houps ! lors de la création du 2ème volume, il n’y a pas assez de place…
Solution et explication:
Il se trouve qu’il ne reste pas 300 Go de disponible mais, comme il l’indique seulement 59267 « extends ».
La taille d’un extend dépend des paramétrages utilisés lors de la création de la configuration LVM.
Par défaut, il fait des extends de 4 Mo.
Il indique donc très justement que pour créer un volume de 300 Go, il te faudrait 59267 « bouts » de 4 Mo.
Volume group « mvg » has insufficient free space (59267 extents): 76800
Pour utiliser tout l’espace restant, le plus simple est de lui indiquer une taille en extend, dans ce cas :

sudo lvcreate -n save -l 59267 mvg

Notez bien que ce n’est plus -L (taille) mais -l (extend), le petit l permet d’indiquer une taille directement en nombre d’extend, et pas en Mo/Go/To etc. »

Là le disque dur sous LVM est opérationnel…. Le chiffrage est un plus…

Maintenant je souhaite chiffrer les 2 partions créées, puis les monter respectivement dans « /mnt/donnees » et « /mnt/save »
Dans l’ordre: on se rend sur le répertoire /mnt, puis on crée les 2 répertoires (donnees et save).

cd /mnt
sudo mkdir donnees
sudo mkdir save

On chiffre les partitions avec cryptsetup, on y mets un type de fichier (là ext4) puis on les montes.

sudo cryptsetup -y --cipher=aes-xts-plain64 -s 512 create don /dev/mvg/donnees
sudo mkfs -t ext4 /dev/mapper/don
sudo mount /dev/mapper/don /mnt/donnees
sudo cryptsetup -y --cipher=aes-xts-plain64 -s 512 create sav /dev/mvg/save
sudo mkfs -t ext4 /dev/mapper/sav
sudo mount /dev/mapper/sav /mnt/save

Et voilà, c’est fini !

Pour « démonter » les volumes.

sudo umount /mnt/donnees
sudo cryptsetup remove don
sudo umount /mnt/save
sudo cryptsetup remove sav

Pour y accéder par la suite, à chaque démarrage il faudra taper les commandes suivantes:

sudo cryptsetup --cipher=aes-xts-plain64 -s 512 create don /dev/mvg/donnees
sudo mount /dev/mapper/don /mnt/donnees
sudo cryptsetup --cipher=aes-xts-plain64 -s 512 create sav /dev/mvg/save
sudo mount /dev/mapper/sav /mnt/save

Pour aller plus loin:
4 billets sur LVM et 2 sur le chiffrage sur le site Hoper sur l’onglet « Partage de connaissances »

GnuPG – Signature électronique – chiffrer ses mails et pièces jointes

Chiffrer et déchiffrer des mails avec GnuPG
Le but de ce billet n’est pas d’être un tutoriel GnuPG (pour cela, je donnerai, plus bas, plusieurs liens) mais plutôt d’essayer d’expliquer le principe de la signature électronique et de chiffrage avec GnuPG.

Bref ! Une initiation pour débutant en m’appuyant sur une présentation que j’avais fait, vous trouverez plus bas la présentation à télécharger.

À savoir!
Lorsque vous envoyez un courriel (mail), c’est comme si vous envoyez une carte postale. Il peut être lu par tout le monde et rien ne certifie l’expéditeur (pas même l’adresse mail de l’expéditeur sur l’en-tête du message, hé oui… Mais ce sera peut-être le sujet d’un autre billet). Imaginez s’il s’agit d’un courriel confidentiel… Il ne vous viendrait pas à l’idée d’envoyer une chaude déclaration d’amour par carte postale…

En utilisant régulièrement GnuPG (GPG) ou PGP, vous pourrez signer vos messages, vérifier les signatures des courriers que vous recevrez, envoyer des messages chiffrés… D’accord, mais comment ça fonctionne?

Les principes du chiffrage de mails, ce qu’est une signature électronique, chiffrer ses mails, pièces jointes… Chiffrer des fichiers pour soi… Alors lisez la suite…

Les bases du fonctionnement des échanges de mails chiffrés avec GnuPG.

Billets de présentation sur le site de Root66.net « Chiffrer n’est pas jouer !!! »
Fichier téléchargeable au format pdf : Initiation à GnuPG en pdf

Tout ce fait par messagerie, sauf le chiffrage et déchiffrage de fichier, alors, juste deux commandes de base

Pour chiffrer un fichier

$ gpg --output mon-fichier.odt.gpg --encrypt --recipient monmail@fai.fr mon-fichier.odt

–output est la sortie du fichier chiffré qui se nommera mon-fichier.odt.gpg dans cet exemple
–encrypt pour le chiffrage
–recipient monmail@fai.fr pour le choix de la clé publique pour chiffrer un fichier, si c’est pour soi, c’est notre clé publique:-), nom du fichier chiffré dans cet exemeple mon-fichier.odt

Pour déchiffrer un fichier

$ gpg --output mon-fichier.odt –decrypt mon-fichier.odt.gpg

Le mot de passe de votre clé privée sera demandé !
–output est la sortie du fichier déchiffré qui se nommera mon-fichier.odt dans cet exemple
–decrypt pour déchiffrer le fichier mon-fichier.odt.gpg

Les liens pour aller plus loin :
Mini Howto en Français, mini mais il fait déjà le maximum.
GnuPG, Download, documentation etc. sur le site officiel
Ma première clé PGP, expérience de GuiGui’s show sous forme d’un tutoriel assez complet et allant à l’essentiel.
Ce qu’est Gnupg sur Wikipédia.