Forums d'entraide informatique - Astuces - Conseils
Des experts à votre écoute pour tous vos dysfonctionnements
Vous n'êtes pas identifié.
Pages: 1
- Accueil forums
- » Sécurité
- » Initiation à la sécurité dans le domaine informatique ! (très bon)
#1 02-09-2008 17:00:48
- Admin
- Administrateur
- Date d'inscription: 30-07-2008
- Messages: 683
Initiation à la sécurité dans le domaine informatique ! (très bon)
Le but de ce document est d’accroître vos connaissances et votre maîtrise dans la sécurité
informatique et celle des réseaux.
Ce document est sensé concerner les particuliers mais aussi les professionnels. Le public
auquel s’adresse ce document doit seulement connaître les notions de base suivantes :
Constitution d’un PC, ainsi que de ses périphériques.
Constitution logique et physique d’un réseau.
Constituants matériels d’un réseau.
Systèmes Windows 95, 98, NT 4 en version WorkStation et Serveur.
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.
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. Ces
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.
Nous n'avons 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.
OBJECTIF DE CE
DOCUMENT
INTRODUCTION
1Initiation à la sécurité des
systèmes d’information
dans les collectivités
locales
Connaissances à acquérir pour
pouvoir concevoir, gérer et dépanner
un réseau.
Livre Blanc
Les différentes connaissances à acquérir pour pouvoir concevoir, gérer et
dépanner un réseau.
111
Chambre de Commerce et d’Industrie de Saône et LoireInitiation à la sécurité des systèmes d’information dans les collectivités locales.......1
TABLE DES MATIERES.............................................................. 2
OBJECTIF DE CE DOCUMENT................................................... 1
INTRODUCTION......................................................................... 1
Pré-requis et objets du cours 1
Pourquoi la sécurité? 1
Connaître ses ennemis 2
Virus 2
Worms 2
Trojan horse 2
Back doors 2
Password Cracking 2
Social Engineering 3
LES TYPES DE SÉCURITÉ......................................................... 3
La sécurité physique 3
Une machine Unix 3
Le disque dur 3
Le bouton reset 3
LA SÉCURITÉ RÉSEAU.............................................................. 3
Définir une politique 4
LA CRYPTOGRAPHIE................................................................. 4
Cryptographie à clé unique 5
RSA 5
Garantir l'origine d'un message 6
RSA en pratique 6
PGP 6
SSH Secure Shell 7
SSH security tunnels 7
SSL Secure Socket Layer 7
SET Secure Electronic Transaction 7
L'AUTHENTIFICATION............................................................... 8
Les passwords 8
L'équivalence 8
Kerberos 9
Crypto Card 9
Autres authentifications 9
LES ATTAQUES RÉSEAU......................................................... 10
TABLE DES MATIERES
2Sniffing 10
Finger 10
Bridez votre Finger! 11
FTP 11
NFS 12
IP-Spoofing 12
DNS-Spoofing 12
LES FIREWALLS....................................................................... 12
Les types de machines 13
Packet Filter 13
Screening Router 13
Dual-Homed Host 13
Les architectures 13
Bastion Host 13
Dual-Bastion 13
IP-MASQUERADING................................................................. 15
BIBLIOGRAPHIE...................................................................... 16
3Connaî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 E-mail 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, 98 et NT.
D’autres virus ont également vu le jour, 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 se 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 a 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é.
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).
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:
LES TYPES DE
SÉCURITÉ
LA SÉCURITÉ RÉSEAU
3• Elles font appel à des fonctions pas ou peu documentées, et dont la plupart des
administrateurs ignorent l'existence. Tous les jours, on découvre de nouveaux
trous de sécurité.
• Elles peuvent s’exécuter de manière invisible (ou en tous cas, peu visible). Une
attaque peut se réaliser sur la machine que vous êtes en train d'utiliser, sans que
vous ne vous aperceviez de quoi que ce soit. On peut même espionner votre
écran à distance pour voir ce que vous faites.
• La localisation de l'attaque et donc l'identité du pirate sont très difficiles à
déterminer. Une attaque bien menée se réalise donc presque sans risques.
• Elle se fait à des moments inattendus, comme la nuit, quand personne n'est là
pour arrêter ou tenter de localiser le pirate.
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 commencer par choisir votre politique générale, et il en existe deux:
• Tout ce qui n'est pas explicitement permis est interdit
• Tout ce qui n'est pas explicitement interdit est permis
Une fois ce choix fait, il y a quelques points dont vous devez absolument tenir
compte:
• Quels sont vos besoins en sortie?
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)?
• Quels sont vos besoins en entrée?
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.
• Le risque que vous êtes prêt à prendre?
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.
• Pensez à l'avenir!
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 plans, des dessins topographiques et logiques.
Lorsqu'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.
LA CRYPTOGRAPHIEC'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 peut 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:
• Si une personne entre en possession de la clé, elle peut non seulement lire tous
les messages échangés par les parties, dans les deux sens, mais aussi se faire
passer pour une des parties en chiffrant le message avec la clé.
• L'échange des clés doit se faire par un canal tout à fait sûr, pour éviter que
quiconque n'en prenne connaissance. Pour faire les choses correctement, il
faudrait une rencontre physique entre les deux parties pour procéder à l'échange
des clés, ce qui n'est pas toujours possible.
• On est obligé d'avoir une clé unique pour chaque paire de correspondants. C'est
assez lourd à gérer.
• Pour obtenir une certaine résistance à la cryptoanalyse, les clés doivent êtres
assez longues.
• Si quelqu'un se trouve en présence d'un texte crypté avec la clé et du texte en
clair qui y correspond, on peut assez facilement en déduire la clé de codage.
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 χ un message quelconque.
5 Pu (Pr(χ))=Pr(Pu(χ)=χ
Donc, 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 α et β. α envoient un message à β et
alpha veut prouver que c'est bien lui qui envoie le message.
Voici ce qui va se passer lors du codage:
β α
P (P (χ))
u r
α crypte le message avec sa clé privée et avec la clé publique de β. Lors du
décodage, β n'aura qu'à appliquer un décodage avec sa clé privée, et un second
avec la clé publique de β. Le message final sera alors:
Pα
r(Pβ
u(Pβ
u (Pα
r(χ))))=χ
..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é, en utilisant le programme PGP:
-----BEGIN PGP SIGNED MESSAGE-----
Vive les cours de la technothèque!
-----BEGIN PGP SIGNATURE-----
Version: 2.6.3i
Charset: noconv
iQCVAwUBMjNO92mx20WXHjsFAQGgcAP8C1sGZaqMnh7gAvKT4dBsCGDkBfFtiu
V0
k3Xcre4j3mJpYqsGdTg/4FbZuaEQx4RracFZvqTrYXsM2Wm/sgCYbk604rB4j7V6
WrTZEGrmj5G0yxc2B8aaKq1/lNAo85Lx0mo1NKxJvqV6V1xT5jlkR7xfvdvcvaJD
CrL3DNG4UGw=
=Kxu6
-----END PGP SIGNATURE-----
Si vous êtes en possession de la 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 la clé privée, vous
pouvez vérifier la signature avec la clé publique. De plus, comme je suis le seul à disposer de la clé privée, je suis le seul à pouvoir faire une signature qui correspond
à la 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 www.test.com et
que je veux faire une connexion FTP vers la machine www.site.fr à l'aide d'un
compte manu.
Sur www.test.com, je vais installer un tunnel avec www.site.fr. Je vais par exemple
rediriger le port 6666 de ma machine vers le port 21 (FTP) de www.site.fr:
ssh -l manu -L 6666:www.site.fr:21 www.site.fr
Je suis maintenant connecté sur www.site.fr en tant qu'utilisateur manu et en plus,
le port 6666 de ma machine est relié sur le port 21 de www.site.fr.
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
www.site.fr.
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
7du 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/.
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:
• La sécurité n'est assurée que si le fichier de password reste secret. Même si les
passwords sont cryptés dans le fichier, il vaut mieux qu'il ne soit pas accessible.
• Il est toujours possible de forcer quelqu'un à dévoiler son password, par la force,
par chantage, par sa secrétaire,...
• Il est possible d'intercepter un password, au moment où l'utilisateur le tape sur
son clavier, ou au moment où il transite sur le réseau.
• Les passwords sont souvent mal choisis: prénom, nom de son chien, plaque de
voiture, date de naissance,... On peut donc les deviner assez facilement.
Certains dictionnaires regroupant des passwords courants existent d'ailleurs.
• S'ils sont retenus par cœur, ils doivent revêtir un caractère logique: un mélange
de morceaux de mots, souvent groupés en syllabes prononçables.
• S'ils sont écrits, il y a toujours un risque de découvrir l'endroit où ils sont
stockés. Un password ne venant jamais seul, on a de fortes chances de tomber
sur d'autres informations confidentielles.
• Ils changent rarement. Si vous possédez le password de quelqu'un, vous
pourrez bénéficier de son accès tant qu'il ne changera pas de password, c'est à
dire pendant longtemps...
Certains de ces défauts peuvent être évités, en utilisant les techniques simples
suivantes:
• Sous Unix, rendez la liste de password illisible par les utilisateurs normaux en
utilisant les Shadow Passwords.
• Forcez les utilisateurs à changer fréquemment de password. Vous pouvez
facilement écrire un script qui fait cela automatiquement tous les jours.
• Refusez les mots de passe triviaux ou trop courts. Un bon mot de passe doit
contenir 8 signes au minimum, être composé de lettres majuscules et minuscules
et de chiffres. Vous pouvez remplacer des lettres par des chiffres qui y
ressemblent. (Exemple: SpiderMAN devient 5p1derMAN)
• Sous Unix, utilisez Crack: il teste à l'aide d'une série de dictionnaires si les
passwords ne sont pas trop simples à deviner, ou si ce ne sont pas des
password courants (gibson, toyota,...). Il essaye aussi toutes les combinaisons
avec les noms de logins, les initiales,...
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...
L'AUTHENTIFICATIONAfin 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:
• par la voix
• par les empreintes digitales
9• par une photo de la rétine
• par empreinte volumique de la main (méthode utilisée aux Jeux Olympiques
d'Atlanta)
• par analyse de l'écriture
• par analyse morphologique (analyse des traits du visage)
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, y 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 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 perso.lesite.com:
root@test:~# finger @perso.lesite.com
[perso.rtfm.com]
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@test:~# finger manu@perso.lesite.com
[perso.rtfm.com]
LES ATTAQUES RÉSEAULogin: 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@test:~# finger @test
[www.test.com]
-----------------------------------------------------------------------------
** Welcome to this host's finger system, root@www.test.com **
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@test:~# 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 test
Connected to test.24heures.rtfm.com.
220 test FTP server (Version wu-2.4(1) Sat Feb 18 13:40:36 CST 1995) ready.
Name (test: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
11200-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 www.test.com
Export list for test:
/dosc/slakware (everyone)
/cdrom (everyone)
/ (everyone)
IP-Spoofing
Comme vu plus haut, les utilisateurs de certaines machines ne sont pas obligés 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ée 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!
Un firewall. C’est à dire un 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 fichiers, 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 FIREWALLSLes 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 :
• de l'adresse IP source
• de l'adresse IP de destination
• du type de protocole (TCP, UDP, ICMP)
• du port
Le système a ses limites :
• la syntaxe pour définir les filtres devient vite complexe
• certains services (FTP, RPC) sont très difficiles à filtrer
• aucun fichier log ne recense les attaques
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
routage sont des programmes 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.
13IP-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 envoie à 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:
• Le firewall est absolument transparent pour toutes les applications. Que ce soit
un programme de mail, de l'IRC ou du Real-Audio!
• C'est le gateway qui réalise toutes les demandes. On n’a donc besoin que d'une
seule adresse IP réelle, les autres pouvant être fictives. Vous pouvez d'ailleurs
vous en servir chez vous, pour relier plusieurs machines sur Internet en même
temps avec un seul modem.
• IP-Masquerading offre une excellente protection contre les attaques. Il est
d'ailleurs (jusqu'à preuve du contraire) d'accéder aux ressources internes.
• Le système est simple à mettre en oeuvre.
• Linux vous offre les fonctionnalités d'un firewall évolué pour protéger le firewall
lui-même.
IP-MASQUERADING
15Internet Client Domain Controller
Username
Domain
Pwd Hash
6
NT Server
5
7 Encrypted
Token
8,9
Internet Client NT Server
Access MDB
Database Fi le
IIS NT Server
ASP File
Using ADO
Connect as
IUSR_Machine
Logged on
User:
PaulEn
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/tri … -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
BIBLIOGRAPHIE
Cordialement
L'équipe Parisdepannage.fr
Hors ligne
Pages: 1
- Accueil forums
- » Sécurité
- » Initiation à la sécurité dans le domaine informatique ! (très bon)
2008 Parisdepannage |Plan du site|Forums |Blog|Lexique ![]()