original in en Georges Tarbouriech
en to fr Georges Tarbouriech
Georges est un vieil utilisateur d'Unix (commercial et libre). Il s'intéresse
beaucoup aux outils de sécurité libres et apprécie leur grande qualité.
La sécurité a toujours été l'une des préoccupations majeures des administrateurs
systèmes. Toutefois, suite à "l'explosion" de l'Internet le risque d'intrusion
est devenu beaucoup plus élevé. Statistiquement, si le nombre d'utilisateurs
connectés augmente, le nombre de pirates suit la même courbe ascendante. En
conséquence, le développement de logiciels de sécurité a subi une croissance
exponentielle. Encore une fois, merci à la communauté du logiciel libre,
puisqu'elle nous a fourni les meilleurs outils jamais vus et une grande
quantité de documentation.
Vous trouverez de nombreux liens intéressants dans la partie références à la fin
de cet article. De toute évidence, ce que nous mentionnerons ici ne peut être
exhaustif. Les outils choisis sont ceux utilisés quotidiennement ou ceux qui ont
été testés.
Cet article est destiné aux utilisateurs particuliers autant qu'aux
administrateurs, puisque certains outils sont prévus pour la protection des
machines et d'autres pour améliorer la sécurité des réseaux.
La plupart de ces outils fonctionnent sous de nombreuses saveurs d'Unix (sinon
toutes), qu'il s'agisse d'Unix commercial ou libre. Enfin, cet article n'est pas
un "Comment sécuriser votre réseau ou votre machine" mais une présentation de
plusieurs outils que vous pouvez (devez) utiliser pour améliorer la sécurité
d'un réseau ou d'une machine.
Appelons cette partie "outils pour whitehats (les administrateurs) pour protéger
redhat contre les blackhats (les pirates)" :-)
La plupart des distributions Linux (pas seulement RedHat!) contiennent de
nombreux bons outils de sécurité. Ils peuvent être utilisés pour rendre votre
machine plus sûre.
Parmi ceux-ci nous pouvons citer TCPWrapper, PAM (Pluggable Authentication Modules),
les shadow utilities... Comme ils font partie des distributions vous trouverez
beaucoup à lire : HOWTO, man pages, par conséquent, nous ne nous
éterniserons pas sur le sujet.
Commençons par les shadow utils. Pour faire court, ils
permettent le cryptage des mots de passe. Le fichier /etc/passwd est remplacé
par le fichier /etc/shadow.
PAM est quelque chose de plus élaboré. Comme le nom l'indique,
il s'agit d'une autre méthode d'authentification. PAM permet de limiter l'accès
des utilisateurs à des services. De nombreuses restrictions peuvent être
définies à partir de fichiers de configuration, rendant ainsi l'administration
plus facile. Normalement ces fichiers se trouvent dans le répertoire /etc/pam.d.
Pour ce qui concerne TCPWrapper, il suffit de dire qu'il permet
de restreindre l'accès aux services à certains hôtes.
Ceux-ci peuvent être autorisés ou rejetés par l'intermédiaire de deux fichiers :
/etc/hosts.allow et /etc/hosts.deny.
TCPWrapper peut être configuré de deux manières différentes : soit en déplaçant
les démons, soit en modifiant le fichier /etc/inetd.conf.
Si TCPWrapper ne fait pas partie de votre saveur d'Unix, vous le
trouverez sur
ftp://ftp.porcupine.org/pub/security
Et maintenant, vous allez comprendre pourquoi nous n'avons pas beaucoup parlé
des outils mentionnés ci-dessus : un seul outil est capable de gérer tout cela
tout en vous instruisant. Le seul et unique Bastille-Linux. Si
vous n'installez qu'un seul outil, c'est le bon! Il ne fait pas (encore?) partie
des distributions mais vous pouvez l'obtenir sur http://bastille-linux.sourceforge.net
Au fait, nous n'allons rien dire de Bastille-Linux!!! C'est inutile, puisqu'il
existe un excellent article à son sujet dans le numéro de Septembre de
LinuxFocus écrit par mon compère Frédéric : il vous dit tout. Si vous ne l'avez
pas encore lu, jetez un oeil là.
Ajoutons que Bastille-Linux est un outil indispensable!
Un autre outil générique pour l'amélioration de la sécurité se nomme
xinetd. Il est disponible sur
http://www.xinetd.org. Désolé, mais nous
n'allons pas en parler non plus!!! Encore une fois, Frédéric a fait tout le
travail dans le numéro de Novembre de LinuxFocus. Vous pouvez le lire
ici.
C'était la partie FredFocus...
Ne t'inquiète pas pour l'argent Fred, je peux attendre...
Voyons maintenant quelques outils spécifiques.
Les Unixes libres fournissent des outils permettant de transformer votre machine
en firewall. Le noyau 2.2 propose ipchains. Le précédent noyau
2.0 utilisait ipfwadm. Pour qu'ipchains ou ipfwadm
fonctionnent, le noyau doit être compilé avec les options adaptées. Une grande
quantité d'information est disponible sur le sujet grâce aux HOWTO notamment,
par conséquent, une fois de plus, nous n'en dirons pas davantage.
En bref, un firewall est un outil de filtrage de paquets. Le travail essentiel
concerne sa configuration. C'est-à-dire qu'un firewall mal configuré peut
devenir très dangereux.
Toutefois, les firewalls sont des outils importants et il en existe une grande
quantité.
Par exemple, Bastille-Linux fournit un firewall également basé sur ipchains.
Si vous visitez http://www.linuxapps.com
et tapez "firewall" dans le champ de recherche, vous obtiendrez au moins 40
réponses. La plupart sont des interfaces graphiques pour l'administration
d'ipchains ou d'ipfwadm. D'autres sont vraiment de très gros outils, avec des
tonnes de fonctionnalités, comme T.REX par exemple, disponible sur
http://www.opensourcefirewall.com.
Toutefois, ne vous méprenez-pas : un firewall est une obligation sur un réseau,
mais la sécurité du réseau ne peut se contenter d'un firewall. Un pirate peut
casser un firewall en une quinzaine de minutes! Vous voici avertis.
Nous voici au coeur du problème. L'idée est la suivante : utiliser les outils
des pirates pour vérifier les vulnérabilités de votre réseau (ou machine).
Dans ce domaine, vous bénéficiez de deux outils extraordinaires mais il en
existe beaucoup d'autres.
Le premier se nomme nmap. Vous pouvez télécharger nmap depuis http://www.insecure.org.
De plus vous trouverez sur ce site des tas d'informations, des liens...
nmap permet de vérifier les ports ouverts sur une machine de votre réseau.
Certes, vous pouvez faire la même chose avec des commandes telles que lsof ou
netstat, mais seulement sur votre propre machine.
Evidemment, nmap permet aussi de vérifier votre machine.
nmap fournit de nombreuses informations : par exemple, il peut vous dire quel est
l'OS en service, quels sont les ports dangereux ouverts... Et enfin, nmap est
vraiment très facile à utiliser.
Il peut être lancé à partir d'un shell ou d'une interface graphique nommée
nmapfe. L'interface est basée sur la bibliothèque gtk. La version actuelle de
nmap est la 2.53. Il fonctionne sous de nombreuses saveurs d'Unix et il est
disponible sous forme de code source, de rpm, avec ou sans interface graphique.
nmap est un outil indispensable aux sysadmins!
Merci beaucoup Mr.Fyodor et félicitations pour ce très beau travail.
Le second se nomme nessus. Il peut être téléchargé depuis http://www.nessus.org, des liens vous renvoyant
vers des sites ftp de différents pays. Nessus fonctionne selon l'architecture
client/serveur et le code source Posix est utilisable sous de nombreuses
versions d'Unix. Il existe même un client Win32 (pour que vous le sachiez).
Nessus utilise nmap (vous voyez qu'il est indispensable!) et la bibliothèque gtk
pour son interface graphique.
La version actuelle est la 1.06 et grâce à elle vous pouvez scanner un réseau
entier par une seule commande, à savoir l'adresse réseau. Par exemple, taper
l'adresse 192.168.1.0/24 dans le champ "target" scannera les 255 machines de ce
réseau.
Même si nessus est un peu plus complexe que nmap, il reste très facile à
utiliser et possède de nombreuses fonctionnalités. Par exemple, il peut générer
des rapports, peut comparer ces rapports... Une autre fonctionnalité est
intéressante : nessus propose des solutions aux problèmes détectés lors d'un
scan. Tant que les machines sont des machines Unix, les suggestions sont souvent
bonnes. Elles seront un peu moins appropriées pour d'autres OS. De toutes
façons, ce n'est pas le point majeur.
Voici l'exemple d'une machine très vulnérable :
Nessus a une autre particularité : il fonctionne avec des plugins, permettant
ainsi des mises à jour chaque fois qu'une nouvelle faille de sécurité est
découverte quelque part.
Un autre outil nécessaire aux administrateurs! Très beau boulot Mr. Deraison et
Merci beaucoup.
Les deux outils ont été testés depuis une machine Linux sur un réseau contenant
différents OS : Linux RH 6.2, Irix 6.5.7,
Solaris 2.6, NeXTStep 3.3, QNX RT, BeOS 5.0, Amiga OS 3.5, Non Terminé 4.0.
Les résultats sont impressionnants pour la plupart des plate-formes.
Certes, l'Amiga OS n'est pas très bien identifié (puisqu'il apparaît comme une
imprimante ou un routeur!) mais qui possède encore cet OS dans un réseau (à part
moi)?
De toutes façons, ces outils sont indispensables sur un réseau d'aujourd'hui.
Pour terminer ce chapitre, mentionnons d'autres outils tels que SARA http://www-arc.com/sara/, ou son "père" SATAN
http://www.porcupine.org/satan/,
ou SAINT http://www.wwdsi.com. Ce ne sont pas
seulement des scanners de ports et ils peuvent être très utiles à l'amélioration
de la sécurité d'un réseau.
Certains outils sont capables de détecter des scans de ports ou des intrusions.
Un administrateur "standard" (c'est-à-dire parano!) NE PEUT PAS travailler sans
ce genre d'outils.
La première série d'outils vient du Projet Abacus. Vous pouvez
obtenir ces outils depuis
http://www.psionic.com.
Trois outils différents sont disponibles : logcheck, portsentry et hostsentry.
Logcheck est en version 1.1.1, portsentry est en version 1.0 et hostsentry est en
version 0.0.2 alpha.
Portsentry est un outil de détection de scans de ports. Comme
son nom l'indique, si un port est scanné, portsentry va immédiatement bloquer
l'hôte, soit en redirigeant la route vers le firewall (ou une adresse IP
inutilisée) soit en écrivant l'adresse IP de l'attaquant dans le fichier
/etc/hosts.deny si TCPWrapper est installé sur votre machine.
Le résultat est pour le moins efficace!
Portsentry dépend d'un fichier de configuration principal et de quelques
fichiers spécifiques. Ces derniers sont utilisés pour ignorer des hôtes
(c'est-à-dire pour ne pas les bloquer) ou pour bloquer certains ports pour
certains hôtes.
A partir du fichier de configuration vous allez définir la manière de
fonctionner de portsentry. Vous sélectionnerez d'abord les ports que vous
souhaitez lier à portsentry, soit les ports TCP, soit les UDP (ou les deux).
Attention au lien du port 6000 si vous utilisez X11!
Selon le système Unix utilisé, vous disposez de deux modes d'opération pour
surveiller les ports. Le mode avancé n'est disponible que sous Linux pour
l'instant.
Ensuite vous sélectionnez l'option de blocage : soit vous ne bloquez pas les
scans, soit vous le faites, ou vous pouvez lancer une commande externe.
Vous pouvez alors choisir la manière de fermer la route, en redirigeant
l'attaquant soit vers une adresse inutilisée de votre réseau, soit vers un
filtrage de paquets (firewall).
L'étape suivante concerne TCPWrapper. C'est-à-dire, vous décidez (ou non)
d'écrire un texte DENY dans le fichier /etc/hosts.deny.
Vous pouvez ensuite définir une commande externe, et enfin vous pouvez choisir
une valeur plus ou moins élevée pour les logs de scans (0 par défaut).
C'est tout ce que vous avez à faire! Nous supposons que vous savez tout sur le
logging puisque, bien évidemment, toutes les alarmes sont écrites dans les
fichiers de logs. Cela signifie que vous pouvez modifier votre fichier
syslog.conf si vous souhaitez que les alarmes éventuelles s'inscrivent ailleurs
que dans /var/log/messages ou var/log/syslog ou /var/adm/messages...
Vous pouvez maintenant lancer portsentry en tâche de fond avec l'option de votre
choix. Les options disponibles dépendent de votre système : vous pourrez
utiliser -tcp, -udp sous la plupart des Unixes et -atcp, -audp sous Linux ("a"
pour avancé).
Regardons le résultat d'un scan sur une machine utilisant portsentry.
Si vous êtes un sysadmin lisant les logs une fois par semaine (vous devriez peut-être changer de métier!!!), le projet Abacus vous propose un autre outil nommé logcheck. Celui-ci est lancé par une tâche cron et envoie un courrier à l'administrateur s'il trouve quelque chose d'anormal dans les logs.
Ici, nous ne pouvons plus parler d'outils. Les scripts sont l'une des
principales aptitudes de l'administrateur. Les scripts Shell, Perl... font
partie du quotidien des gens administrant des réseaux.
De toute évidence les scripts sont utilisés pour automatiser des tâches, mais
aussi pour gérer la sécurité. Chaque sysadmin a ses propres besoins, il essaie
donc toujours d'agir en fonction de ce qui lui convient. Ce n'est pas toujours
si facile. Quelque chose peut vous aider : abonnez-vous au magazine SysAdmin!
Ce magazine est fait par des administrateurs pour des administrateurs et vous
propose des tas de programmes, de scripts... Vous pouvez même vous procurer un
CDRom contenant les numéros précédents, et bien sûr les programmes ou scripts
qui vont avec.
Il ne s'agit pas de publicité... mais d'un moyen pour trouver d'autres solutions
permettant d'améliorer la sécurité.
Jetez un coup d'oeil à http://www.samag.com.
Si vous êtes administrateur, vous devriez l'essayer.
Mais bon, ce n'est qu'une suggestion.
Il y aurait beaucoup plus à dire sur la sécurité, mais comme nous l'avons déjà
précisé, cet article n'est pas un "Comment sécuriser votre réseau". Un livre sur
le sujet ne suffirait pas. La sécurité ne repose pas seulement sur les outils,
c'est également un comportement. Par exemple certains de ces comportements
répandus me rendent dingue (d'accord, c'est déjà fait!). Quand les utilisateurs
vont-ils comprendre que les fichiers M$ Office sont des bombes? Non seulement
ils sont énormes, mais surtout potentiellement farcis de virus macro. S'il vous
plaît, utilisateurs Wintel, N'ENVOYEZ PLUS de documents Word ou Excel en pièces
jointes à vos messages. Encore plus, si vous en recevez, NE LES OUVREZ PAS : ce
n'est qu'une suggestion, mais vous aurez été avertis! Ils sont aussi dangereux
(sinon plus!) que n'importe quel exécutable que vous recevez ou téléchargez.
Et, au fait, les fichiers texte ou HTML sont beaucoup plus petits que les
documents Office, et surtout, ils ne SONT PAS dangereux!
Bien sûr, je sais que le monde Wintel travaille de cette manière : quand vous
téléchargez un simple pilote, c'est toujours un exécutable! Admettons que vous
puissiez faire confiance aux grosses sociétés... mais savez-vous ce qui a pu
arriver à l'archive que vous téléchargez? Oui, c'est une manière de penser très
parano, mais est-ce vraiment si fou? Pourquoi croyez-vous que de nombreuses
archives possèdent un "checksum" pour en vérifier l'authenticité?
Ce qui suit risque de "froisser" beaucoup de monde, mais c'est un fait : JAVA
est dangereux! Les applets sont dangereuses, les scripts Java sont dangereux.
Pourtant, il serait intéressant de savoir combien de sites n'utilisent pas Java!
Encore pire, Java est une source de problèmes lors de la visite de sites :
combien parmi eux gèleront votre navigateur? C'est ça le but d'un site?
Ne parlons pas de l'ActiveX qui nous vient de l'armée de Redmond!
Suggestion : utilisez plutôt Rebol (http://www.rebol.com)
Puisque nous sommes au coeur du sujet : s'il vous plaît, les nouveaux
"professionnels" d'Internet, arrêtez de créer des sites dédiés au monde Wintel
et à IE5! Je sais bien que ces machins sont très répandus, toutefois nombreux
sont ceux qui se connectent à l'Internet avec beaucoup d'OS et de navigateurs
différents. Travailler comme vous le faites, les empêche de visiter vos sites.
Le but de l'Internet est de partager. Utiliser des outils propriétaires est une
aberration. A mon humble avis, la première chose à faire lorsqu'on crée un site
web est de le tester avec différents OS et différents navigateurs... mais ce
n'est que mon opinion. Pour information : si vous vous connectez sur ce genre de
site avec une machine Unix et disons Netscrape, vous ne pouvez même pas
visualiser la page d'index!
Pardon pour la digression.
Un autre point important consiste à se souvenir que la sécurité n'atteindra pas
100%. Nous en sommes loin. Vous pouvez l'améliorer, c'est tout : c'est un fait.
Par exemple, vous pouvez utiliser tous les outils cités dans cet article et
laisser une porte de service grande ouverte! Ne vous laissez pas berner : les
pirates ne vont pas commencer par essayer de casser une clé 128 bits, mais ils
vont essayer de trouver un petit trou quelque part. Soyez donc prudents avec les
programmes SUID ou SGID, avec les droits d'accès, avec les services inutiles,
avec les comptes annulés, etc.
Si les différentes moutures d'Unix ont de nombreuses similitudes, elles sont
très différentes face à la sécurité. Certaines sont de véritables passoires!
Vous devez savoir cela aussi. Ne parlons pas d'autres OS ou assimilés. Par
exemple, avoir une connexion Internet par le câble avec une machine
Winquelquechose standard est génial : vous avez l'icône de la machine du pirate
dans le voisinage réseau... et bientôt M$ vous permettra d'avoir la photo du
pirate en question! Je plaisante...
La route vers la sécurité des réseaux et des machines est très longue. Si vous
êtes intéressés par le sujet vous apprendrez chaque jour. Heureusement, il
existe une multitude de sources d'informations. En voici quelques unes.
http://www.linuxsecurity.com est la
première mine d'or. Vous y trouverez presque tout!
http://www.sans.org est l'endroit où obtenir de
l'aide et de l'information sur la sécurité. Un site à consulter régulièrement.
http://www.infosyssec.org est un autre
endroit où récupérer des tonnes d'informations sur la sécurité.
http://www.securityfocus.com est le
siège de Bugtraq fournissant ainsi beaucoup d'informations sur la sécurité.
http://www.cs.purdue.edu/coast/hotlist/
LE site à visiter!
En haut de cette page vous trouverez un bouton "Liens" : cliquez dessus pour
obtenir les adresses de la plupart des distributeurs. Consulter leur site est
une obligation pour se tenir au courant des patches de sécurité disponibles.
ceci s'applique à chaque éditeur de systèmes Unix! Beaucoup d'entre eux
proposent régulièrement des patches de sécurité ou des patches recommandés.
De nombreux articles de numéros précédents de LinuxFocus méritent d'être lus (en
dehors de ceux déjà mentionnés) :
Améliorer la sécurité des distributions
Linux
TCPD et Firewalls avec IPFWADM
VXE, un outil de sécurité pour Linux
Il existe beaucoup d'autre documentation et nous ne pouvons pas vous fournir
tous les liens disponibles. Nous ne pouvons pas non plus citer tous les
outils libres de sécurité, comme déjà dit. Mais à partir de chaque site
mentionné ci-dessus vous trouverez d'autres liens vous envoyant vers encore
d'autres liens, ainsi de suite... comme les poupées Russes.
Le fait que certains outils ou sites ne figurent pas dans cet article ne
signifie pas qu'ils sont sans intérêt. Simplement, ça signifie que les outils
n'ont pas été testés. Il est évident qu'une sélection arbitraire doit être faite
parmi la centaine d'outils disponibles.
Le but de cet article est de proposer aux lecteurs des points de départ. Nous
espérons que ça pourra les aider.