Sécurité des réseaux d’ordinateurs

 

Ó Emmanuel Tychon NetLine 1996

 

1 Introduction

Prérequis et objets du cours

Pourquoi la sécurité?

Connaître ses ennemis

Virus

Worms

Trojan horse

Back doors

Password Cracking

Social Engineering

2 Les types de sécurité

La sécurité physique

Une machine Unix

Le disque dur

Le bouton reset

3 La sécurité réseau

Définir une politique

4 La cryptographie

Cryptographie à clé unique

RSA

Garantir l'origine d'un message

RSA en pratique

PGP

SSH Secure Shell

SSH security tunnels

SSL Secure Socket Layer

5 L'authentification

Les passwords

L'équivalence

Kerberos

Crypto Card

Autres authentifications

6 Les attaques réseau

Sniffing

Finger

Bridez votre Finger!

FTP

NFS

IP-Spoofing

DNS-Spoofing

7 Les firewalls

Les types de machines

Packet Filter

Screening Router

Dual-Homed Host

Les architectures

Bastion Host

Dual-Bastion

8 IP-Masquerading

Bibliographie

 

1 Introduction

Ces quelques notes sont un résumé de l'exposé oral. L'exposé se voulant le plus interactif possible, j'approfondirai l'un ou l'autre point selon les desiderata de chacun.

Note revue par Frédéric Rouyre

Pré-requis et objets du cours

Nous nous attarderons surtout sur les méthodes cryptographiques et de protection de réseau de type TCP/IP. Nous supposerons que les réseaux à protéger sont connectés à un autre réseau extérieur, réputé non-sécurisé (comme Internet). Nous envisagerons donc toujours la pire des situations.

Au point de vus des pré-requis, il faut avoir une certaine connaissance du protocole TCP/IP, et du fonctionnement d'Internet (DNS, adresses IP, routage,..).

Il nous arrivera aussi de faire fréquemment référence à Unix, car c'est le meilleur OS pour analyser et pénétrer un réseau, grâce à toute sa panoplie d'outils puissants. C'est aussi l'OS le plus sensible aux attaques car il souffre de nombreux bugs de sécurité qu'il faut maîtriser.

 

Pourquoi la sécurité?

Aujourd'hui, les entreprises investissent beaucoup d'argent dans la recherche et dans le développement de nouveaux produits. Des budgets incroyables sont utilisés a des fins publicitaires pour rassembler les clients potentiels dans des listes. Ce listes sont d'ailleurs jalousement gardées... Lorsqu'on se donne tant de peine, lorsqu'on dépense tant d'argent, on n'a pas envie que nos concurrents ou nos employés s'en aillent avec notre liste de clients, effacent nos travaux de recherche ou abîment notre matériel.

On n'a pas non plus envie que des curieux nous espionnent, lisent notre courrier ou se mêlent de notre vie privée. Qu'ils parlent à tout vent de vos problèmes de santé...

Généralement, on ne veut rien de tout cela. On veut juste pouvoir travailler librement, l'esprit tranquille. On veut pouvoir compter sur une certaine fiabilité du système. On veut aussi, dans une autre mesure, pouvoir oublier qu'un système de sécurité est présent: il faut qu'il soit le plus fiable et le plus transparent possible. La transparence est la facilité avec laquelle il se fait oublier par l'utilisateur final.

Nous allons voir que nous ne pouvons augmenter l'une de ces deux qualités qu'au détriment de l'autre. C'est généralement trouver un juste milieu entre efficacité et transparence qui pose un problème de choix. Il n'y a pas de solution miracle. Pour des problèmes dont vous n'êtes pas sûrs, il vaut mieux faire appel à une société qui fait de la consultance en sécurité et qui pourra vous aider et vous conseiller.

Ce cours n'a bien entendu pas la prétention de vous transformer en un expert en sécurité, il faudrait pour cela une formation plus longue, un syllabus nettement plus conséquent et surtout, des travaux pratiques. Nous nous contenterons simplement de vous initier aux concepts fondamentaux de la sécurité, tout en prenant assez de recul pour que cela puisse s'appliquer à la plupart des topographies de réseau.

 

Connaître ses ennemis

Virus

Programmes modifiant d'autres programmes ou détruisant des portions sensibles. Beaucoup d'utilisateurs naïfs ont cru à la véracité du virus GoodTimes, un virus qui est sensé se propager par courrier électronique et détruire les données d'un disque dur. Le seul vecteur de propagation de ce virus est la crédulité humaine qui se charge de propager non le virus, mais la rumeur elle-même. Il n'empêche que des portions de code sont transmissibles via email et sont même exécutables via MIME (Multipurpose Internet Mail Extensions). Un interpréteur Postscript peut ainsi être automatiquement activé et exécuter une portion de code véreux.

Comme énoncé dans la définition, un virus n’est qu’un programme. Le plus souvent écrit dans un langage proche de la machine, l’assembleur. Ce langage permet de créer du code exécutable très rapide et facilite l’appel à des routines systèmes.

Lors de la sortie de Windows 95, la plupart des gens ont crus que ce système d’exploitation allait stoppé la propagation des virus (du fait que ceux-ci était prévu pour un environnement 16 Bits). Il n’en est rien et on n’a même assisté à l’apparition de virus 32 Bits fonctionnant sous Windows 95.

