Article original : How a simple cron job can save you from a ransomware attack

Nous sommes en 2019, et les ransomwares sont devenus une réalité.

Les systèmes qui interagissent avec le public, comme les entreprises, les institutions éducatives et les services publics, sont les plus vulnérables. Bien que les méthodes de livraison des ransomwares varient, allant du monde physique à la communication via les réseaux sociaux et les emails, toutes les méthodes ne nécessitent qu'une seule personne pour commettre une erreur afin que le ransomware se prolifère.

Le ransomware, comme vous l'avez peut-être entendu, est un programme malveillant qui chiffrera vos fichiers, les rendant illisibles et inutilisables pour vous. Il peut inclure des instructions pour payer une rançon, généralement en envoyant de la cryptomonnaie, afin d'obtenir la clé de déchiffrement.

Les attaques de ransomware réussies exploitent généralement des systèmes vitaux et sensibles au temps. Les victimes comme les services publics et les établissements médicaux sont plus susceptibles d'avoir des processus de récupération médiocres ou inexistants, laissant les gouvernements ou les assureurs récompenser les attaquants par des paiements de rançon.

Les particuliers, surtout ceux qui ne sont pas très à l'aise avec la technologie, ne sont pas moins à risque. Le ransomware peut obscurcir des documents personnels et des photos de famille qui peuvent n'exister que sur une seule machine.

Heureusement, une solution relativement basique existe pour rendre le ransomware inefficace : sauvegardez vos données !

Vous pourriez y parvenir avec un système simple comme brancher un disque dur externe et glisser-déposer les fichiers une fois par jour, mais cette méthode présente quelques obstacles. Le transfert manuel de fichiers peut être lent ou incomplet, et de plus, vous devrez d'abord vous souvenir de le faire.

Utilisez plutôt cron

Dans ma quête constante d'automatiser toutes les choses, il y a un outil auquel je reviens souvent pour sa simplicité et sa fiabilité : cron. Cron fait une chose, et il le fait bien : il exécute des commandes selon un calendrier.

Je l'ai utilisé pour la première fois il y a quelques mois de trois ans (Est-ce que je blogue vraiment depuis si longtemps ?!) pour créer des notifications de bureau personnalisées sur Linux. En utilisant le fichier de configuration crontab, que vous pouvez éditer en exécutant crontab -e, vous pouvez spécifier un calendrier pour exécuter les commandes de votre choix. Voici à quoi ressemble la syntaxe de planification, extraite de la page Wikipedia sur cron :

#  minute (0 - 59)
#   heure (0 - 23)
#    jour du mois (1 - 31)
#     mois (1 - 12)
#      jour de la semaine (0 - 6) 
#     
#     
#     
# * * * * * commande à exécuter

Par exemple, une tâche cron qui s'exécute tous les jours à 00:00 ressemblerait à ceci :

0 0 * * *

Pour exécuter une tâche toutes les douze heures, la syntaxe est :

0 */12 * * *

Cet excellent outil peut vous aider à comprendre la syntaxe de planification de cron.

Qu'a à voir un planificateur avec la sauvegarde ? En soi, pas grand-chose. La beauté simple de cron est qu'il exécute des commandes - n'importe quelles commandes shell, et n'importe quels scripts que vous exécuteriez normalement sur la ligne de commande. Comme vous l'avez peut-être compris à partir de mes autres articles, je suis fermement convaincu que vous pouvez faire à peu près n'importe quoi sur la ligne de commande, y compris sauvegarder vos fichiers. Les options de stockage dans ce domaine sont nombreuses, allant des options locales et cloud presque gratuites, ainsi que des services gérés payants trop nombreux à énumérer. Pour les outils CLI, nous avons des classiques utilitaires comme rsync, et des outils CLI pour des fournisseurs cloud spécifiques comme AWS.

Sauvegarde avec rsync

L'utilitaire rsync est un choix classique, et peut sauvegarder vos fichiers sur un disque dur externe ou un serveur distant tout en faisant des déterminations intelligentes sur les fichiers à mettre à jour. Il utilise la taille des fichiers et les temps de modification pour reconnaître les changements de fichiers, puis ne transfère que les fichiers modifiés, économisant ainsi du temps et de la bande passante.

La syntaxe de rsync peut être un peu nuancée ; par exemple, un slash final copiera uniquement le contenu du répertoire, au lieu du répertoire lui-même. J'ai trouvé que les exemples étaient utiles pour comprendre l'utilisation et la syntaxe.

En voici un pour sauvegarder un répertoire local vers une destination locale, comme un disque dur externe :

rsync -a /home/user/directory /media/user/destination

