Accueil
Sommaire
Partie 1
Partie 2
Partie 3
Partie 4
Partie 5
Conclusion
Liens
DESMETTRE Julien
LEBON Samuel
FI 2001
RIO 2000
|

1. Linux : un OS en Open Source
Linux est un système d'exploitation qui hérite de l'architecture sécurité de Unix, système reconnu pour sa stabilité et sa sécurité. Il hérite de plus de tous les développements issus des développeurs particuliers eux-mêmes, le code étant en Open Source.
La fréquence des mises à jour en fait par conséquent un système d'exploitation en constante évolution, toujours plus performant ; ces améliorations proviennent généralement d'un besoin des utilisateurs eux-mêmes, puisque ce sont eux qui les développent. Les modifications du noyau font ensuite l'objet d'une validation auprès d'un comité de lecture, puis de Linus Torvalds lui-même, le créateur de Linux.
2. La sécurité du système
Un système d'exploitation n'est jamais fiable à 100%. Ainsi, des failles ont été décelées sous Linux en terme de gestion réseau. Par exemple, avec la commande inetd, il était possible de faire " planter " un serveur Linux qui accepte les connexions TCP, par " flooding " (inondation) de requêtes vers celui-ci. Une cinquantaine de requêtes font que le serveur va refuser les connexions inetd, parce que le serveur aura planté. Cela marche pour tous les services sous inetd, donc ftpd, identd... Bien évidemment, dès que cette faille fut décelée, une nouvelle version corrigée du noyau et des applications avait corrigé ce problème.
Dès que le noyau est modifié, il est nécessaire de le recompiler et de redémarrer la machine pour prendre en compte les nouveaux paramètres : pratiquement, ces mises à jour doivent donc être réalisées en dehors des heures d'utilisation de la machine. Dans le cas d'une machine Linux configurée en routeur firewall, il ne faudra mettre à jour le noyau uniquement si une faille importante mettant en jeu la sécurité du réseau est décelée, la trop grande fréquence des mises à jour pouvant nuire sérieusement aux utilisateurs du réseau.
Pour rajouter des fonctions particulières au noyau sans avoir à recompiler obligatoirement ce dernier, on utilise des modules. Ce sont des morceaux de code chargés dynamiquement, permettant d'ajouter des pilotes de périphériques matériels, des protocoles réseaux...
Les modules sont exécutés dans l'espace mémoire du noyau :
- ils possèdent un contrôle total de la machine,
- ils peuvent détourner ou créer un appel système.
Les modules ont à la fois des avantages et des inconvénients :
- ils permettent aux administrateurs d'optimiser la sécurité du système : mettre à jour un pilote, surveillance de l'activité du système (fichiers LOG),
- ils permettent également aux pirates d'attaquer la sécurité du système : appels système néfastes, accès aux fichiers LOG (modifications, suppression), changement des droits, lancement de processus cachés, mise en place de portes dérobées...
Pour plus d'informations sur les modules, consulter le site suivant :
http://dione.ids.pl/~lcamtuf/pliki.html : de nombreuses sources de modules ou de patchs noyaux pour Linux 2.0.3x ou 2.2.x, la majorité en polonais malheureusement.
2.1. Le noyau Linux
Le noyau Linux est commun à toutes les distributions, qui se basent sur celui-ci pour développer leurs propres applications, qui elles sont souvent propriétaires.
La liste des utilisateurs du système se trouve généralement dans le fichier /etc/passwd, accessible en lecture à tous les utilisateurs. Le mot de passe est chiffré et rangé dans /etc/shadow : ce fichier n'est par contre pas accessible par les utilisateurs. Le mot de passe n'existe qu'en version chiffrée avec un algorithme non réversible de type DES (Data Encryption Standard) ou MD5 (Message Digest 5), difficile et long à " casser ". Durant la vérification du mot de passe, la comparaison s'effectue toujours sur le mot de passe chiffré. Cela évite ainsi qu'une personne étrangère puisse s'octroyer le mot de passe d'un utilisateur autorisé.
Une fonction intéressante du noyau Linux est l'enregistrement automatique des ressources utilisées par chaque processus lancé lors de leurs terminaisons :
- date de création,
- utilisateur propriétaire,
- nom de la commande,
- utilisation de la mémoire,
- terminal contrôlé,
- temps processeur utilisé,
- nombre d'entrées/sorties réalisées.
Les utilitaires qui permettent de gérer cette comptabilité sont : accton, lastcomm, sa :
- accton active et désactive la comptabilité,
- lastcomm affiche des informations à propos des dernières commandes exécutées,
- sa résume les informations de comptabilité.
2.2. Linux et TCP/IP
Seuls les fichiers fondamentaux sont communs à toutes les implémentations Unix :
- /etc/hosts : indique la correspondance nom de machine et numéro IP (même fonction qu 'une table DNS),
- /etc/inetd.conf : fichier de configuration des services TCP/IP gérés par le démon inetd,
- /etc/services : les ports utilisés par les services TCP et UDP,
- /etc/rpc : définit les ports RPC utilisés par les services RPC,
- /etc/securetty : interdit la connexion directe des administrateurs comme root par le réseau sur les pseudos-tty non listés,
- /etc/ftpusers : interdit la connexion via FTP des utilisateurs listés,
- /etc/hosts.equiv : permet de rendre les machines équivalentes avec les r-commandes,
- $HOME/.rhosts : permet à un utilisateur de demander un service avec une r-commande sans avoir à se ré-authentifier,
- $HOME/.netrc : permet à un utilisateur de demander un service FTP sur d'autres machines avec une identification automatique,
- /etc/hosts.ldp : interdit les demandes d'impression depuis les adresses non listées.
D'autres fichiers plus spécifiques aux protocoles comme NIS, NFS, FTP, peuvent également être présents.
Bien qu'il existe une implémentation commune à chaque système d'exploitation Linux, chaque distribution utilise des fichiers différents pour initialiser le système réseau :
- RedHat : /etc/rc.d/init.d/network et /etc/sysconfig/network-scripts,
- Slackware : /etc/rc.d/rc.inet1 et /etc/rc.d/rc.inet2,
- Debian : /etc/init.d/network et /etc/init.d/netbase,
- /etc/pcmcia/network.opts : les portables utilisant le système PCMCIA.
- ...
TCP_Wrapper est un outil qui s'installe en frontal des démons TCP/IP lancés par inetd, et qui ajoute les fonctionnalités de filtrage par adresse IP source, tout en permettant une journalisation des accès. Les versions récentes de TCP Wrapper peuvent être récupérées sur le site de Wietse Venema :
ftp://ftp.porcupine.org/pub/security/tcp_wrappers_7.6.tar.gz
Des patchs de sécurité visant à apporter une valeur supplémentaire à la sécurité sont disponibles. Ils peuvent être utiles dans le cas d'une machine fortement sujette aux attaques, comme peut l'être un machine Linux configurée en routeur firewall.
Par exemple, nmrcOS a pour objectif de fournir un système stable et sécurisé par l'intermédiaire de plusieurs patchs de sécurité pour le noyau. Solution basée sur la distribution Slackware : http://www.nmrc.org/nmrcOS
La figure suivante montre comment Linux implémente les différents protocoles, c'est-à-dire comme un série de couches logicielles connectées entre elles. Par exemple, les sockets BSD sont supportées par un logiciel de gestion de sockets spécifique aux sockets BSD. La couche Inet, par ses sockets, gère la communication entre le protocole IP et TCP ou UDP.
En dessous de la couche IP, les services réseaux, tels PPP ou Ethernet, sont présents.
Pour tout savoir sur le système BSD et comment créer une socket sur BSD, le site suivant est fait pour vous : http://www.enserg.fr/~patrick/systeme/tlk/net/net.html

2.3. La sécurité réseau
Tout comme sous Unix, l'administrateur a la possibilité d'administrer une machine ou un réseau à distance, puisque Linux supporte SSH (SecureSHell) et SSF (version publique de SSH).
Pour plus d'informations sur SSF et SSH, consulter les sites suivants :
http://www.ssh.org
http://ww2.lal.in2p3.fr/~perrot/ssf/talks/SSF/tsld001.htm
Tout comme Windows, Linux possède de nombreuses fonctionnalités qui lui permettent de s'interconnecter sur un réseau local, et de fournir une palette de services importante, tant au niveau de l'administration que de l'utilisation :
- mécanismes d'identification et d'authentification (exemple : PAM),
- droits d'accès aux ressources,
- surveillance et journalisation.
PAM (Pluggable Authentification Modules) est un mécanisme flexible d'authentification des utilisateurs.
ftp://ftp.kernel.org/pub/linux/libs/pam/ : bibliothèques et programmes PAM
La station Linux effectuant les fonctions de routage et de firewalling ne devra contenir aucune donnée critique concernant les comptes des utilisateurs, mais devra se contenter de router correctement les paquets IP selon les règles de sécurité établies (firewall).
2.4. Les applications sécurité de Linux
Linux n'a rien à envier aux grands éditeurs comme Windows ou Unix en terme de sécurité réseau : il est en effet possible de réaliser sous Linux :
- un filtrage des trames,
- des VPN (Virtual Private Network),
- des sytèmes mandataires (proxy),
- un contrôle de session,
- une détection de virus,
- et bien d'autres possibiblités encore...
3. Comparatif Windows - Linux
Linux est reconnu pour sa souplesse, sa fiabilité et ses possibilités de configuration. Linux, par sa légèreté et sa portabilité, est le système le plus stable et le plus adapté à une utilisation réseau (nombreux utilisateurs). De plus les améliorations constantes apportées au système et le mode fenêtré en font désormais un environnement aussi pratique que ses concurrents directs.
Les systèmes Unix (xBSD, Linux, Solaris, etc...) sont les systèmes les plus aptes à une utilisation en réseau. Windows est très satisfaisant pour des petits réseaux locaux grâce à sa maintenance facile. Mais pour des gros réseaux et des systèmes ouverts à internet, mieux vaux prendre un système Unix, certes plus complexe, mais plus stable, plus performant et plus sécurisé. Unix et ses dérivés sont ainsi devenus les systèmes les plus utilisés pour les serveurs web (avec Apache). L'aspect multi-utilisateurs du système est également intéressant dans un contexte professionnel.
Le système est très stable et il est très rare d'avoir à l'arrêter de manière brutale en cas de plantage, même avec la dernière version du noyau (2.2.x). La course à la dernière version que se livrent aujourd'hui les responsables des distributions gène parfois cette stabilité presque parfaite, mais les versions contenues dans les différentes distributions (Red Hat, SuSe, Slackware...) sont toujours minutieusement testées et finalisées. Linux est également beaucoup moins gourmand en ressources que Windows.
En ce qui concerne la facilité d'utilisation, Linux comble peu à peu son retard. Auparavant, l'installation d'un logiciel sous Linux était un vrai casse-tête. Ces difficultés ont poussé RedHat à developper le format RPM qui permet d'effectuer une installation, une désinstallation ou une mise à jour beaucoup plus facilement. Ce format d'archive est maintenant très répandu et présent dans presque toutes les distributions Linux actuelles (autres que RedHat).
Enfin, Linux possède un avantage non négligeable : le coût. Comme la plupart des logiciels sont disponibles en Open Source, les programmes et leur code source sont distribués gratuitement. Il existe de plus en plus de logiciels commerciaux pour le système, et les distributions de Linux les plus réputées (Caldera OpenLinux, SuSe, RedHat...) sont désormais payantes, mais la plupart des applications et utilitaires sont encore disponibles gratuitement. L'avantage d'une distribution payante est qu'elle garantit la complète compatibilité entre les applications utilisant le noyau Linux.
|