D’autres virus ont également vu le jours, tel les macros virus qui utilisent l’interface VBA (Visual Basic pour Application) pour se propager. Il est en effet assez facile de programmer une macro dans un fichier Word pour que celle-ci ce recopie dans un autre fichier Word lorsque ce dernier est enregistré. Les macros virus sont de loin les plus virulent actuellement.

Worms

Programmes se propageant d'une machine à l'autre sur un réseau.

Trojan horse

Programme semblant avoir une autre fonction que celle qu'il réalise effectivement. L’utilitaire Scan de Mcfee à d’ailleurs souvent été l’objet de Trojan Horses (Chevaux de Troie).

Back doors

Portion de code agissant sans authentification. Imaginons qu’une erreur de programmation induise, dans certaines situations, l’exécution d’un code permettant l’accès à des ressources sans login ni mot de passe.

Password Cracking

Il est très souvent facile d'obtenir le mot de passe d'un utilisateur peu avisé. Soit il s'agit d'un mot de passe facile à deviner ( 123, le prénom de la copine ou du fiston), soit il est écrit en toutes lettres sur un post-it collé à l'écran, soit la secrétaire le sème à tout vent. Même les plus prudents ne sont pas à l'abri d'un regard attentif au-dessus de l'épaule. Evitez spécialement les mots de passe faits de mouvements réguliers sur le clavier du type azerty. Une autre erreur classique est d'utiliser comme mot de passe le nom d'utilisateur comme guest - guest. Il faut également se méfier des faux programmes de login ou des programmes qui utilisent la force brute pour détecter un mot de passe à partir d'un dictionnaire. Les plus redoutables crackers auront même recours au "eavesdropping" pour capturer votre mot de passe en "sniffant" les paquets réseau.

Social Engineering

Un pirate informatique a quelquefois bien plus de talents psychologiques que de compétences informatiques. Toutes les attaques informatiques n'ont pas l'efficacité d'un simple coup de fil donné d'un ton assuré pour réclamer un mot de passe oublié ou égaré.

 

 

 

2 Les types de sécurité

 

La sécurité physique

Pour attaquer un ordinateur, vous pouvez vous y prendre de manière purement physique. En règle générale, les systèmes de sécurité se basent sur le fait que les machines cruciales (par exemple les serveurs de clés), sont physiquement protégés. Il est en effet possible de causer pas mal de problèmes à une machine à laquelle on a physiquement accès.

 

Une machine Unix

S'il s'agit d'une machine Unix, il suffit de la faire démarrer dans le mode dit single user. Vous avez alors un accès complet à la machine, sans que l'on vous demande le moindre password. ( NB Cela dépend de l’implémentation Unix envisagée. Les OS actuels offrent la possibilité de demander un password au démarrage, ce qui est évidement, nettement préférable!. ) Ainsi, vous pouvez consulter tous les fichiers que vous voulez, les transférer sur un support, changer les passwords de tous les utilisateurs ou détruire les disques.

On peut se protéger de cette attaque en enfermant la machine dans une pièce surveillée, ce qui peut parfois être assez contraignant ou en imposant un password même quand la machine est dans le mode single-user. Presque tous les OS proposent cette option, mais peu l'activent d'origine.

Pratiquement, le mode single-user est utilisé pour des tâches de maintenance, comme la vérification des systèmes de fichiers ou les backups. On s'en sert aussi pour récupérer des disques endommagés, ou pour retrouver des passwords égarés.

 

Le disque dur

Que votre OS ne vous donne pas accès aux fichiers d'un disque est une chose. Mais ce que votre OS ne peut pas vous empêcher de faire, c'est de démonter la machine pour en extraire le disque, et ensuite l'utiliser sur une autre machine, sur laquelle vous avez accès. Il suffit de savoir se servir d'un tournevis et le tour est joué!

C'est pourquoi les serveurs de réseau sont souvent dans des boîtiers verrouillés avec une ou plusieurs clés.

Pour s'en protéger, il faut crypter vos systèmes de fichiers. Ainsi, si un tiers entre en sa possession, il ne saura rien en faire puisque, normalement, il ne pourra pas entrer en possession de la clé. La majorité des OS peuvent gérer les systèmes de fichiers cryptes. Si ce n'était pas le cas, il existe aussi des cartes hardware, qui se placent entre le disque et le contrôleur. Dans ce type de système, les clés peuvent soit se trouver sur une disquette, soit être simplement une phrase ou encore être stockée sur une carte à puce.

 

Le bouton reset

Bien que le bouton reset, qui se trouve sur la plus grande partie des machines, ne puisse pas vous donner un accès aux fichiers, il peut en tous cas sérieusement endommager les systèmes de fichiers s'il est pressé à un mauvais moment (par exemple, lors de la mise à jour d'une base de données).

 

3 La sécurité réseau

Si la sécurité physique des machines peut être facilement assurée sans nuire à la transparence, il n'en va pas de même avec la sécurité des réseaux d'ordinateurs, qui est l'objet de ce cours. Les attaques en réseau sont perverses et complexes pour plusieurs raisons:

 

