Ce tutoriel a pour but de fournir un guide basique dans une première étape de la protection d'un système GNU/Linux. Avant toute chose prendre le temps d'abord de bien lire l'article sur les façons d'améliorer son hygiène numérique, notamment la partie sur les antivirus / malwares afin de bien appréhender le sujet au préalable.
Des sauvegardes régulières sont indispensables pour protéger vos données.
Un article dédié vous montrera comment mettre en place des sauvegardes automatisées en utilisant les outils
Déjà-Dup
etTimeshift
.
Cette partie concerne le filtrage réseau que vous pouvez activer sur votre machine : le mécanisme utilisé dans ce cas-là est appelé un pare-feu ("firewall" en anglais), mécanisme qui analyse les flux (requêtes) entrants et sortants d'une machine.
Un pare-feu sur une distribution GNU/Linux ou BSD orienté bureau est, cela dit, facultatif (c'est moins vrai sur des machines de type serveur), de par la nature même du système Linux et du type de requêtes.
Egalement, les pare-feux Windows et Linux sont deux mécanismes bien différents.
Si toutefois, vous préférez en activer un, voici la démarche : nous prendrons comme pare-feu le très connu UFW (Uncomplicated FireWall) et son interface graphique GUFW.
S'il n'est pas déjà installé (il l'est sur Linux Mint par exemple) :
Ou autres distributions basées sur Ubuntu ou Debian :
apt install gufw
Ou autres distributions basées sur Arch :
pacman -S gufw
Sur les distributions basées sur Redhat, un firewall firewalld
est déjà installé et activé par défaut. Nous suggérons de laisser ce pare-feu par défaut et de vous documenter sur son fonctionnement sur leur documentation ou bien leur wiki.
Sur les distributions OpenSuse, un firewall firewalld
est déjà installé et activé par défaut. Nous suggérons de laisser ce pare-feu par défaut et de vous documenter sur son fonctionnement sur leur documentation ou bien leur wiki.
Ouvrez l'application GUFW. Nous allons l'activer tout simplement comme suit :
Cliquez sur le slider en face de "Activer". Patientez quelques secondes, vous obtenez alors ceci :
Voilà votre pare-feu est en place.
Evidemment, si vous installez un service avec lequel vous aurez besoin de discuter sur cette machine (par exemple syncthing), il faudra probablement ouvrir quelques ports sur ce pare-feu.
Nous avons ici l'exemple de l'ouverture des ports 80 et 443 sur votre machine.
Vous devrez adapter le numéro de port à vos besoins...
Dans cette partie, vous apprendrez à installer et utiliser 2 types d'outils :
Puis nous expliquerons la marche à suivre si vous obtenez des résultats positifs.
Retenez bien que ces outils sont généralement utilisés dans le cadre d'une analyse post-infection, c'est-à-dire si nous avons détecté une activité suspicieuse. Les résultats donnés par ces outils peuvent dérouter au premier abord, mais ceux-ci sont (très) souvent des "faux-positifs".
Cela dit, il n'est pas interdit non plus d'utiliser ces outils de temps en temps, mais ils ne doivent pas vous faire oublier que rien ne remplace une bonne hygiène numérique et que les résultats doivent être pris avec recul !
Clam Anti-Virus n'est ni plus ni moins qu'un anti-malware multi-plateformes et surtout open-source. À l'origine développé pour Unix, et petit à petit adapté pour tous les systèmes (y compris BSD, Solaris...).
ClamTk est une interface utilisateur ("frontend" en anglais) se basant sur ClamAV pour Linux et BSD. Il permet donc d'interagir avec ClamAV non plus en ligne de commandes mais avec une interface graphique.
Note : ClamTk n'est plus maintenu depuis fin 2023. ClamTk étant uniquement une interface graphique pour ClamAV, il faudra le remplacer par un autre outil. Wikilibriste est en cours d'analyse pour tester un potentiel remplaçant.
Néanmoins, ClamAV fonctionne toujours, mais en ligne de commande !
Une fonctionnalité existe pour Linux afin de lancer un "démon" et avoir une protection temps réel comme sur les autres anti-virus du marché :
clamav-daemon
. Deux contre-indications, cela dit, pour cette fonctionnalité :
~~ si votre modèle implique anonymat et sécurité renforcée, vous ne devriez pas opter pour cette fonctionnalité, je vous renvoie à l'article sur l'hygiène numérique.
~~ en utilisant cette fonction, vous occupez de la mémoire. Si votre mémoire n'est pas très élevée (par ex. vous avez 8GB de RAM), cela peut inutilement occuper de la place et ralentir la machine. En contrepartie, effectuer un scan sera potentiellement plus rapide sur la machine si déjà en mémoire.
Dans la suite, nous ne proposerons donc pas l'installation du démon.
Pour ce faire, ouvrez un terminal (sur certaines distributions, l'appui sur SUPER + T le permet), sinon positionnez-vous sur le bureau, clic droit, et "ouvrir dans terminal" :
Ou autres distributions basées sur Ubuntu ou Debian :
apt install clamav
Ou autres distributions basées sur Arch :
pacman -S clamav
Ou autres distributions basées sur Redhat :
dnf install clamav
Ou autres distributions basées sur OpenSuse :
zypper install clamav
Avant tout scan, prenez soin de mettre à jour l'application et la base de données des signatures :
sudo systemctl stop clamav-freshclam
sudo freshclam
sudo systemctl start clamav-freshclam
Puis nous pouvons lancer le scan, en utilisant la ligne de commandes, comme suit :
sudo clamscan -i -r /
sudo clamscan -i -r /home/user/Téléchargements/
Se référer à le documentation ClamAV pour de plus amples détails : ClamAV Documentation.
Voilà vous devriez avoir un résultat. S'il est positif (c'est-à-dire si vous avez des fichiers infectés, rendez-vous en bas du tutoriel).
Chkrootkit est un logiciel de scan de logiciels espions sur votre machine Linux, nommés rootkits.
Ou autres distributions basées sur Ubuntu ou Debian :
sudo apt install curl
Ou autres distributions basées sur Arch :
sudo pacman -S curl
Ou autres distributions basées sur Redhat :
sudo dnf install curl
Ou autres distributions basées sur OpenSuse :
sudo zypper install curl
Malheureusement, la majorité des distributions ne possèdent pas la dernière version, la plus à jour, de l'outil. C'est pourquoi il va être important d'utiliser la ligne de commandes.
Nous allons nous baser sur la dernière version à l'heure où nous écrivons cet article, à savoir la version 0.57.
Dans la suite, vous verrez apparaître un répertoirechkrootkit-0.57
, qui contient donc cette même version 0.57. Bien entendu, vous devrez donc remplacer ces chiffres par votre version.
Nous allons nous placer dans le répertoire Téléchargements
(ou Downloads
sur certaines distributions) et installer l'outil :
cd ~/Téléchargements
curl --remote-name ftp://chkrootkit.org/pub/seg/pac/chkrootkit.tar.gz
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 41948 100 41948 0 0 10429 0 0:00:04 0:00:04 --:--:-- 10429
curl --remote-name ftp://chkrootkit.org/pub/seg/pac/chkrootkit.md5
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 52 100 52 0 0 14 0 0:00:03 0:00:03 --:--:-- 14
Après avoir téléchargé les 2 fichiers, nous vérifions l'intégrité :
cat chkrootkit.md5
80320d609bc732ac074262f4c2937447 chkrootkit.tar.gz
md5sum chkrootkit.tar.gz
80320d609bc732ac074262f4c2937447 chkrootkit.tar.gz
Ensuite :
tar xvzf chkrootkit.tar.gz
chkrootkit-0.57/ACKNOWLEDGMENTS
chkrootkit-0.57/check_wtmpx.c
chkrootkit-0.57/chkdirs.c
chkrootkit-0.57/chklastlog.c
chkrootkit-0.57/chkproc.c
chkrootkit-0.57/chkrootkit
chkrootkit-0.57/chkrootkit.lsm
chkrootkit-0.57/chkutmp.c
chkrootkit-0.57/chkwtmp.c
chkrootkit-0.57/COPYRIGHT
chkrootkit-0.57/ifpromisc.c
chkrootkit-0.57/Makefile
chkrootkit-0.57/README
chkrootkit-0.57/README.chklastlog
chkrootkit-0.57/README.chkwtmp
chkrootkit-0.57/strings.c
cd chkrootkit-0.57
make sense
cc -DHAVE_LASTLOG_H -o chklastlog chklastlog.c
cc -DHAVE_LASTLOG_H -o chkwtmp chkwtmp.c
cc -DHAVE_LASTLOG_H -D_FILE_OFFSET_BITS=64 -o ifpromisc ifpromisc.c
cc -o chkproc chkproc.c
cc -o chkdirs chkdirs.c
cc -o check_wtmpx check_wtmpx.c
cc -static -o strings-static strings.c
cc -o chkutmp chkutmp.c
Afin de lancer un scan de la machine, lancez simplement la commande suivante dans le répertoire où les fichiers ont été décompressés (~/Téléchargements/chkrootkit-0.57
):
sudo ./chkrootkit
ROOTDIR is `/'
Checking `amd'... not found
Checking `basename'... not infected
Checking `biff'... not found
[...]
Checking `z2'... user user deleted or never logged from lastlog!
Checking `chkutmp'... The tty of the following user process(es) were not found
in /var/run/utmp !
! RUID PID TTY CMD
! user 1865 pts/0 bash
! user 2616 pts/0 sudo ./chkrootkit
chkutmp: nothing deleted
Checking `OSX_RSPLUG'... not tested
Une centaine de lignes apparaissent avec un statut. Visualisez ces lignes, et repérez les statuts à "INFECTED" ;
RkHunter est un second logiciel de scan de rootkits sur votre machine Linux.
Certaines distributions (notamment Arch) proposent l'application RkHunter dans leur logithèque, vous pouvez donc passer par celle-ci afin d'installer l'outil (il est cependant probable que ce ne soit pas la toute dernière version, dans ce cas, peut-être voudriez-vous privilégier la ligne de commandes).
Si votre logithèque ne vous propose pas ce logiciel, il sera donc nécessaire de passer en lignes de commandes :
Ou autres distributions basées sur Ubuntu ou Debian :
sudo apt install rkhunter perl
Ou autres distributions basées sur Arch :
sudo pacman -S rkhunter perl
Ou autres distributions basées sur Redhat :
sudo dnf install rkhunter perl
Ou autres distributions basées sur OpenSuse :
sudo zypper install rkhunter perl
Le premier scan doit obligatoirement se faire manuellement, sur une installation clean (juste après l'installation de la distribution par exemple).
Lancez les commandes suivantes :
sudo -i
rkhunter --propupd
nano /etc/rkhunter.conf
Un éditeur de texte se lance. Il va nous falloir modifier quelques lignes dans ce fichier (naviguer avec les touches HAUT, BAS) :
MIRRORS_MODE=1
à modifier en MIRRORS_MODE=0
UPDATE_MIRRORS=0
à modifier en UPDATE_MIRRORS=1
WEB_CMD="/bin/false"
à modifier en WEB_CMD=""
DISABLE_TESTS=suspscan hidden_ports hidden_procs deleted_files packet_cap_apps apps
à modifier en DISABLE_TESTS=suspscan deleted_files packet_cap_apps
Afin de quitter et enregistrer : CTRL + X, puis la touche O (O pour Oui) pour confirmer l'enregistrement (ou Y si vous êtes anglais ), puis ENTREE pour valider.
Nous pouvons ensuite mettre à jour puis lancer le scan :
rkhunter --update
rkhunter -c -sk
L'analyse prend entre quelques minutes et plusieurs dizaines de minutes, selon votre machine, donc cela peut être assez long.
Généralement, le premier scan est une étape obligatoire afin de configurer convenablement l'outil, et qu'il n'évite de vous remonter des avertissements inutiles. Vous trouverez ici une piste afin de comprendre et contourner ces avertissements.
Sur une distribution vierge, tous les résultats positifs doivent être vus comme des "faux-positifs" (nous revenons sur cette notion plus loin), et à ce titre traités comme ce qui suit...
Deux exemples :
lwp-request
. Allons jeter un oeil dans le fichier journal qu'il a créé, généralement présent ici /var/log/rkhunter.log
(attention, ce fichier doit s'ouvrir avec des droits administrateur). Ce rapport nous présente l'avertissement avec plus de détails. Voici les lignes en question :[...]
[15:48:50] /usr/bin/lwp-request [ Warning ]
[15:48:50] Warning: The command '/usr/bin/lwp-request' has been replaced by a script: /usr/bin/lwp-request: Perl script text executable
[...]
Après un rapide tour sur internet afin de savoir ce que lwp-request
avait à nous raconter, il s'avère que ce fichier doit être placé sur liste blanche dans l'outil, afin qu'il ne lève pas ce faux-positif à chaque fois. Pour ce faire nous allons modifier de nouveau le fichier de configuration /etc/rkhunter.conf
, en décommentant la ligne ci-dessous, qui est en fait déjà présente dans ce fichier (!!) :
AVANT :
#SCRIPTWHITELIST=/usr/bin/lwp-request
APRES :
SCRIPTWHITELIST=/usr/bin/lwp-request
Note : pour décommenter une ligne, il suffit de supprimer le '#' en début de ligne.
Voilà, au prochain scan vous ne déclencherez plus d'avertissement sur ce fichier.
/etc/.java
. Tentons de refaire la même chose ; dans le rapport voici les lignes en avertissement :[...]
[15:52:37] Checking for hidden files and directories [ Warning ]
[15:52:37] Warning: Hidden directory found: /etc/.java
[...]
Un rapide tour sur internet (en copiant le message d'avertissement) pour s'apercevoir qu'ici encore, l'outil déclenche un faux positif sur ce répertoire ! Nous allons donc modifier de nouveau le fichier de configuration, et comme par magie, la ligne est déjà présente, mais elle est inactive (car commentée). Décommentez cette ligne :
ALLOWHIDDENDIR=/etc/.java
Puis pour prendre en compte cette modification, vous devrez mettre à jour la base (propupd
). Puis tentons un second scan pour vérifier :
sudo -i
rkhunter --propupd
rkhunter -c -sk
Très bien, notre outil ne déclenche plus de faux-positifs.
Il est recommandé d'effectuer un scan à chaque mise à jour importante de votre système, comme suite à une mise à jour du kernel.
Malgré l'optimisation des outils, il n'est pas impossible que ceux-ci vous présentent des alertes (avertissements) qui n'ont aucun impact sur le fonctionnement de votre machine et qui ne sont pas liées à une quelconque infection : on appelle cela des "faux-positifs", en gros des avertissements qui n'en sont pas tout à fait ; Il peut par exemple très bien s'agir d'un fichier que vous auriez modifié volontairement ou que votre gestionnaire de paquets aurait modifié (configuration), ou d'un exécutable tout à fait inoffensif, etc.
Il est donc important de bien séparer ces "faux positifs" des menaces qui peuvent être plus réelles.
Pour ce faire, suivant votre profil, voici nos conseils :
Si l'infection vous semble avérée, rendez-vous dans la prochaine section !
Dans le cas d'une infection a priori avérée, il sera nécessaire de faire une nouvelle réinstallation complète du système. Voici la procédure que vous devrez suivre :
Contributeur(s): Ayo, DyanZan, marmotte