Le premier argument est la source, et le second est la destination. Inverser ceux-ci dans l'exemple ci-dessus copierait les fichiers du disque monté vers le répertoire local.

Le drapeau a pour le mode archive est l'un des superpouvoirs de rsync. Équivalent aux drapeaux -rlptgoD, il :

  • Synchronise les fichiers de manière récursive à travers les répertoires (r) ;
  • Préserve les liens symboliques (l), les permissions (p), les temps de modification (t), les groupes (g), et le propriétaire (o) ; et
  • Copie les fichiers de périphérique et les fichiers spéciaux (D).

En voici un autre exemple, cette fois pour sauvegarder le contenu d'un répertoire local vers un répertoire sur un serveur distant en utilisant SSH :

rsync -avze ssh /home/user/directory/ user@remote.host.net:home/user/directory

Le drapeau v active la sortie verbeuse, ce qui est utile si vous aimez les retours en temps réel sur les fichiers qui sont transférés. Cependant, lors de grands transferts, cela peut tendre à ralentir les choses. Le drapeau z peut aider avec cela, car il indique que les fichiers doivent être compressés pendant le transfert.

Le drapeau e, suivi de ssh, indique à rsync d'utiliser SSH selon les instructions de destination fournies dans le dernier argument.

Sauvegarde avec AWS CLI

Amazon Web Services offre un outil d'interface de ligne de commande pour faire à peu près tout avec votre configuration AWS, y compris une commande s3 sync simple pour copier de manière récursive les nouveaux fichiers et ceux mis à jour vers vos buckets de stockage S3. En tant que méthode de stockage pour les données de sauvegarde, S3 est un choix stable et peu coûteux.

La syntaxe pour interagir avec les répertoires est assez simple, et vous pouvez directement indiquer votre bucket S3 comme argument S3Uri sous la forme s3://mybucket/mykey. Pour sauvegarder un répertoire local vers votre bucket S3, la commande est :

aws s3 sync /home/user/directory s3://mybucket

Similaire à rsync, inverser la source et la destination téléchargerait les fichiers depuis le bucket S3.

La commande sync est intuitive par défaut. Elle devinera le type mime des fichiers téléchargés, ainsi que l'inclusion des fichiers découverts en suivant les liens symboliques. Une variété d'options existe pour contrôler ces paramètres par défaut et d'autres, incluant même des drapeaux pour spécifier le chiffrement côté serveur à utiliser.

Configuration de votre sauvegarde cron

Vous pouvez éditer le fichier cron de votre machine en exécutant :

crontab -e

Intuitif qu'il soit, il est bon de mentionner que vos commandes de sauvegarde ne s'exécuteront que lorsque votre ordinateur sera allumé et que le démon cron sera en cours d'exécution. Avec cela en tête, choisissez un calendrier pour votre tâche cron qui correspond aux moments où votre machine est allumée, et peut-être pas surchargée par d'autres travaux.

Pour sauvegarder vers un bucket S3 tous les jours à 8h, par exemple, vous ajouteriez une ligne dans votre crontab qui ressemble à ceci :

0 8 * * * aws s3 sync /home/user/directory s3://mybucket

Si vous êtes curieux de savoir si votre tâche cron est actuellement en cours d'exécution, trouvez le PID de cron avec :

pstree -ap | grep cron

Puis exécutez pstree -ap <PID>.

Ce terrier de lapin va plus profond ; une recherche rapide peut révéler différentes façons d'organiser et de planifier les tâches cron, ou vous aider à trouver différents utilitaires pour exécuter des tâches cron lorsque votre ordinateur est en veille. Pour se protéger contre la possibilité que des fichiers affectés par un ransomware soient transférés vers votre sauvegarde, des archives séparées de manière incrémentielle sont une bonne idée. En essence, cependant, cette configuration de base est tout ce dont vous avez vraiment besoin pour créer un système de sauvegarde automatique et fiable.

Ne nourrissez pas les trolls

Les humains sont faillibles ; c'est pourquoi les cyberattaques fonctionnent. Le succès d'une attaque par ransomware dépend du fait que la victime n'ait pas d'autre choix que de payer pour revenir à la normale.

Une sauvegarde récente et hautement accessible sape les attaquants qui dépendent de notre manque de préparation. En effaçant un système et en restaurant à partir de la sauvegarde de la veille, nous pouvons perdre une journée de progrès ; les rançonneurs, cependant, ne gagnent rien du tout.

Pour des ressources supplémentaires sur la défense contre les ransomwares pour les utilisateurs et les organisations, consultez les conseils de la CISA sur les ransomwares.