Le reste du cours sera consacré à cet aspect des choses. Ce domaine très complexe est en constante évolution, et au fur et à mesure que les techniques de défense se développent, les pirates trouvent de nouvelles failles. Vous n'aurez probablement jamais un réseau sécurisé à vie: il faudra vous tenir au courant et faire de fréquentes mises à jour! C'est un travail considérable qu'il ne faut pas négliger.

 

Définir une politique

Supposons que vous ayez à construire un réseau d'ordinateurs, et que ce réseau doive avoir un certain niveau de sécurité. Nous allons voir les grandes techniques utilisées en défense, leurs avantages et leurs inconvénients. Un bon réseau utilise plusieurs techniques, intelligemment combinées.

Avant toutes choses, il ne faut pas vous lancer tête baissée dans les documentations techniques ou sur les pages Internet relatives à la sécurité. Il faut prendre le temps de développer une politique de défense claire, efficace et bien pensée.

Vous devez commencez par choisir votre politique générale, et il en existe deux:

Une fois ce choix fait, il y a quelques points dont vous devez absolument tenir compte:

Il faut savoir si vous avez besoin du WWW, de faire du FTP, de l'IRC. Quelles sont les applications que vous utilisez? Quel(s) port(s) utilisent-elles? Quel(s) protocole(s)?

Le mieux serait que l'on ne puisse pas accéder directement aux machines du réseau sécurisé. Vos besoins en entrée seraient alors nuls. Si ce n'est pas le cas, il faut savoir qui peut accéder à quelles machines, avec quel protocole, sur quel port, à quel moment,... Tout doit être précisé clairement.

C'est inévitable, il y aura toujours une petite part de risque, de faille, dans votre système. Plus votre système sera efficace, plus il sera lourd et contraignant. Il faut trouver le juste milieu. N'utilisez pas un système d'authentification par cartes à puces pour lire votre courrier personnel! Un password devrait suffire.

Il faut aussi savoir que les processus d'authentification énervent les utilisateurs. Un utilisateur énervé étant toujours désagréable, évitez les protections démesurées.

Prévoyez aussi l'évolution de votre réseau. S'il y a dix postes cette année, et 15 prévus pour l'année prochaine, votre politique ne changera pas. Par contre, si l'année prochaine, ce sont 150 postes qui sont attendus, il faudra penser dès maintenant à une solution souple et extensible!

 

Une fois ce document terminé, vous aurez toujours à tout moment une liste exacte de vos besoins et vous n'oublierez rien quand vous ferez vos choix. Structurez-le et faites des plan, des dessins topographiques et logiques.

 

4 La cryptographie

Lorsque on sait que le canal de communication n'est pas secret, ou lorsqu'il nous est impossible de le rendre secret (téléphone, Internet,...), il faut crypter nos données de manière à ce qu'elles ne soient lisibles que par un groupe défini et précis de personnes, en possession de la clé de décodage.

C'est le seul moyen de transférer des données de manière sûre dans un canal de communication qui peut être facilement espionné. La cryptographie est utilisée depuis Napoléon dans des tas d'applications, et notamment dans les affaires gouvernementales et dans l'armée.

Il ne faut pas croire que les gens qui utilisent la cryptographie sont tous des vandales, des délinquants ou des pirates. Il y a des tas de raisons pour crypter un message, comme il peut y avoir des tas de raisons pour lesquelles vous envoyez une lettre sous enveloppe et non sur une carte postale.

En Belgique, l'encryption n'est pas encore interdite. Ce n'est malheureusement pas le cas chez nos amis Français qui doivent demander une autorisation spéciale pour utiliser des systèmes cryptographiques et doivent, en plus, déposer un exemplaire des clés auprès d'une instance compétente. Profitons du fait que l'on puisse encore s'en servir pour voir quelques algorithmes...

 

Cryptographie à clé unique

Comme son nom le laisse supposer, cet algorithme se base une clé unique pour les deux parties. C'est donc la même clé qui est utilisée pour le codage et le décodage.

Appelons K la clé unique. Imaginons que deux parties (A et B) veulent s'échanger un message secret. A va chiffrer un message (que nous noterons alpha avec la clé unique K. Il applique K à alpha, ce qui nous donne le message K(alpha). Pour que B puisse décoder le message, il va appliquer K au message reçu. Ce qui nous donne K(K(alpha)), c'est à dire le message alpha original.

Cette méthode présente d'énormes désavantages:

Comme on le voit, cette méthode, utilisée pendant le guerre dans des grosses machines ressemblant à une machine à écrire, souffre de nombreuses lacunes. A l'heure actuelle, cette méthode n'est presque plus utilisée pour des applications un peu sérieuses. Méfiez-vous néanmoins des programmes soit disant sérieux utilisant un algorithme secret. En effet, si se dernier doit rester secret, c’est qu’il est, dans la plupart des cas, faible au niveau cryptographique et par conséquent facilement cassable.

 

RSA

Au lieu d'avoir une clé unique et secrète, chaque partie génère une paire de clés. Une des clés est dite publique et l'autre privée. Comme leur nom le laisse supposer, une des clés peut être librement distribuée à tous les correspondants, tandis que l'autre doit rester secrète.

Toute l'astuce consiste en cette propriété remarquable:

Notons Pu la clé publique, Pr la clé privée et c un message quelconque.

