Le respect de l'administrateur

C'est quoi ?

J'entends par là que l'administrateur (l'utilisateur root) est fait pour administrer votre système : installer des nouveaux programmes, lancer et arrêter des services, modifier les configurations système, ... Il est impératif que vous n'utilisiez pas le root en permanence. Utilisez un compte séparé pour lire vos courriels, naviguer sur l'internet, écouter de la musique, regarder des vidéos, retoucher vos photos, bref...

Pourquoi ?

Prenons un exemple simple : si l'un des fichiers avec lesquels vous travaillez contient un virus, ce dernier ne pourra pas faire plus de dégâts à votre système que vous pourriez en faire avec l'utilisateur qui accède au fichier. En tant que simple utilisateur vous pouvez changer vos préférences personnelles (affichage, fond d'écran, ...) et supprimer vos documents, c'est tout. En tant que root vous pouvez détruire intégralement votre PC car l'administrateur "peut tout faire".

Que faire ?

Les utilisateurs d'Ubuntu (et dérivés) ne sont pas concernés pas ce problème car par défaut ils ne connaissent pas le mot de passe du compte root. Un autre mécanisme (le sudo[1]) leur permet occasionnellement de lancer une application avec les même droits que l'administrateur. Certaines distributions (Slackware, Gentoo, ...) il n'existe pas de compte pour l'utilisateur par défaut et il faut donc le créer (avec useradd).

Les mises-à-jour régulières

Pourquoi ?

Tout programme informatique contient des bogues. Certains de ces "comportement imprévus" créent des failles de sécurité (c'est-à-dire par exemple peuvent permettre à un pirate informatique ou à un virus d'exécuter d'autres programmes). Contrairement à certains systèmes d'exploitation propriétaires, sur Linux, grâce au principe du logiciel libre (Open Source) mais aussi à des groupes spécialisés dans les analyses de sécurité, ces failles sont souvent (toujours) rapidement corrigées. Pour qu'elles soient effectives sur votre ordinateur il faut donc mettre vos logiciels régulièrement à jour.

Que faire alors ?

Les utilisateurs d'Ubuntu ont la chance d'avoir une jolie appliquette (un applet pour les anglophones ;) ) qui prévient lors de mises-à-jour. Sur Debian et tous ses dérivées (dont Ubuntu, Kubuntu, ...) taper sudo apt-get update puis sudo apt-get upgrade mets le système à jour.

Recevoir les courriers adressés au root

Pourquoi ?

Lorsque votre système détecte certaines erreurs, lorsque certaines modifications sont effectuées, ... le système peut envoyer un courriel au root (administrateur du système) pour le tenir au courant. Il est donc intéressant de lire les courriels adressés à l'administrateur.

Que faire alors ?

Sur Ubuntu par défaut, l'utilisateur reçoit les courriels adressés au root[2], mais encore faut il les lire.
Sur pratiquement toute les autres distributions (dont Debian) il faut configurer cette redirection à la main. La manière la plus simple de procéder est d'ajouter dans le fichier /etc/aliases (ou de créer ce fichier le cas échéant) la ligne root: user (en remplaçant user par votre nom d'utilisateur).

Comment lire vos courriels locaux ? Il existe de nombreuses méthodes (mail ou mutt en console) et je vais présenter une solution pour kmail[3].
Dans le logiciel kmail allez dans Paramètres>Configuration puis dans Comptes. Appuyez sur le bouton Ajouter et choisissez Local Mailbox. Donnez un nom à ce compte. Le fichier local est /var/mail/user (a priori c'est ce qui s'affiche par défaut). Validez et vous allez maintenant recevoir les courriels locaux.[4]

Surveiller les logs du système

C'est quoi ?

Les logs système sont des fichiers dans lesquels sont stockés toute information pertinente concernant le système et en général sa sécurité. À peu près tout ce que le système fait est inscrit dans ces journaux système.
Sous Kubuntu ksystemlog que vous trouverez dans le menu Système vous permet de lire les logs. Sous Ubuntu dans le menu Système vous trouverez aussi un lecteur de logs.

Oulah, je vais devoir lire tout ça moi ?

En théorie, l'idéal serait de le faire, mais je pense pas que beaucoup de monde le fasse. Je n'en vois pas trop l'intérêt non plus. En effet, a moins que vous soyez administrateur système, la majorité de ce qui est écrit dans les logs sera incompréhensible, et les quelques lignes qui relèvent un vrai danger risquent d'être enfouies dans des centaines et des centaines de messages "sans importance". Pourquoi ne pas demander à votre ordinateur de vous faire un résumé des logs pour conserver que ce qui vous, simple utilisateur, vous intéresse ?

Que faire alors ?

logwatch va venir à votre secours. logwatch est un programme écrit en Perl qui va régulièrement analyser les logs de votre système et vous envoyer un courriel à l'administrateur avec un résumé très bien structuré, avec plus ou moins détaillé selon vos préférences. Analyser les logs de mon système était une tâche fatiguante, que je ne prenais presque jamais la peine de faire, alors qu'il s'agit maintenant simplement d'un courriel par jour que je parcours en une minute tout au plus. De plus grâce à logwatch j'ai réalisé que mon serveur SSH subissait des attaques constantes d'ordinateurs, ce dont je n'avais pas la moindre idée.

sshd:
   Authentication Failures:
      unknown (test7.crickets.com): 30 Time(s)
      root (test7.crickets.com): 16 Time(s)
      unknown (218.3.120.196): 11 Time(s)
      root (83.243.69.66): 7 Time(s)
      unknown (111139.ntpu.edu.tw): 5 Time(s)
      root (111139.ntpu.edu.tw): 3 Time(s)
      guest (test7.crickets.com): 2 Time(s)
      guest (111139.ntpu.edu.tw): 1 Time(s)
      unknown (83.243.69.66): 1 Time(s)
   Invalid Users:
      Unknown Account: 47 Time(s)


Pour installer logwatch, sous Ubuntu ou Kubuntu, sudo apt-get install logwatch fera l'affaire. (logwatch est dans le dépôt Universe). Dès l'installation, un fichier nommé 00logwatch vient s'ajouter dans /etc/cron.daily et va donc être exécuté par un cron tous les jours (cf. cet article sur les crons). Vous pouvez adapter le contenu de ce fichier à vos besoins, par exemple en mettant /usr/sbin/logwatch --detail low (reportez vous à l'aide de logwatch en tapant man logwatch). Assurez-vous aussi que vos crons sont exécutés à une heure où votre ordinateur sera allumé (par défaut, les crons sont exécutés vers 6h du matin, et comme je ne suis pas si matinal, je les ai déplacés vers 18h, heure où l'on mange chez nos amis anglais)[5].

Mettre en place un pare-feu (firewall)

Pourquoi un pare-feu ?

Un pare-feu peut avoir plusieurs applications :

  • Empêcher à des application d'envoyer des informations sur l'internet,
  • Empêcher à des individus de se connecter à votre ordinateur,
  • Empêcher à des utilisateur de votre ordinateur d'utiliser certains logiciels (par exemple en bloquant les ports utilisés par les services de peer-to-peer, vous leur empêchez d'utiliser ce genre de logiciels,
  • ...

J'ai pas déjà un pare-feu ?

On m'a toujours dit que Linux avait un pare-feu intégré. Il existe effectivement un mécanisme, nommé Netfilter qui traite tous les paquets IP à l'envoi et à la réception (en gros tout ce qui passe par votre réseau). De mécanisme utilise des iptables qui sont des règles qui indiquent comment (entre autres) filter ces paquets.
Donc oui, Linux a un pare-feu intégré, mais encore faut-il le configurer !

Que faire alors ?

En pratique, si vous n'avez pas installé de serveur (SSH, Apache (site web), mysql, ...) sur votre ordinateur, vous n'êtes pas forcés d'installer un pare-feu car vous n'avez a priori pas grand chose de potentiellement dangereux "à cacher". Je vous recommande quand même l'installation d'un pare-feu pour être un peu plus maître de ce qui se passe sur votre ordinateur (c'est-à-dire ne pas se limiter à la configuration par défaut des iptables).

Il existe de nombreux outils pour configurer votre pare-feu. firestarter semble assez prometteur, mais j'ai décidé de parler de guarddog. Pour les utilisateur de Debian ou Ubuntu, sudo apt-get install guarddog vous permet d'installer guarddog (dépôt Universe).
Lancez guarddog avec la commande sudo guarddog. Le programme présente quatre onglets :

  • Zone : qui par défaut ne contient que Local et Internet permet de définir des groupes qui auront des autorisations différentes. Par exemple, les adresses IP de l'Université de Cambridge commencent toutes par 131.111 donc je peux créer un groupe appelé Cambridge qui me servira a donner aux utilisateur de mon université plus de droits qu'au reste du monde. Nous utiliseront ces zones dans la deuxième partie.
  • Protocole : vous permet de définir quels protocoles sont autorisés entre deux groupes. Si par exemple je veux autoriser toute personne de Cambridge à se connecter à mon serveur SSH, mais pas au reste du monde, je clique sur Local (et non Cambridge, ce qui n'est pas très intuitif) et dans Session Interactive je coche la case en face de SSH (case qui correspond à la colonne Cambridge). Comme par défaut, aucune case est cochée, les utilisateurs du groupe Internet n'ont pas accès à mon serveur SSH.
    • Notez que par défaut comme toutes les cases sont décochées, donc si vous activez le pare-feu tel quel, votre utilisateur n'aura plus du tout accès à l'internet. Il vous faut donc sélectionner Internet et cocher les cases des protocoles que vous voulez autoriser (HTTP(S), FTP, SSH, POP, IMAP, SMTP, ...)
    • Il y a une différence essentielle entre une case non cochée, et une case barrée. Un paquet bloqué (non coché) est tout simplement arrêté par votre machine, un paquet rejeté (barré) est lui renvoyé à l'expéditeur (qui donc sait que vous lui avez refusé ce protocole).
  • Journalisation : sert à enregistrer dans des logs les paquets rejetés, bloqués, ...
  • Avancé : sert à ajouter des protocoles qui ne seraient pas prévus par défaut par l'interface. Il sert aussi à désactiver le pare-feu, très utile pendant que vous cherchez à régler le pare-feu, mais aussi lorsque une tâche réseau ne fonctionne pas et que vous suspectez votre pare-feu d'en être la cause. Si une fois le pare-feu désactivé ça marche, c'est qu'il manque une case cochée quelque part ;-) .

Configuration du pare-feu Linux avec Guarddog
Cet article est une introduction très rapide, pour profiter pleinement des possibilités de guarddog consultez la documentation.
Le site GRC (Gibson Research Corporation) et son outil ShieldsUP peut vous servir à tester la configuration de votre pare-feu.

La cerise sur la gâteau : l'antivirus

Pourquoi ?

Y'a pas de virus sous Linux : c'est faux, et ce depuis 1997 avec l'apparition de Bliss !!! Bon, a l'heure actuelle il n'en existe qu'une cinquantaine, ne touchent que les serveurs et concernent à peu près tous des versions périmées de ces serveurs, mais bon, ils sont là.
Certes vous n'avez peut-être pas grand chose à craindre sous Linux, mais pensez à tous les courriels que vous pouvez transférer à des amis qui n'ont pas la chance d'être sous Linux, tous les fichiers que vous passez à vos amis avec votre toute nouvelle clusb, ...

Que faire alors ?

clamav est un antivirus que vous pouvez installer sur votre machine. Pour les utilisateurs de KDE, klamav (qui n'est pas dans Kubuntu Breezy mais qui sera disponible pour Kubuntu Dapper) est une interface graphique pour clamav ma foi très sympathique.
Pour l'instant je n'ai configuré que l'analyse des courriels (dans kmail il y a dans le menu outils un assistant à la configuration de l'antivirus) sur ma Kubuntu, mais sous ma Debian, grâce à klamav, j'analyse aussi en permanence les dossiers /tmp, /medias et /home/user/temp, ce qui ne ralentit pas vraiment mon système mais me rassure grandement.
Seul reproche, clamav est un peu lent pour analyser les dossiers IMAP de mes mails.

N'oubliez pas de sauvegarder toutes vos données

Il est important que vous sauvegardiez régulièrement votre travail, pas seulement sur un disque dur, mais variez les supports : DVDs, clusbs, ... En général les gens réalisent qu'il faut faire une sauvegarde 10 minutes après qu'il soit trop tard. Souriez si vous voulez, mais le jour où cela vous arrivera, vous n'aurez que vous à blâmer. (Je me rappelle encore la tête de papa quand j'ai formaté le disque dur de l'ordinateur étant petit : le PC voulait pas démarrer, m'a demandé le CD d'installation et m'a demandé d'appuyer sur Entrée. Ô combien j'étais fier de savoir réparer tout seul le PC :S )

Conclusion

J'espère que ce article vous a plu et vous a servi de première introduction à la sécurité sous Linux. C'est maintenant à vous de faire quelques efforts pour votre propre sécurité et pour la sécurité des autres.

J'ai pris beaucoup de plaisir à écrire cet article, et c'est avec joie que je lirai vos commentaires, vos remarques, vos astuces, ... Merci.

Notes

[1] C'est la ligne %admin ALL=(ALL) ALL du fichier /etc/sudoers qui donne l'autorisation à tout membre du groupe admin d'exécuter des applications avec les droits de l'utilisateur root

[2] Ceci est très cohérent avec le fait que le compte root n'est pas accessible par défaut sur Ubuntu.

[3] Pour d'autres logiciels référez-vous à la documentation

[4] Dans ma version de kmail (1.9.1), j'ai désactivé le locking car il ne fonctionnait pas. Ce n'est pas un problème puisque je n'accède à mes mails que par kmail et donc qu'il n'y a pas de soucis d'accès concurrent.

[5] Je me pose une question à ce niveau. La seule méthode que j'ai trouvé pour modifier l'heure des crons par défaut est de modifier le fichier /etc/crontab, ce qui n'est pas très propre m'a-t-on toujours dit, mais je n'ai pas trouvé d'autre méthode car crontab -e m'affichait toujours un fichier vide, même en root. Si vous avez une explication, je suis preneur.