Howtos GNU/Linux .: kozaki :. Howtos GNU/Linux

Guide de Survie sous LinuxIX - La sécurité

  • Mis à jour le 28/12/2008.
  • D'autres informations sont disponibles dans la rubrique Sécurité sur la page 'Applications'

Linux est réputé comme un système sécurisé. En fait, tout dépend des circonstances : La sécurité absolue n'existe que pour une machine qui n'est reliée à aucun réseau et inaccessible physiquement...

Des virus sous Linux ?

En 17 ans, seules quelques rumeurs de virus réseau pouvant affecter Linux ont été signalées, sans qu'il y ait eu de propagation.

Cette relative immunité de GNU/Linux aux virus s'explique par l'architecture du système d'exploitation en couches fonctionnelles ne pouvant interagir entre elles que par des règles très strictes et par l'existence d'un système de droits des fichiers et des utilisateurs, architecture propre à tous les sytèmes de type UNIX®.
Les virus rencontrés au quotidien notamment sous Windows® sont sans aucun effet sous Linux, que ce soit par email ou par votre navigateur Web.

Voyons la partie intrusion, (courte :)

Il existe des virus, des vers & des troyens (appelés malwares) sous Unix®, quoique très très peu.
Certains malwares (du type troyen) sont très évolués. On appelle ça des rootkits. Ils sont très peu utilisés et très peu diffusés. La majorité sont utilisés comme outils de test sécurité par des professionnels, càd pas pour infecter n'importe qui, n'importe où n'importe comment, mais à des fins de test, audit, voire de concours.

Maintenant, pour le poste client

  • Votre client mail sous GNU/Linux, quel qu'il soit, ne sera pas sensible aux virus que vous rencontrez parfois dans votre boite aux lettres.
  • Le système GNU/Linux n'y est pas sensible non plus.
  • Ces virus ne seront donc pas actifs chez vous.
  • À moins que vous ne transmettiez la pièce jointe infectée, ils ne pourront pas non plus se transmettre a vos contacts par votre machine, leur propagation est stoppée chez vous.

Concernant les antivirus, celui cité par SERAF1, ClamAntiVirus (dit "clamav") est parait-il le meilleur : la communauté est très active et sa base de données est remise a jour au moins une fois par jour... voir plus si nécessaire. Ce scanner anti-virus libre fonctionnant sous Linux est disponible à http://clamav.elektrapro.com/.

D'autres existent, souvent spécialises dans les serveurs mails, comme kaspersky, drweb, d'autres encore...
.

Précisons qu'il s'agit plutôt de solutions destinées a des environnements hétérogènes ou le serveur mail est GNU/Linux et les postes client Windows. Ces derniers étant a la fois moins sûrs et plus victimes d'attaques, on peut confier la tache d'anti-virus au serveur, et économiser les ressources des postes clients sous un autre OS que Linux.
Pour les rootkits, il y a chkrootkit & rkhunter, tous deux gratuits, open source et libre... et très efficaces.

Donc dans le cas d'ordinateurs la maison (en réseau) sous GNU/Linux, dites-vous que vous êtes désormais beaucoup plus tranquille, et que le soucis des malwares disparaît presque totalement (le "presque" est là en pure forme... le risque zéro n'existant pas, à moins de ne pas avoir d'ordinateurs).

Bien entendu des solutions encore plus sûres existent, capables de rassurer les plus paranos !

GNU/Linux est sécurisé par sa conception :

Dans l'esprit "une application pour un programme, un programme pour une application", cette dernière ne fait ni plus ni moins que ce qu'on lui demande en tant qu'application.
La sécurité d'un poste GNU/Linux est donc assurée par bien d'autres choses qu'un couple antivirus/firewall classique sous Windows.

Les firewalls

Intégrés au noyau (contrairement a Windows), ils font... du firewalling et rien de plus. Notons que des logiciels sont disponibles pour écrire plus simplement des règles pour ces firewalls.

Les droits sur les fichiers