Pu (Pr(c ))=Pr(Pu(c )=c

Autrement dit, la clé publique annule le cryptage de la clé privée et la clé privée annule celui de la clé publique. Les clés publiques et privées sont comme matière et antimatière.

 

Garantir l'origine d'un message

Avec ce système de clés, on peut aussi être sur de l'identité de la personne qui nous envoie un message. Soient les personnes a et b . a envoie un message à b et alpha veut prouver que c'est bien lui qui envoie le message.

Voici ce qui va se passer lors du codage:

b a

P (P (c ))

u r

a crypte le message avec sa clé privée et avec la clé publique de b . Lors du décodage, b n'aura qu'à appliquer un décodage avec sa clé privée, et un second avec la clé publique de b . Le message final sera alors:

 

Pa r(Pb u(Pb u (Pa r(c ))))=c

 

..ce qui est bien le message original!

 

RSA en pratique

 

PGP

PGP (Pretty Good Privacy) est un programme d'encryption de fichiers, que ce soient des textes ou des programmes. Il peut encrypter les fichiers en ASCII pour ensuite ler insérer dans des messages. Vous pouvez ainsi échanger de manière tout-à-fait sûre tous les messages que vous voulez. La robustesse d'une clé à 1024 bits est telle que vous pouvez être certain qu'elle résistera à un supercalculateur actuel. ( Par exemple un CRAY Y/MP) pendant au moins quelques milliers d'années.

PGP permet en plus de signer un message pour en garantir l'authenticité. Imaginons que je vous envoie, sur Internet, un message pour vous dire que le cours est reporté. Cela pourrait très bien être quelqu'un d'autre qui l'écrit, en se faisant passer pour moi rien que pour vous causer des ennuis. Vous devez donc toujours douter d'un message qui n'est pas signé par une méthode sûre.

Voici un exemple de message signé avec ma clé, en utilisant le programme

PGP:

-----BEGIN PGP SIGNED MESSAGE-----

 

Vive les cours de la technothèque!

C'est manu@netline.be qui le dit...

 

-----BEGIN PGP SIGNATURE-----

Version: 2.6.3i

Charset: noconv

iQCVAwUBMjNO92mx20WXHjsFAQGgcAP8C1sGZaqMnh7gAvKT4dBsCGDkBfFtiuV0

k3Xcre4j3mJpYqsGdTg/4FbZuaEQx4RracFZvqTrYXsM2Wm/sgCYbk604rB4j7V6

WrTZEGrmj5G0yxc2B8aaKq1/lNAo85Lx0mo1NKxJvqV6V1xT5jlkR7xfvdvcvaJD

CrL3DNG4UGw=

=Kxu6

-----END PGP SIGNATURE-----

Vous pouvez vérifier, si vous êtes en possession de ma clé publique, que je suis bien l’auteur du message, et qu'il n'a pas été modifié. En effet, ce message étant signé avec ma clé privée, vous pouvez vérifier ma signature avec ma clé publique. De plus, comme je suis le seul à disposer de ma clé privée, je suis le seul à pouvoir faire une signature qui correspond à ma clé publique.

 

SSH Secure Shell

Lorsque vous vous connectez à distance sur une machine avec un remote shell de type Telnet, rsh, rlogin,... vous transférez chaque fois votre password en clair sur le réseau. De plus, on peut facilement faire un dump de votre session pour voir ce que vous avez fait. C'est utile pour avoir des passwords, ou des fichiers de passwords,... Il en va de même pour vos sessions Xwindows qui peuvent être tracées.

SSH est un programme client/serveur qui vous permet d'obtenir un remote shell de manière sécurisée. Dès l'établissement de la connexion, les deux machines s'échangent une clé RSA de 768 bits, fréquemment modifiée. Cette clé n'est jamais écrite sur le disque mais est stockée en mémoire, pour la conserver secrète. Votre password et toute votre session seront protégés par une clé RSA. La protection est efficace puisqu'il faudrait environ 200.000.000 MIPS pour craquer la clé RSA de 768 bits en un an!

SSH encrypte et forwarde aussi les session XWindows et crée de faux fichiers .Xauthority pour tromper les traceurs de sessions XWindows.

 

SSH security tunnels

SSH vous offre la possibilité de créer des tunnels sécurisés entre des machines. Vous pouvez rediriger un port d'une machine A vers un port d'une machine B de manière entièrement transparente.

Si vous vous connectez fréquemment à un serveur FTP, ou si vous lisez votre mail avec Eudora, Netscape ou autre, vous pouvez sécuriser la connexion de manière entièrement transparente. Imaginons que je suis sur une machine extacy.drug.be et que je veux faire une connexion FTP vers la machine linux.netline.be à l'aide d'un compte manu.

Sur extacy.drug.be, je vais installer un tunnel avec linux.netline.be. Je vais par exemple rediriger le port 6666 de ma machine vers le port 21 (FTP) de linux.netline.be:

ssh -l manu -L 6666:linux.netline.be:21 linux.netline.be

Je suis maintenant connecté sur linux.netline.be en tant qu'utilisateur manu et en plus, le port 6666 de ma machine est relié sur le port 21 de linux.netline.be.

Pour faire une connexion FTP, il ne me reste plus qu'à faire: ftp localhost:6666

..et la connexion sera automatiquement transférée et cryptée vers le port 21 de linux.netline.be.

 

SSL Secure Socket Layer

Parfois, sur le Web, on vous demande d'entrer votre numéro de carte de crédit ainsi que sa date d'expiration. Toutes ces informations sont envoyées dans un joli paquet, très pratique pour acheter sur votre compte. Pour ne pas que le premier sniffer venu vous vole vos précieux numéros, Netscape a implémenté SSL (Secure Socket Layer), qui encrypte vos demandes sur le Web, dans les deux sens.

Mieux encore... Quand vous êtes connectés sur un site, par exemple celui de chez VISA, comment savoir qu'il s'agit bien du site VISA et non d'un autre site, qui se fait passer pour le site VISA et qui attends que vous entriez votre code secret? Pour cela, on utilise la certification. Le site VISA doit demander un certificat SSL auprès d'une instance officielle comme VeriSIGN (http://www.verisign.com) qui sera chargé de délivrer et authentifier de manière unique le certificat.

 

 

SET Secure Electronic Transaction

SET a été développé par Visa et Mastercard en collaboration avec d’autres partenaires (Netscape, …) pour effectuer des transactions commerciales au travers du web. Le consommateur ainsi que le commerçant doivent demander un identificateur spécial à leur banque et utiliser un logiciel adhoc (Un Digital Wallet ou portefeuille électronique pour l’utilisateur et un serveur SET pour le vendeur). Ces certificats seront délivrés à partir d’un site Web relié à la banque de l’acheteur et du vendeur. C’est la banque qui assure ainsi la reconnaissance des deux parties et non plus un organisme privé comme s’est le cas avec SSL.

Vous trouverez plus d’information sur le site http://www.mastercard.com/set/.

5 L'authentification

La première étape dans tout mécanisme de sécurité, c'est l'authentification. Pour savoir si un utilisateur a accès ou non à certaines ressources, il faut être sûr de son identité. Il existe plusieurs techniques, plus ou moins valables, que nous allons passer en revue.

 

Les passwords

Le password est secret et est attaché à un utilisateur. Seul l'utilisateur connaît le password. C'est une vieille méthode, utilisée bien avant les premiers ordinateurs, et qui a ses failles:

 

Certains de ces défauts peuvent être évités, en utilisant les techniques simples suivantes:

Si vous utilisez Crack sur une liste de quelques dizaines de passwords de personnes normalement constituées, vous serez certain d'en découvrir quelques-uns. Enormément de gens mettent comme passwords des "mots" de deux lettres, ou leur nom de login suivi d'un chiffre,...

 

L'équivalence

Il ne s'agit pas à proprement parler d'une authentification, mais plutôt d'une dispense d'authentification...

Afin d'éviter de toujours devoir entrer son password lorsqu'on passe d'une machine à l'autre, on a mis au point une authentification par équivalence. Le principe est de dire: si un utilisateur demande un accès à partir d'une machine A d'un réseau vers une autre machine B du réseau, alors, je peux demander à B une dispense d’authentification pour A, c'est à dire que je n'ai pas besoin de lui demander son password. En effet, s'il est déjà connecté sur une machine du réseau, cela signifie qu'il s'est déjà authentifié correctement sur cette machine et donc, qu'il est superflu qu'il le fasse une seconde fois.

Ce système est utilisé en pratique sur des réseaux de machines Unix. Pour éviter de rentrer son password chaque fois qu'on ouvre une application sur une autre machine, on rend des machines équivalentes. On fait confiance à la machine A et on dit que si l'utilisateur a légitimement pu se connecter sur A, alors, il peut aussi légitimement se connecter sur B.

Ce système est extrêmement dangereux et il convient de bien surveiller quelles machines ont le droit de faire cela! Si c'est possible, n'utilisez pas cette méthode et refusez toute authentification par équivalence.

 

Kerberos

Kerberos est aussi un système d'authentification développé au MIT. L'authentification se fait auprès d'un serveur Kerberos qui vous délivre un ticket. C'est ce ticket qui va ensuite vous identifier comme utilisateur auprès des clients qui utilisent Kerberos. Un ticket a une durée de vie fixe et un nouveau ticket doit être délivrée par le serveur Kerberos dès que sa durée de vie est écoulée.

Attention: Le principe utilisé dans Kerberos étant la cryptographie à clé publique, le serveur Kerberos doit être physiquement inaccessible.

En pratique, Kerberos est rarement utilisé parce que c'est un système assez lourd. En plus, il a été développé au MIT, pour le MIT et pas pour les autres. Il ne s'agit donc pas d'une solution très adaptée, mais il faut savoir que cela existe.

 

Crypto Card

Plutôt que d'utiliser un password, qui a tous les désavantages que l'on vient de voir, on peut utiliser une carte électronique pour s'authentifier. C'est par exemple la technique utilisée si vous faites du Home Banking chez vous. On vous livre une petite carte (un DigiPASS) qui ressemble à une calculatrice: c'est en fait un automate cryptographique à algorithme RSA.

La clé privée se trouve dans une puce située dans votre DigiPASS. La clé publique se trouve, elle, dans sur le serveur sur lequel vous devez vous identifier. Pour vérifier que vous êtes en possession de la bonne clé, le serveur vous donne un défi à signer avec la clé privée de votre DigiPASS. Un défi n'est rien d'autre qu'un nombre, le plus souvent de 12 chiffres.

Vous entrez ce nombre dans votre DigiPASS et vous lui demandez de le signer avec sa clé privée. Vous n'avez plus qu'à renvoyer la signature (le plus souvent de 6 chiffres) au serveur. Celui-ci est en possession de votre clé publique et peut donc vérifier si la signature appliquée est celle que l'on attendait.

Que se passe-t-il si on vous vole votre DigiPASS? Là non plus, pas de problèmes, on a pensé à tout! La mémoire du DigiPASS est aussi protégée par un mot de passe. Si un mot de passe erroné est entré trois fois de suite, la puce est brûlée par une surtension électrique à ses bornes, ce qui la rend tout à fait inutilisable. Pour craquer le système, il faut donc disposer du DigiPASS et de son password, ce qui fait beaucoup de malchance!

A l'heure actuelle, cette méthode est l'une des plus sures et des plus faciles à utiliser.

 

Autres authentifications

Il existe encore d'autres méthodes qui sont rarement utilisées pour des authentifications classiques sur des ordinateurs, en raison du manque de commodité. De plus, la plupart d'entre elles ne sont pas encore parfaitement au point. Citons en vrac les authentifications:

 

 

6 Les attaques réseau

Apprendre à se protéger, c'est connaître les techniques de son adversaire. Avant de prendre des mesures préventives, il faut savoir contre quoi on doit se prémunir. Plus il y a des services qui tournent sur votre machine, plus elle sera vulnérable. Ne croyez pas que tous les programmes sont bien conçus, bien écrits et sans trou de sécurité.

Même des programmes qui existent depuis 20 ans, qu'on modifie sans cesse, ont encore des trous. Il faut donc se tenir au courant en lisant par exemple les avis du CERT sur les problèmes de sécurité. Suivez leurs conseils. Les avis du CERT sont toujours signés avec PGP. Ne suivez jamais un avis du CERT qui ne serait pas signé!

Nous allons donc passer en revue les quelques types d'attaques classiques et faciles pour bien se défendre. Il en existe des tas. Ce cours n'étant pas un cours de piratage, je ne m'attarderais pas sur des détails.

 

Sniffing

Les machines qui se trouvent sur un réseau ne s'intéressent en général qu'aux paquets qui leurs sont destinés, les autres étant écartés.

Si on fait passer l'interface réseau en promiscius mode, c'est à dire qu'au lieu d'envoyer au kernel uniquement les paquets qui lui sont destinés, on lui envoie tous les paquets qui transitent sur le réseau, on peut espionner tous les échanges de données, en ce compris des passwords, du courrier et bien d'autres choses.

Pour éviter cela, on vend des cartes réseau qui refusent de passer en promiscius mode ( par exemple chez 3Com) . Mais on peut quand même capturer tous les paquets qui sont destinés à la machine locale. Si on fait cela sur un serveur où travaillent 50 personnes, vous pourrez capturer tout ce que font ces 50 personnes sur réseau (mail, password,...).

Si vous faites une connexion Telnet (ou FTP) sur une machine à partir de ou vers le réseau que je suis en train de sniffer, toutes les commandes que vous tapez sont envoyées sur le réseau. Je pourrai alors capturer tout cela avec un sniffer et je serais en possession de votre login et de votre password. De même, j'entrerai en possession de tous les fichiers transférés, que ce soit du courrier électronique ou tout autre fichier.

C'est l'attaque la plus méchante et la plus efficace car elle est absolument indécelable. Par contre, il est nécessaire d'avoir un accès physique au réseau. Pour la contrer, il ne reste qu'à encrypter absolument toutes les sessions critiques. C'est très lourd, et souvent assez complexe, mais c'est le prix à payer pour une bonne sécurité.

 

Finger

Idéal pour avoir des informations sur les utilisateurs, et surtout des noms de login. Permet de voir si quelqu'un travaille sur la machine et est susceptible de détecter une attaque.

Imaginons que je veuille savoir qui est connecté sur la machine hash.drug.be:

root@extacy:~# finger @hash.drug.be

[hash.rtfm.be]

Login Name Tty Idle Login Time Office Office Phone

manu manu p1 89d Oct 10 20:52 (192.168.2.2)

root root p0 1 Oct 10 20:51 (192.168.2.2)

On voit que l'utilisateur manu et l'utilisateur root sont tous deux connectés. On sait donc que le compte manu existe et on peu commencer à orienter ses recherche par là...

Cherchons quelques informations supplémentaires sur l'utilisateur manu de cette manière:

root@extacy:~# finger manu@hash.drug.be

[hash.rtfm.be]

Login: manu Name: manu

Directory: /home/manu Shell: /bin/bash

On since Thu Oct 10 20:52 (EET) on ttyp1 from 192.168.2.2

0 days 5 hours idle

No mail.

No Plan.

Avant d'attaquer une machine, le pirate préfère savoir si quelqu'un travaille dessus. Si c'est ce cas, il préférera ne pas attaquer, de peur d'être repéré et de perdre ainsi tout le bénéfice de son "travail".

Sans compter que Finger a été la source de nombreux bugs, pouvant rendre exécutable une partie des paramètres qu'on lui passait. Finger étant exécuté par root, les commandes pouvaient avoir de graves conséquences.

 

Bridez votre Finger!

Il vaut donc calmer les ardeurs de votre Finger, en le remplacent pas une version un peu différente. Ceci est beaucoup mieux:

root@extacy:~# finger @extacy

[extacy.drug.be]

-----------------------------------------------------------------------------

** Welcome to this host's finger system, root@extacy.drug.be **

This site is running cfingerd 1.2.1.

-----------------------------------------------------------------------------

Finger "services@this.host" to get a listing of finger query services

this system provides.

Username Real name Idletime TTY Remote console location

-----------------------------------------------------------------------------

If that scrolled by your screen too fast, please put a "| more" at the end

of your finger command.

 

Le pirate croit en toute bonne foi que personne n'est sur la machine, et commence son attaque. Pas de chance pour lui, en réalité, voici la liste des personnes présentes sur la même machine, au même moment:

root@extacy:~# who

root tty1 Oct 10 22:20

root ttyp0 Oct 10 22:21 (:0.0)

root ttyp1 Oct 10 22:57 (:0.0)

root ttyp2 Oct 10 22:57 (:0.0)

Et son attaque sera de suite repérée!

 

FTP

De nombreux serveurs FTP ont des bugs ou sont mal configurés ce qui rend disponible le fichier de passwords à tout le monde via le compte anonymous.

Certains serveurs FTP peuvent aussi exécuter des commandes qui peuvent parfois être détournées au profit des pirates. Refusez l'accès anonymous sur votre serveur FTP ou, si ce n'est pas possible, placez le serveur FTP sur une machine avec un acompte root accessible uniquement depuis la console.

Voici un exemple de bug, très dangereux:

hash:~$ ftp extacy

Connected to extacy.24heures.rtfm.be.

220 extacy FTP server (Version wu-2.4(1) Sat Feb 18 13:40:36 CST 1995) ready.

Name (extacy:manu): manu

331 Password required for manu.

Password:

230 User manu logged in.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp> site exec passwd root

200-passwd root

200-Changing password for root

Cela a pour effet de supprimer, purement et simplement, le password root. Ca marche extrêmement bien sur certaines machines!

 

NFS

Filesystem exportés, filesystems oubliés! NFS vous permet de partager un disque entre plusieurs machines, un peu comme sous Windows. Sous Unix, NFS utilise le protocole TCP/IP et on peut donc monter des disques Unix depuis n'importe quelle machine à travers Internet, ce qui rend le système plus pratique mais plus dangereux en cas d'oublis...

Avec showmount, on peut facilement trouver une cible facile. Exemple d'un utilisateur qui a oublié que son disque était exporté par NFS:

root@foo:~# showmount -e extacy.drug.be

Export list for extacy:

/dosc/slakware (everyone)

/cdrom (everyone)

/ (everyone)

 

IP-Spoofing

Comme vu plus haut, les utilisateurs de certaines machines ne sont pas obligées de s'identifier auprès d'autres machines. Dès lors, il est possible d'envoyer des commandes à une machine en lui faisant croire qu'on est une des machines privilégiées. Aucun password ne nous sera demandé.

Cette méthode demande un peu plus de doigté technique, et nous ne la détaillerons pas plus. Sachez que cela existe, et soyez sur vos gardes.

Il n'existe malheureusement pas de solution au niveau protocole pour lutter contre ce type d'attaque. On peut cependant utiliser l'astuce suivante:

Imaginons une équivalence entre les machines A et B. Un pirate, sur une machine C, se faisant passer pour la machine B, envoie des commandes vers la machine A. Avant que la machine A n’accepte les paquets, elle va demander à la machine B si c'est bien elle qui vient d'envoyer le paquet que C a émis. Puisque ce paquet a en réalité, été envoyé par C , B répondra par la négative et A écartera le paquet du pirate.

 

DNS-Spoofing

Renvoyer des résultats inattendus comme nom de machine peut vous donner des accès très intéressants. La résolution des noms se réalise au moyen de la fonction gethostbyname(). Le résultat de cette fonction est souvent utilisé tel quel dans des commandes.

Pensons à un programme comme ceci:

host = gethostbyname("193.75.199.3");

exec("telnet %s",host);

Si la fonction gethostbyname() retourne foobar; reboot, la machine va exécuter telnet foobar; reboot. La première commande échoue mais ensuite la seconde s’exécute et la machine redémarre!

 

7 Les firewalls

Un firewall., mur coupe-feu en français, c'est comme un routeur, sauf qu'au lieu de router sans réfléchir, il obéit à une police, un ensemble de règles très précises.

Ces règles vont par exemple empêcher les paquets FTP de rentrer dans votre réseau sécurisé. Ainsi, même si votre serveur FTP interne est mal configuré et que tout le monde peut écraser vos fichier, vous n'aurez pas à vous tracasser puisque personne ne pourra faire de connexions FTP sur votre machine. Elles seront arrêtées par le firewall.

Le firewall s'occupe aussi de vous informer de qui fait quoi. Vous pouvez ainsi détecter la moindre anomalie, le moindre geste suspect. Il est évidement tout à fait fondamental que personne à part vous n'ait de compte sur le firewall.

 

Les types de machines

Packet Filter

Le packet filter, comme son nom l'indique, filtre les paquets dans les deux sens. Pour ce faire, il utilise des fonctions de routage interne classiques. Ce sont des protections efficaces, mais pas toujours suffisantes. Certaines attaques complexes peuvent déjouer les règles.

De plus, configurer un Packet Filter sans failles n'est pas facile et le risque d'erreur est grand. Il est généralement utilisé en tête de réseau comme premier filtre avec un autre système de défense derrière.

Par exemple, certains routeurs comme les CISCO ou les Livingston ont cette possibilité.

 

Screening Router

Evite le IP spoofing en vérifiant que les adresses d'origine des paquets qui arrivent sur chaque interface sont cohérentes et qu'il n'y a pas de mascarade. Exemple: un paquet qui a une adresse de votre réseau interne et qui vient de l’extérieur est un Spoofed Packet. Il faut le jeter et prévenir le plus vite l'administrateur qu'il y a eu tentative d'attaque. Screening Routers.

Un screening router est un routeur qui filtre les paquets sur base :

Le système a ses limites :

 

Dual-Homed Host

Il s'agit d'une machine que n'a pas de fonction de routage au niveau kernel, c'est à dire au niveau du protocole. Les paquets arrivant sur les interfaces réseaux sont donc bloqués.

On contourne le routage du niveau kernel par un routage spécial, au niveau application, avec un système de store-and-forward. Les applications utilisées pour le routages sont des programme tels que SOCKS,...

Le grand désavantage de cette méthode est que les clients doivent être écrits pour utiliser ce routage au niveau application. Les paquets doivent donc être redirigés vers un port et une machine spéciale avant d'être forwardés sur le réseau.

 

Les architectures

Bastion Host

C'est l'architecture de défense la plus classique, mais aussi la moins coûteuse: une machine, située en tête de réseau, reçoit tout le trafic, éventuellement déjà filtré par un screening-router, et prend des mesures de sécurité.

Le bastion host peut exister avec une ou plusieurs interfaces réseau configurées. Il est à noter qu'on est beaucoup plus à l'abri des attaques avec plusieurs interfaces réseau, puisque les réseaux sont physiquement séparés.

 

Dual-Bastion

On a parfois besoin d'une zone moins bien protégée qu'une autre. Je pense à une zone moins sécurisée que l'on pourrait joindre de l'extérieur avec par exemple un serveur WWW, un serveur de mail, un DNS,... et une zone très sécurisée pour, par exemple, les machines internes de la société.

On utilise alors un filtrage à deux niveaux: un premier bastion host qui laisse juste passer ce qu'il faut pour la zone tampon, constituée des serveurs de mail,... et un second bastion, qui relie le réseau très sécurisé à la zone tampon. Le réseau très sécurisé bénéficie alors d'un filtrage à deux étapes.

 

 

8 IP-Masquerading

IP-Masquerading est une technique géniale pour protéger très efficacement un réseau local des attaques, tout en gardant une grande transparence. A l'heure actuelle, seul Linux est capable de réaliser cela pour un prix raisonnable - Linux est gratuit! -. Le fonctionnement de ce système n'est pas difficile à comprendre, mais bien à expliquer!

Dans les grandes lignes, voici la philosophie: on déclare une machine comme étant ambassadrice pour un réseau donné à sécuriser. On dit aux machines d'utiliser cet ambassadeur pour faire leurs demandes. En pratique, vous devez configurer cette machine comme gateway pour tous les clients. Ce gateway n'est rien d'autre qu'une machine avec Linux et IP-Masquerading correctement configuré. Cela se fait à l'aide du programme ipfwadm, qui bénéficie d'une documentation très claire..

Lorsqu'une demande arrive sur le gateway depuis de réseau local, elle est mise de coté et le gateway génère une nouvelle demande, identique, qu’il envoit à l’extérieur. Lorsque le gateway a la réponse, il la renvoie à la machine qui avait demandé le paquet. Le client croit que son paquet a fait un chemin normal et est revenu par la voie normale alors qu'en réalité, il a été intercepté.

Ce système présente des avantages incroyables, qu'on ne trouve nulle par ailleurs:

 

 

Bibliographie

crack : ftp://ftp.win.tue.nl/pub:security/crack4.1.tar.z

passwd+: ftp://ftp.darmouth.edu/pub/security/passwd+.tar.z

npasswd: ftp://ftp.cc.utexas.edu/pub/npasswd/npasswd.tar;z

COPS : ftp://ftp.win.tue.nl/pub:security/cops_104.tar.z

tiger: ftp://net.tamu.edu/pub/security/TAMU/tiger-2.2.3.tar.gz

tripwire: ftp://coast.cs.purdue.edu/pub/coast/tripwire/tripwire-1.2.tar.z

TCP/IP Network Administration

Craig Hunt

1st Edition August 1992

ISBN: 0-937175-82-X, Order Number: 82X

502 pages, $29.95

Le routage dans Internet

Christian Huitema

Paris, Eyrolles, 1995

ISBN 2-212-08902-3