Ils sont nettement plus sérieusement pris en compte que sous Windows (et ce dans l'essence même du développement du noyau). Couplés à l'architecture particulière ainsi qu'à la gestion multi-comptes, cela devient très très sérieux.

Il faut aussi mentionner les modules owner...

Et les applications se chargeant d'établir des comparaisons :
Exemple : "checksum", qui permet de vérifier l'intégrité des fichiers. Ou plus avancés comme tripwire, qui permettent de checker un système complet avant connexion réseau, puis de vérifier -de manière régulière- l'intégrité complète du système.

Il a également possibilité de renforcer encore le noyau avec des patchs comme SElinux (ce dernier étant développé par la NSA), lors d'applications particulières sur serveur haute disponibilité par exemple.

Cette présentation (non exhaustive) permet de comprendre combien la diversité des solutions pérennes et efficaces renforce également la sécurité des postes, par leur personnalisation.

Si vous souhaitez aller plus avant, apprenez à manier tripwire, snort, aide, netfilter, iptables... [page dédiée]

Cohésion

Si vous souhaitez simplement une bonne sécurité sur Internet et pour les mails, votre système GNU/Linux brut de pomme possède déjà un niveau de sécurité suffisant si vous ne montez pas un serveur web tournant en permanence.

Voila, bienvenue sur GNU/Linux, et rappellez-vous que toute la documentation sur ce système est disponible et librement accessible.
En conséquence de quoi, les "failles de sécurité" sont très rapidement corrigées. C'est d'ailleurs la dernière note et la plus importante a propos de ce système : le code source est ouvert, et ça, c'est un atout majeur sur le plan de la sécurité car ceux qui le scrutent et peuvent l'améliorer sont bien, bien plus nombreux que les seuls employés de n'importe quelle muléinationale informatique...

Cas d'une machine seule, physiquement accessible

Il faut empêcher que le disque Linux soit mis en esclave : pas d'autre système d'exploitation démarrable (Linux se lit très bien depuis Windows), pas de possibilité de boot sur disquette ou cdrom (pensez à coder l'accès au BIOS), interdire le démarrage en Linux .ingle.

Pour éviter qu'une personne ne boot en ajoutant un paramètre à lilo (comme nom_du_noyau single), il faut limiter l'accès. Il suffit d'ajouter les lignes suivantes dans lilo.conf avant le prompt :

password = mot_de_passe_en_clair
  restricted
  prompt

Il faut penser à mettre ce fichier en lecture seule pour le superutilisateur, et aucun droit pour les autres (chmod .00 /etc/lilo.conf) ! Le boot normal se passe comme d'habitude sans demander le mot de passe (ceci est important si on veut que la machine redémarre seule). Par contre si l'on veut passer des paramètres au noyau lors du boot, Lilo demande alors ce mot de passe. (Merci à Martin pour ce paragraphe).

Si le pirate potentiel a accès physiquement à la machine sans contrôle, la seule protection absolue est le cryptage du disque dur. Vous avez tous les renseignements nécessaires sur la page http://www.geocities.com/openpgp/linux.htm. Vous devrez appliquer le patch crypto International au noyau, puis recompiler. L'utilisateur qui veut crypter des données doit créer un répertoire destiné à cet usage. Il vous faut aussi des versions modifiées de mount et losetup.

Sinon, Linux se défend assez bien logiciellement... pour peu que vous ne donniez pas votre mot de passe root.

Cas d'une machine reliée à un réseau

Évitez d'utiliser Internet sous root. Idéalement, utilisez un compte dédié à cet usage. Si un jour un virus type I love you débarquait chez nous, il ne pourrait faire de dégâts que sur ce compte où il ne se passe rien.

Attention aux fonctions de prise de contrôle à distance (rlogin, telnet...), qui devraient toujours être désactivées (retirez le maximum de lignes dans /etc/inetd.conf). Pareil pour finger, qui permet de tout savoir sur un utilisateur, même si son compte n'est pas actif (finger utilisateur@machine). Redémarrez inetd après avoir fait les modifications.

Pour détecter les tentatives d'intrusion, lisez régulièrement les fichiers /var/log/messages et /var/log/syslog.

Ne jamais donner un mot de passe identique au login.

Ne pas mettre les mots de passe dans /etc/passwd, mais dans /etc/shadow. (mots de passe shadow, le plus souvent installés de base maintenant).

Attention aux protocoles qui échangent les mots de passe en clair (comme telnet ). Tout ceci peut très bien être intercepté par quelqu'un qui utilise tcpdump.
La solution : crypter les échanges par ssf, disponible seulement en téléchargement sur http://www.in2p3.fr/securite/ssf. Retirez ssh auparavant : vous n'êtes pas supposé l'utiliser en France. Installez. Lancez ssfd.

D'une manière générale, évitez que d'autres root que vous ne se trouvent sur le réseau (mais c'est rarement possible d'en être sûr : boot par disquette, branchement sauvage d'un ordinateur portable...).

Ne jamais lancer un serveur DNS sur une machine directement raccordée sur Internet (pour vérifier si vous en avez un : ps -aux|grep named).

Éviter d'installer un serveur ftp anonyme.

Ne pas lancer la commande xhost + (on peut lire ce que vous tapez).

Pour contrôler la sécurité réseau de votre machine, attaquez-la avec nessus (http://www.nessus.org/). L'installation et le mode d'emploi sont sur le site. Vous devez créer un utilisateur par nessus-adduser, lancer un serveur nessus sous root (nessusd -D), puis nessus en tant qu'utilisateur.

Une machine raccordée à un réseau devrait toujours avoir été testée par nessus ou un équivalent.

J'ai perdu mon mot de passe root

Pour tout administrateur Linux, perdre le mot de passe root peut être un cauchemar, équivalent à la perte du contrôle de la machine concernée. Je me suis retrouvé face à cette situation sur des machines que j'avais installées et pour lesquelles je n'avais pas noté le password ":-O

La solution classique consiste à démarrer en mode mono-utilisateur (aussi appelé "Linux single", voir ci-dessous). La seconde, est facile si vous pouvez démarrer la machine avec une distribution live. La troisième solution est de monter le disque sur un autre système.

Note : Si vous avez perdu un mot de passe utilisateur, c'est bien plus simple :
passez en root, et changez le mot de passe utilisateur normalement (par ex. : passwd Louis_14.

1. Démarrer en mode mono-utilisateur. sysadmin.lliseil.fr

Avec LILO

Si vous utilisez LILO, vous pouvez accéder au mode mono-utilisateur en entrant linux single à l'invite boot:.

  • Démarrer la machine ;
  • À l'écran de démarrage Lilo, tapez linux single
  • Ce faisant, vous demandez au système de démarrer en mode "Single User" (un système trés simple uniquement en console) en étant automatiquement loggé en root, sans avoir à entrer le mot de passe).
  • Changez votre mot de passe root à l'aide la commande passwd
  • Vous avez maintenant changé votre mot de passe root.
    Si le système vous demande malgré tout le mot de passe root (!), il ne vous reste qu'à tenter le mode init (ci-dessous) ou à passer par un LiveCD...
Avec GRUB

Si vous utilisez GRUB (l'écran qui s'affiche au démarrage, pour choisir le système à démarrer), vous devriez pouvoir accéder au mode mono-utilisateur en suivant la procédure ci-dessous :

  • Si votre Grub est en mode graphique, passez-le d'abord en mode normal en tapant la touche [Echappe] et en validant le message qui propose de quitter le mode graphique.
    Dans l'écran de GRUB , sélectionnez la ligne de démarrage normal de votre système (avec les flèches du clavier) et appuyez sur [e] pour la modifier.
  • Toujours grâce aux flèches, descendez à la ligne du noyau qui ressemble à kernel /boot/vmlinuz-xxx root=xxx' et appuyez sur [e] pour la modifier.
  • Le curseur est automatiquement placé à la fin de la ligne. Ajoutez un espace, et tapez single à la fin de la ligne, puis [Entrée] pour valider.
  • Vous retournerez à l'écran de GRUB. Appuyez sur la touche [b] pour démarrer le système en mode mono-utilisateur.
  • Ce faisant, vous avez demandé au système de démarrer en mode "Single User" (un système trés simple uniquement en console) en étant automatiquement loggé en root, sans entrer le mot de passe).
    Si le système vous demande malgré tout le mot de passe root (!), il ne vous reste qu'à tenter le mode init (ci-dessous) ou à passer par un LiveCD...
  • Vous pouvez maintenant changer votre mot de passe root, en utilisant simplement la commande passwd, suivie de votre nouveau mot de passe.
    Vous avez maintenant changé votre mot de passe root.
Le mode init

L'autre "cheat"code" à passer au boot, si le mode single ne fonctionne pas par ex., est de forcer le démarrage sur le shell :

De la même façon que ci-dessus, ajoutez init=/bin/bash :

  • après "linux" avec LILO,
  • à la fin de la ligne "kernel" avec GRUB.

Une fois le cheat code ajouté, le système va démarrer et vous laisser (très) rapidement sur un prompt.code. Par rapport au "Single mode", bien moins de choses sont initialisées, montées, etc. Vous devez donc absolument monter la partition qui vous intéresse :
mount -o remount,rw /, puis passwd suivi de votre nouveau mot de passe.
Si ça ne fonctionne pas, tapez juste mount qui va afficher la partition où "/" est monté. Mettons qu'elle soit sur /dev/sda2. Tapez alors :
mount -o remount,rw /dev/sda2
Notez que les autres partitions ne sont *pas* montées, et que vous pourriez avoir besoin de les monter manuellement si vous cherchez à lire un fichier présent sur l'un d'entre eux. Dans ce cas jettez un oeil sur /etc/fstab ;-)

Sources : http://aplawrence.com/Linux/lostlinuxpassword.html et Comment Ça Marche.

2. Démarrer avec une distribution live

Une fois le système démarré depuis le CD :

  • Montez la partition racine du système dont vous avez perdu le mot de passe root, graphiquement ou en console :
    mount /dev/[partition_système] /mnt -o rw
  • éditez le fichier /mnt/etc/passwd :
  • Effacez le x entre les deux signes : :
    cecile:x:506:509::/home/cecile:/bin/bash
    (si vous n'utilisez pas les mots de passe shadow, le mot de passe crypté se trouve à la place du x. Effacez-le.)
  • Redémarrez. L'utilisateur root n'a plus de mot de passe. Remettez-en un vite ! Ceci vous montre à quel point il est facile de pirater une machine accessible si les précautions nécessaires n'ont pas été prises...

Crypter et authentifier ses fichiers et ses mails

Quelques mots sur GnuPG (http://www.gnupg.org). Les deux problèmes que vous rencontrez avec les documents électroniques sont:
- de savoir à coup sûr qui vous les a envoyés -et si ce document n'a pas été modifié-
- et d'échanger des courriers que seul le destinataire peut lire.
Pour ce faire, le programme gpg (ou son interface gpa) vous permet de générer une paire de clés, l'une privée et l'autre publique, basées sur votre identité et sur une phrase de passe.
Votre clé privée doit rester secrète (mais vous devez ABSOLUMENT en faire des copies de sauvegarde), alors que votre clé publique doit être diffusée le plus largement possible.
Pour authentifier un document, vous utilisez votre clé privée et votre mot de passe. Le document sera accompagné d'un hash, sorte de synthèse entre la clé et le document. Le destinataire, au moyen de votre clé publique, vérifiera que le document correspond bien au hash, ce qui prouve qu'il a bien été validé par votre clé privée et qu'il n'a pas été modifié.
Pour crypter un document, vous utilisez la clé publique de votre destinataire. Il utilisera sa clé privée et son mot de passe pour le décrypter.

Comment échanger ses clés publiques .
Vous donnez physiquement à votre correspondant le fingerprint de votre clé. Celui-ci doit vérifier votre identité.
Vous déposez votre clé publique sur un serveur. Votre correspondant la téléchargera, et en profitera après vérification du fingerprint pour l'authentifier.
Ainsi, toutes les personnes qui connaissent votre correspondant et qui lui font confiance pourront être sûr de votre identité.

Toutes ces manipulations sont très simples avec gpa.

À voir : Evolution, Thunderbird et Co, avec le tuto Signer/chiffrer ses mails avec GPG bien fichu d'Open-freak.

Trop cool pour Internet Explorer