Reseau Securise
Reseau Securise
Reseau Securise
Novembre 2002
2
Chapitre 1
Introduction
Ce rapport a pour but de présenter la construction pas à pas d'un réseau sécurisé. Elle sera suivie
d'une phase de tests et d'attaques à l'aide d'outils logiciels disponibles sur Internet.
1.1 Sujet
Création d'un réseau informatique sécurisé. Ce réseau comprendra un routeur utilisant un Fi-
rewall, un ou des clients dans un réseau local, un bastion proposant au moins un service web
intranet. Un service Telnet distant ou SSH permettra de communiquer avec un client distant.
Protection du réseau local. Les clients locaux devront être protégés du monde extérieur.
VPN. Un tunnel sécurisé devra permettre à un client extérieur de se connecter de façon sûre au
routeur.
Tests. La sécurité de l'ensemble devra être dûment testée par les outils adéquats.
1.2 Limitations
Par manque de matériel, nous n'avons pas pu installer de DMZ (zone démilitarisée) puisque nous
n'avions à notre disposition que deux interfaces réseaux sur notre passerelle alors que trois nous auraient
été nécessaires (client, extérieur, bastion)
L'absence d'accès à Internet depuis le réseau global des salles de TP, nous a considérablement
freiné. La phase de recherche et de téléchargement des applications qui nous étaient nécessaires devait
se faire en dehors des heures de TP.
Par ailleurs, une panne sur une machine nous a privé d'un client.
Le problème récurrent du partage des salles de TP avec d'autres élèves implique :
la perte systématique de nos scripts,
la conguration du système renouvelée à chaque scéance,
la ré-installation des applications.
3
4 CHAPITRE 1. INTRODUCTION
Architecture
5
6 CHAPITRE 2. ARCHITECTURE
Chapitre 3
Firewall
L'intallation d'un rewall (pare feu) sur le routeur qui sert de passerelle entre notre réseau local et
le reste du monde est une étape obligée de la sécurisation de nos installations.
Les noyaux 2.0 disposent de IPfwadm
Les noyaux 2.2 ont IPChains et IPMasqadm
Les noyaux 2.4 possèdent IPtables avec Netfilter
$ uname -sr
Linux 2.2.20
Notre routeur tournant sous Linux de version de noyau 2.2, nous avons choisi d'utiliser l'outil natif
de Linux : Ipchains .
3.1.2 Fonctionnement
Les règles de ltrage déterminent le devenir des paquets grâce à une police qui peut être l'une de
celles du tableau 3.2 page 10 ou bien une redirection vers une autre chaîne. Les règles sont groupées
en chaînes qui peuvent être celles de base (voir le tableau 3.1 page 10) ou bien d'autres dénies par
l'utilisateur. Les paquets se présentant au pare-feu arrivent automatiquement dans la chaîne input .
Ceux qui sont émis par le pare-feu passent dans la chaîne output avant leur sortie physique eective.
Un paquet qui entre dans une chaîne teste toutes les règles de la chaîne jusqu'à en trouver une qui
lui corresponde. Et il obéit à la police spéciée par la règle trouvée. Si aucune règle s'appliquant au
paquet n'a été trouvée, alors c'est la police par défaut de la chaîne qui fait loi. Il est donc important,
avant de créer les règles, de dénir la police par défaut d'une chaîne. Par sécurité on rejète en entrée
(input REJECT ) et en sortie (output REJECT ) et on ignore en redirection ( forward DENY ).
7
8 CHAPITRE 3. FIREWALL
adresse IP source
adresse IP destination
port source
port destination
protocole (UDP, TCP, ICMP)
interface
TOS (qualité de service)
drapeaux spéciaux du protocole TCP
types de codes spéciaux du protocole ICMP
3.2 Stratégie
Un script de démarrage permet d'appliquer notre politique de sécurité :
IP masquerading
Telnet limité à un client déterminé
Interdiction des ping
Palier à l'IP Spoong
Autoriser le trac web du réseau privé vers l'extérieur
Limiter les autres services (FTP, rlogin, nger...)
Conserver le trac sensible dans un chier de log ( /etc/log/messages )
Ce script rend portable et réutilisable notre conguration.
3.3. PASSERELLE SÉCURISÉE 9
Chaîne Description
input traite les paquets d'entrée
output traite les paquets de sortie
forward traite les paquets de redirection
Police Description
ACCEPT laisse passer les paquets
REJECT ne laisse pas passer les paquets, mais retourne un message d'erreur ICMP
DENY ne laisse pas passer les paquets en mode silencieux
MASQ utilise l'IP masquerading pour le rediriger
# Telnet en sortie
ipchains -N tel-out
ipchains -F tel-out
ipchains -A tel-out -s 134.214.90.20 -d 134.214.90.14 -j ACCEPT
ipchains -A tel-out -l -p tcp ! -y -j REJECT
ipchains -A output -i eth1 -p tcp -s 0.0.0.0/0 23 -j tel-out
3.3.7 Trac IP
On autorise les connexions entrantes/sortantes IP.
ipchains -A output -p tcp -i eth1 -j ACCEPT
ipchains -A input -p tcp -i eth1 -j ACCEPT
Le message ICMP est encapsulé dans l'IP. L'entête du message ICMP est composé de trois
champs : le type (qui contient le code d'erreur), le code (facultatif, complète l'information pré-
cédente) et le checksum (qui porte la somme de vérication de l'intégrité de l'en-tête ICMP).
Il y a génération d'un message ICMP dans les cas suivants :
demande et réponse d'écho,
destination inaccessible,
expiration de délai pour un datagramme IP (champs TTL à 0),
limitation du débit de la source,
redirection (changement de route),
problème de paramètre avec un datagramme,
demande et réponse de temps,
demande et réponse de masque de sous-réseau.
ping C'est un outil basé sur le protocole ICMP qui permet de déterminer si une machine est active
sur l'Internet. Il envoie un message ICMP de type ECHO_REQUEST à une machine qui elle-même
est tenue de répondre par un message ICMP de type ECHO_REPLY . Le ping peut aussi servir à
tester la connexion avec la machine distante en envoyant une requête toutes les secondes et en
produisant des statistiques sur les temps de réponse et le nombre de paquets perdus.
traceroute C'est un outil qui permet de suivre le trajet d'un paquet jusqu'à la machine destination.
Pour cela, il envoie un message ICMP avec un TTL égal à 1, puis il recommence en incrémentant
le TTL de 1 à chaque envoi. A chaque fois que le TTL arrive à 0, le routeur renvoie un message
ICMP d'erreur comportant en données son adresse. On peut donc connaître la route exacte
empruntée.
Nous allons protégrer notre réseau du trac ICMP indésirable provenant de l'extérieur an de
garder invisible notre réseau privé, éviter le ping de la mort 3 et autres attaques.
# ICMP en entree
ipchains -N icmp-in
ipchains -F icmp-in
ipchains -A icmp-in -l -p icmp --icmp-type echo-request -j DENY
ipchains -A input -i eth1 -p icmp -j icmp-in
# ICMP en sortie
ipchains -N icmp-out
ipchains -F icmp-out
ipchains -A icmp-out -l -p icmp --icmp-type echo-reply -j DENY
ipchains -A output -i eth1 -p icmp -j icmp-out
3.5.1 Connexion
Le connexion directe avec le login root est interdite car il existe un chier des logins prohibés.
Avant toute chose, on procède à la création d'un nouvel utilisateur jeff avec la commande adduser
sur la passerelle 134.214.90.20 , puis connexion via la commande telnet à partir du client externe
134.214.90.14 .
$ telnet 134.214.90.20
Trying 134.214.90.20...
Connected to 134.214.90.20.
Escape character is '^]'.
4
Protocole de gestion des noms d'ordinateurs locaux et d'ordinateurs distants de réseaux locaux développés par les
systèmes d'exploitation Microsoft. Pour permettre aux machines sous Windows de faire tourner leurs applications sur
de grands réseaux, Microsoft à développé NetBios sur TCP/IP. Le Netbios reste donc le standard de fait des systèmes
d'exploitation Microsoft, mais il utilise les couches TCP/IP pour le transport de données inter-réseau.
14 CHAPITRE 3. FIREWALL
Most of the programs included with the Debian GNU/Linux system are
freely redistributable; the exact distribution terms for each program
are described in the individual files in /usr/doc/*/copyright
$ echo $HOME
/home/jeff
3.5.2 Navigation
On se trouve alors dans le répertoire de connexion de l'utilisateur jeff : /home/jeff avec les droits
en lecture et écriture sur ce répertoire. On navigue dans l'arborescence des répertoires de /home et on
réussit à supprimer des répertoires créés par root ! Ces répertoires n'étaient aectés à aucun utilisateur
mais créés par le super utilisateur. Il est étonnant que ces répertoires aient ainsi pu être supprimés par
un utilisateur normal. Cela doit probablement venir du masque de chier...
En navigant dans les répertoires des autres utilisateurs, sauf modication des permissions accordées
aux autres utilisateurs du groupe et des autres par le propriétaire, la lecture est autorisée mais pas
l'écriture.
Le montage, l'accès en lecture et le démontage sont autorisés sur le lecteur de CD-ROM /cdrom .
En fait, les permissions d'accès sur les chiers d'un périphérique sont accordées en fonctions des
particularités intrinsèques du périphérique (pas d'écriture sur /cdrom ) mais aussi en terme de droits
maximums uniquement pour l'utilisateur qui le monte.
3.5.5 Déconnexion
Et fermeture de la connexion via la commande exit .
$ exit
exit
Connection closed by foreign host.
3.6 SSH
Le protocole Telnet se révèle très pratique pour eectuer une connexion distante par émulation de
terminal, mais n'est pas sécurisé puisque le login et le mot de passe transitent en clair sur le réseau.
Dans le cas d'une connexion entre deux machines de notre réseau privé, ce risque peut être accepté ;
mais pas depuis une machine du réseau public. Car une sonde 5 ou un snier 6 peuvent avoir été installés
sur les éléments intermédiaires du réseau Internet.
Pour sécuriser les transactions, on utilise le protocol SSH (Secure SHell) qui repose sur le cryptage
des données échangées. Le cryptage/décryptage s'eectue au moyen de paires de clefs publique/privée.
Ainsi le login et le mot de passe restent cachés.
Pour résumer SSH permet d'authentier fortement les deux bouts de la connexion, de rediriger
dans un tunnel chiré tous les ux entre les deux machines (login, mot de passe, chiers...) voire même
de les compresser en live de façon transparente...
5
Une sonde est un matériel permettant d'intercepter tout le trac circulant sur le lien sur lequel elle est branchée.
Elle reste invisible car passive.
6
Un snier est un logiciel qui conserve la trace du trac.
16 CHAPITRE 3. FIREWALL
Chapitre 4
SSH
4.1 Introduction
SSH permet aux utilisateurs de se connecter à distance à un autre système hôte. Contrairement
à rlogin ou telnet, SSH chire la session de connexion et empêche ainsi aux hackers de détecter les
données sensibles qui peuvent transiter. En utilisant des méthodes sécurisées pour vous connecter à
distance à d'autres systèmes, vous réduisez les risques en matière de sécurité, pour votre système et le
système distant.
17
18 CHAPITRE 4. SSH
sa rapidité d'exécution car elle met en oeuvre des opérations simples. Mais, le principal problème
est le partage de la clé : Comment une clé utilisée pour sécuriser peut être transmise sur un réseau
non-sécurisé ? La diculté engendrée par la génération, le stockage et la transmission des clés limite
l'utilisation des clés symétriques surtout sur Internet. On appelle l'ensemble de ces trois processus la
gestion des clés : key management .
Les algorithmes informatiques développés pour réaliser des opérations de cryptographie symétriques
sont :
1. DES (Data Encryption Standard, 1974, inventé par la NSA, encore appelé DEA (ANSI) ou DEA-1
(ISO)),
2. Triple DES ou DES3 (1985),
3. RC2, RC4, RC5 et RC6 (1987, RSA Data Security, Inc),
4. IDEA (International Data Encryption Algorithm, 1990-1992),
5. AES (Advanced Encryption Standard, 1997 , commercialisation 2001).
La force d'un algorithme symétrique est proportionnelle à la taille de sa clé. Plus cette taille est
grande, plus le nombre de combinaisons à tester pour trouver la clé et décrypter les données sera élevé.
Plus le nombre de clés nécessaires est élevé, plus il sera dicile de déchirer l'algorithme.
Pour résoudre ces problèmes de transmission de clés, les mathématiciens ont inventé le cryptage
asymétrique qui utilise une clé privée et une clé publique.
4.6 Sources
Les sources sont disponibles aux adresses :
OpenSSH : http ://www.OpenSSH.com
OpenBSD : http ://www.openbsd.org/openssh
FreeSSH : http ://www.freessh.org
OpenSSL : http ://www.openssl.org
20 CHAPITRE 4. SSH
Notez également que les paquetages OpenSSH requièrent le paquetage OpenSSL (openssl). OpenSSL
installe de nombreuses bibliothèques cryptographiques importantes qui aident OpenSSH à chirer les
communications.
# Host *
# ForwardAgent no
# ForwardX11 no
4.7. FICHIERS DE CONFIGURATION D'OPENSSH 21
# RhostsAuthentication no
# RhostsRSAAuthentication no
# RSAAuthentication yes
# PasswordAuthentication yes
# HostbasedAuthentication no
# BatchMode no
# CheckHostIP yes
# StrictHostKeyChecking ask
# IdentityFile ~/.ssh/identity
# IdentityFile ~/.ssh/id_rsa
# IdentityFile ~/.ssh/id_dsa
# Port 22
# Protocol 2,1
# Cipher 3des
# Ciphers aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour,aes192-cbc,aes256-cbc
# EscapeChar ~
# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented. Uncommented options change a
# default value.
#Port 22
#Protocol 2,1
#ListenAddress 0.0.0.0
#ListenAddress ::
# Logging
22 CHAPITRE 4. SSH
# Authentication:
#LoginGraceTime 120
#PermitRootLogin yes
#StrictModes yes
#RSAAuthentication yes
#PubkeyAuthentication yes
#AuthorizedKeysFile .ssh/authorized_keys
# Kerberos options
#KerberosAuthentication no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes
#AFSTokenPassing no
#X11Forwarding no
#X11DisplayOffset 10
#X11UseLocalhost yes
#PrintMotd yes
#PrintLastLog yes
#KeepAlive yes
#UseLogin no
#UsePrivilegeSeparation yes
#PermitUserEnvironment no
#Compression yes
#MaxStartups 10
# no default banner path
#Banner /some/path
#VerifyReverseMapping no
4.8 Installation
Il faut installer les paquetages Openssl, ensuite les paquetages OpenSSH qui est constitué de deux
ensembles de chiers de conguration, un pour les programmes clients (ssh) et l'autre pour le serveur
(sshd).
4.9 Conguration
Une fois l'installation de diérents paquetages est eectuée sur les deux machines, on commence
par le client :
4.9.1 Client
Créer un groupe vpn et un client vpn, et se connecter en tant qu'utilisateur vpn
On lance la génération de deux clés par la commande : ssh-keygen
vpn@b710pbw:~$ ssh-keygen
Generating RSA keys: ...............................................oooooO..oooooO
Key generation complete.
Enter file in which to save the key (/home/vpn/.ssh/identity): key
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
24 CHAPITRE 4. SSH
4.9.2 Serveur
On commence par lancer le démon sshd. Démon sshd à l'écoute des connexions clientes.
On génère une clé ssh pour le compte du serveur, on utilise le programme de génération de clés de
ssh (ssh-keygen). On copie la clé publique fraîchement générée du serveur dans le compte client dans
le chier .ssh/authorized_keys ,
SYNOPSIS
premiers test :
Testons la connexion ssh sur le serveur.
Vous êtes le client vpn :
vpn@b710pbw:~/.ssh$ ssh
ou
scp [-pqrvC46] [-S program] [-P port] [-c cipher] [-i identity_file]
[-o option] [[user@]host1:]file1 [...] [[user@]host2:]file2
exemple : copie de tous les chiers .tar dans le répertoire /tmp de la machine distante
scp *.tar [email protected]:/tmp
4.10.3 Déconnexion
Et fermeture de la connexion via la commande exit .
$ exit
exit
Connection closed by foreign host.
L'utilisateur h-etie00 lance l'utilitaire SSH pour se connecter au serveur fcn.homeip.net en tant
que cyberzoide (1). Le serveur distant demande le mot de passe associé à l'utilisateur cyberzoide (2).
Une fois identié, l'utilisateur a recours aux commandes du système distant : ls (listage des chiers) et
cd (changement de répertoire) (3 à 5). Ensuite, il copie les chiers /home/cyberzoide/developpez/*.html
du serveur distant vers le répertoire /home/h-etie00/public_html/ du compte utilisateur h-etie00
du serveur bat710.univ-lyon1.fr (6). Le serveur bat710.univ-lyon1.fr demande le mot de passe
associé à l'utilisateur h-etie00 (7). Puis chacun des chiers est copié (8 à 14). On lance l'exécution du
programme ./build (15), et enn on ferme la connexion (16 et 17).
Chapitre 5
Scanning
5.1 Présentation
Nmap est un outil d'exploration de réseau et un scanner de port très utile pour la sécurité
5.1.1 Installation
Copie de NMAP 3.00 dans le répertoire où l'on souhaite l'utiliser.
tar -xvzf nmap-3.00.tgz
cd nmap-3.00
./configure
make
make install
5.1.2 Description
Nmap est conçu pour permettre aux administrateurs système ainsi qu'aux personnes curieuses de
scanner de larges réseaux pour déterminer quels sont les hôtes connectés et quels services ils orent.
Nmap supporte un grand nombre de techniques de scan tel que : UDP, TCP connect() 1 , TCP SYN
(mi-ouvert)2 , ftp proxy (bounce attack) 3 , reverse-ident 4 , ICMP (ping sweep) 5 , ACK sweep 6 , FIN7
1
Connection TCP standard
2
Appelée scan demi-ouvert car il ne s'agit pas d'une vraie connexion, cette technique consiste à envoyer un SYN à un
port de la machine cible, et si celle-ci renvoie en réponse un SYN|ACK, c'est que ce port est ouvert (LISTEN). Il faut
ensuite envoyer immédiatement un RST an d'annuler cette connexion.
3
Cette technique utilise la "fonctionnalité" proxy d'un serveur FTP (décrite dans le RCF 959) qui permet de se
connecter à n'importe quel serveur en passant par ce serveur FTP. Cette méthode permet de masquer l'identité de
l'attaquant, les paquets contenant l'adresse du serveur FTP qui a été utilisé comme proxy mais elle est très lente.
4
Cette méthode utilise le protocole ident (RFC 1413) qui permet de connaître le propriétaire de n'importe quel
processus d'une connexion TCP, même s'il ne s'agit pas de l'initiateur. Mais cette méthode requiert une connexion TCP
complète ce qui est facilement détectable.
5
Cette technique est basée sur l'envoi de messages ICMP ECHO request. L'avantage est le fait de reconnaître facilement
le réseau ciblé grâce au broadcast ICMP. Mais la plupart des rewalls sont congurés pour bloquer le trac ICMP ECHO.
6
On envoie des paquets TCP ACK et on attend les réponses. Un hôte présent doit répondre. Ceci permet de passer
à travers des réseaux n'autorisant pas le ping.
7
L'idée est que les ports fermés doivent répondre par un RST, alors que ceux ouverts ne doivent pas prendre en
compte le paquet en question (RFC 793 pp 64).Le scan FIN utilise un paquet avec le ag FIN.
27
28 CHAPITRE 5. SCANNING
, Xmas tree8 , SYN sweep 9 , et NULL scan 10 . Nmap possède aussi un certain nombre de fonctions
avancés telles que la détection de l'OS distant grâce à l'empreinte TCP/IP 11 , le stealth scanning 12 ,
le calcul de retransmission , le scan en parallèle , la détection d'hôtes éteints grâce au ping en parallèle
, les scans avec leurres,la détection de ports ltrés , le scan RPC direct (sans-portmap) , le scan avec
fragmentations de paquets et une exibilité dans l'écriture des cibles et des ports.
Le résultat de l'exécution de nmap nous donne normalement une liste de ports intéressants sur la
machine scannée.
Nmap donne toujours le nom du service correspondant (s'il est connu), le numéro, l'état, et le
protocole. L'état est soit 'open', 'ltered', 'unltered'.
"Open" signie que la cible acceptera - 'accept()' - des connexions sur ce port.
"Filtered" signie qu'il y a un rewall/ltre ou un obstacle qui couvre ce port et qui empêche
nmap de déterminer s'il est ouvert ou non. Unltered signie que le port est connu par nmap
pour être fermé et qu'aucun rewall/ltre n'apparaît interférer avec nmap.
Les résultats "unltered" sont courants et sont achés uniquement quand la plupart des ports
sont trouvés à l'état ltré.
En fonction des options utilisées, les caractéristiques suivantes peuvent être achées :
Le type d'OS.
Le séquencement TCP.
Les noms des utilisateurs sous lesquels fonctionnent les programmes ayant ouvert des ports.
Le nom DNS.
...
Explication : On peut de cette manière scanner un réseau automatiquement. Nmap va tester chaque
machine et acher les descriptions des ports ouverts quand les machines répondent. Pour les machines
qui ne répondent pas, il va les signaler comme dans l'exemple ci-dessus.
32 CHAPITRE 5. SCANNING
Chapitre 6
Rootkits et Trojans
6.1 Dénitions
Rootkit Ensemble d'exploits réunis an d'avoir des chances maximales de prendre le contrôle d'un
compte root sur une machine Unix. Un rootkit est donc une collection de chiers/programmes
employée par l'attaquant pour pénétrer un réseau/ordinateur sans être détecté.
Trojans Ces petits programmes vont faire des actions très spéciques sur une machine. Ils sont utilisés
par les rootkits pour modier des chiers de commande tels que ls, netstat, top an de cacher
un hôte indésirable. Une autre application très répandue des trojans est par exemple d'infecter
le chier /bin/login et de donner à certains utilisateurs les privilèges de root.
Backdoor Porte d'entrée cachée dans un système. C'est souvent une porte de service discrète mais
délibérément laissée par ses concepteurs ou ses réalisateurs, qui servait lors du déboguage et a été
oubliée. Ce type de porte peut aussi être implanté par un hacker pour lui permettre de revenir
dans un système sans avoir à le repirater.
Exploit Description d'une technique de piratage, d'un truc permettant d'exploiter une faille de
sécurité.
Script kiddy Hacker "juste" capable (sans comprendre ce qui se passe réellement) de faire tourner
une poignée de scripts pouvant lui donner un accès non autorisé à un système.
33
34 CHAPITRE 6. ROOTKITS ET TROJANS
possibilité est de commettre des actions destructrices (eacement de chiers, vol de données,...)
sur la machine à laquelle il a déjà accès, au risque de ne plus pouvoir se réintroduire dans le
système. Cette étape peut nécessiter des sniers ou des outils de scan selon les choix d'actions à
mener.
Il existe deux parties du rootkit à cacher : le code physique et les processus en cours de fonctionne-
ment. Comme que la plupart des trojans sont actifs (ils attendent d'être utilisés en tant que backdoor),
ils doivent donc se cacher dans la table des processus en activité. Pour cette raison, certaines routines
sont chargées de détruire tout simplement la commande ps ou d'autres, plus discrètement la modient.
De même, le code du programme doit être caché et la commande ls peut alors elle aussi être modiée.
Les rootkits ont donc l'habitude de changer les binaires communs de sorte qu'un administrateur
occupé ne les détecte pas. Les binaires les plus souvent hackés sont les binaires qui peuvent être employés
pour surveiller les systèmes : /bin/ps, /bin/ls, /bin/netstat, /usr/bin/lsof, /usr/bin/top (ce n'est pas
une liste complète).
Pour ce qui est de la manière dont le rootkit installe les backdoors, il s'agit le plus souvent d'un
daemon qui écoute sur un port spécique. Il sut alors de faire un telnet sur ce port avec un login
connu de celui qui a installé le rootkit pour prendre le contrôle de la machine. On pourra ensuite visiter
les comptes utilisateurs et tenter de récupérer leurs mots de passe, installer un snier et analyser le
trac pour découvrir ces mêmes mots de passe ou attaquer directement un serveur si on le souhaite.
7.1 Introduction
Nessus est un outil de test de vulnérabilité. Il fonctionne en mode client/serveur, avec une interface
graphique.
7.2 Sources
Les sources et la documentation sont disponibles à l'adresse http ://www.nessus.org
Pour Gnu/Linux, il faut les chiers
libnasl-1.2.6.tar.gz et
nessus-libraries-1.2.6.tar.gz, ce sont 2 bibliothèques,
nessus-core-1.2.6.tar.gz, les chiers de nessus proprement dit,
nessus-plugins-1.2.6.tar.gz, les attaques utilisées par nessus.
Openssl est nécessaire si on veut utiliser une authentication du client par le serveur en utilisant
le chirement.
7.3 Installation
Installer dans l'ordre : nessus-libraries, libnasl, nessus-core et nessus-plugins.
On obtient alors
les binaires
/usr/local/bin/nessus
/usr/local/bin/nessus-build
/usr/local/bin/nessus-cong
/usr/local/bin/nessus-mkcert-client
/usr/local/bin/nessus-mkrand
/usr/local/sbin/nessus-adduser
/usr/local/sbin/nessus-mkcert
/usr/local/sbin/nessus-rmuser
/usr/local/sbin/nessus-update-plugins
/usr/local/sbin/nessusd
/usr/local/sbin/uninstall-nessus
la documentation dans
37
38 CHAPITRE 7. AUDIT DE RÉSEAU AVEC NESSUS
/usr/local/man/man1/
/usr/local/man/man8/
les plugins (les attaques)
/usr/local/lib/nessus/plugins/
les enregistrements des résultats dans
/usr/local/var/nessus/users/je/sessions/
7.4 Conguration
Il faut créer un certicat pour le démon nessusd, avec nessus-mkcert, et ajouter un utilisateur avec
nessus-adduser (on peut aussi utiliser un simple mot de passe, sans passer par mkcert, auquel cas
openssl n'est pas nécessaire).
Il existe plusieurs options pour l'utilisateur (règles d'accès).
7.5 Utilisation
L'utilisation de nessus est très intuitive et conviviale, grâce à une interface graphique simple et
logique.
Lancer d'abord le démon : nessusd, éventuellement sur une machine distante. nessusd est le serveur,
qui va eectuer le test et envoyer les résultats au client.
Lancer alors le client : nessus. On obtient une fenêtre avec plusieurs onglets :
l'onglet de connexion (g. 7.1) permet de préciser l'adresse de la machine où tourne le démon et
le port sur lequel il écoute (par défaut localhost, port 1241), ainsi que le nom de l'utilisateur et
son mot de passe.
l'onglet plugins (g. 7.2) permet de sélectionner les tests que l'on souhaite réaliser.
l'onglet prefs (g. 7.3) permet le réglage de diérents paramètres pour les tests.
l'onglet scan-options (g. 7.4) permet le paramétrage du scan, avec notamment la possibilité de
faire des tests inoensifs (safe checks) pour préserver la machine cible.
l'onglet target selection (g. 7.5) permet de désigner la (ou les ) cible(s) choisie(s), et ache un
historique des adresses précédemment testées.
l'onglet user (g. 7.6) permet de dénir des règles pour l'utilisateur.
l'onglet kb (g. 7.7) ore diérentes options d'utilisation de la base de données des tests déjà
eectués (pour éviter de répéter des tests par exemple).
le dernier onglet (g. 7.8) nous apprend le nom de l'auteur, etc.
Quand on lance le test, cette première fenêtre est remplacée par une autre qui montre l'avancement
du test (g. 7.9).
A la n du test, apparaît une autre fenêtre (g. 7.10) qui présente les résultats. Cette présentation
est faite de façon très didactique, avec explication des failles découvertes, de leur utilisation possible,
de leur gravité et de la façon de les résoudre.
On peut alors enregistrer les résultats sous diverses formes : texte, latex, html, html avec gra-
phiques...
7.7 Conclusion
Nessus est un outil d'audit très complet, dont nous sommes loin d'avoir évalué toutes les possibilités.
Son intérêt est aussi didactique : pour chaque faille, on a une présentation claire du problème et
une solution simple.
Cet outil peut très certainement servir à une personne compétente à évaluer les faiblesses d'un
réseau en vue d'une attaque, en indiquant quelles failles exploiter et avec quelles techniques.
Mais bien sûr, tout bon administrateur devrait se servir d'un tel outil pour éviter au moins les
attaques connues de nessus, qui doivent tout de même être devenues des classiques, pour avoir été
inventoriées et implémentées sous forme des plugins ...
Sa principale limite serait donc l'obsolescence relative des attaques connues au moment de l'audit,
ce qui semble inévitable.
50 CHAPITRE 7. AUDIT DE RÉSEAU AVEC NESSUS
Chapitre 8
8.1 Introduction
µito (à prononcer muito) est un programme permettant de forger des paquets TCP/IP sous Linux.
Les protocoles actuellement pris en charge sont : IP, ICMP, IGMP, TCP et UDP ; en attendant ETH,
ARP/RARP, DNS, OSPF et RIP prévus par l'auteur dans le développement futur.
Il s'agit là encore d'un logiciel libre avec une interface graphique intuitive et esthétique.
8.2 Installation
Les sources sont disponibles ici : http ://projet7.tuxfamily.org/factory/releases/uito.tar, et la do-
cumentation là : http ://projet7.tuxfamily.org/factory/articles/uito.html.
Les sources se présentent en archive tar : µito.tar, qui contient les chiers :
µito.c, le programme,
clap.xpm, l'image achée dans la fenêtre du programme.
La ligne de commande pour l'installation est indiquée en tête du chier c :
cc µito.c -o µito `gtk-cong cags libs`
On obtient alors le chier binaire µito.
51
52 CHAPITRE 8. FORGER DES PAQUETS AVEC µITO
8.3.2 Test
Nous avons testé µito en envoyant un paquet ICMP forgé avec une adresse IP diérente de l'adresse
réelle : la machine réceptrice croyait eectivement recevoir un ping de la fausse adresse et y répondait.
8.4 Conclusion
µito est un très petit logiciel (en poids sur le disque), mais qui ore la possibilité de forger très
facilement des paquets.
La principale limitation est qu'on ne peut forger les paquets qu'un à un, rendant dicile l'utilisation
dans le cadre d'échanges falsiés (IP spoong), à cause du temps nécessaire pour chaque paquet.
Chapitre 9
A quoi va servir le serveur HTTP Apache ? Nous allons utiliser Apache pour mettre en oeuvre
un Intranet. Un ou plusieurs sites internes pourront ainsi se développer pour, par exemple, la mise
en commun de connaissances ou encore des informations concernant des actions syndicales... Nous
justions la mise en place d'un serveur HTTP par le fait que c'est un élément important d'un réseau
pour communiquer et informer (humainement parlant). En eet, quelle entreprise d'une importance
moyenne n'a pas un serveur HTTP ? Il est donc important de connaître les actions défensives à opérer
an de sécuriser un serveur Apache.
9.2 Installation
L'installation du serveur Apache 1.3.12 est très simple. Il sut de suivre les instructions du chier
INSTALL.
Voici les commandes d'installation (les privilèges de root sont requis)
NOTE: PREFIX n'est pas la chaine "PREFIX". Utilisez à la place le chemin
sous lequel Apache devrait être installé. Par exemple utilisez
"/usr/local/apache" au lieu de PREFIX.
C'est le chemin que nous avons choisi pour notre installation : /usr/local/apache sur la machine
192.168.2.1
> ./configure --prefix=/usr/local/apache
> make
> make install
----------------------------------------------------------
|You now have successfully built and installed the
| Apache 1.3 HTTP server.To verify that Apache actually
55
56 CHAPITRE 9. INTRANET : SERVEUR HTTP APACHE
9.3.4 Traiter la politique de gestion des accès aux répertoires, aux chiers et aux
arborescences
Trois directives existent pour la gestion des accès aux répertoires, arborescence et chiers du serveur.
Ce sont respectivement : Directory, Location et Files.
Ces directives sont sous forme de balises englobantes dans lesquelles on peut dénir les accès à
ceux-ci.
Par exemple :
<Directory />
Order deny,allow
Deny from all
</Directory>
Cette directive est celle que nous avons utilisé pour notre serveur :
La ligne Order indique au serveur qu'il doit tout interdire par défaut à la racine du site, ensuite
autoriser s'il y a lieu (avec l'instruction AllowOverRide).
Ainsi il faudra dénir des directives AllowOverRide pour attribuer des droits d'accès aux répertoires
apparents du site (la partie émergeante de l'iceberg).
Une autre directive peut être placée dans les balises. Il s'agit de Options .
Options controle :
le suivi des liens symboliques FollowSymLinks/symIfOwnerMatch que nous supprimons.
58 CHAPITRE 9. INTRANET : SERVEUR HTTP APACHE
En eet, un pirate pouvant écrire dans un répertoire du serveur Web, par exemple via un serveur
NFS, pourrait en proter pour accéder au chier /etc/passwd via un lien symbolique.
l'exécution des scripts CGI, ExceCGI que nous n'utiliserons pas ;
les Server Side Includes et IncludesNOEXEC que nous ne permettons pas non plus ;
la génération de pages d'index Indexes en l'abscence de celle-ci que nous allons désactiver. Nous
verrons pourquoi.
ainsi que l'orientation multilingue Mulitiviews qui ne nous est d'aucune utilité.
Désactiver la génération automatique d'index est une élement simple, mais important de la sécurité.
En eet, si dans notre site, nous oublions de mettre un chier nommé index.html dans un répertoire
du site, alors une page indexant tous les chiers présents dans celui-ci serait achée.
Cela est non souhaitable car un pirate pourrait ainsi avoir connaissance de la présence de chiers
condentiels.
Nous ajoutons donc la directive Options.
<Directory />
Order deny,allow
Deny from all
# Suppression des options.
Options None
</Directory>
10.1 Introduction
10.1.1 Utilité
Crack5 est un perceur de mot de passe.
Comme pour beaucoup d'outils de sécurité réseau, Crack est utilisé aussi bien par les crackers que
par les administrateurs.
Il est utilisé par les administrateurs réseau pour empêcher leurs utilisateurs de choisir des
mots de passe trop simples à deviner .
Crack est donc un outil nécessaire, vital même, à tout administrateur, puisque ne pas l'utiliser serait
une brèche indirecte dans le systeme. En eet, n'importe quel cracker serait susceptible de deviner des
mots de passe trop faciles. C'est donc pour cette raison que nous avons décidé de l'utiliser.
NB : Crack perce les mots de passe à partir d'un chier de mots de passe tel que
/etc/passwd. Il faut y avoir un accès (au moins en lecture) pour en tester le contenu.
Ceci signie que le cracker, s'il agit à distance, doit s'introduire par le moyen d'un telnet
ou d'un ftp et doit donc connaitre au moins un mot de passe utilisateur.
Après être revenu dans le dossier c50a/, il faut éditer le script principal Crack.
Modions la variable CRACK_PATH en :
61
62 CHAPITRE 10. SÉCURITÉ DES MOTS DE PASSE
CRACK_PATH=/usr/local/bin:usr/sbin:/sbin:/usr/bin:/bin:\$PATH
2. Ensuite, il faut mettre en commentaire les lignes concernant "vanilla" et décommenter les lignes
du compilateur GCC GNU :
#
# now pick your compiler
#
# vanilla unix cc
#CC=cc
#CFLAGS="-g -O $C5FLAGS"
#LIBS=-lcrypt # uncomment only if necessary to use stdlib crypt(), eg: NetBSD MD5
# gcc 2.7.2
CC=gcc
CFLAGS="-g -O2 -Wall $C5FLAGS"
LIBS=-lcrypt # uncomment only if necessary to use stdlib crypt(), eg: NetBSD MD5
3. Puis exécuter la commande de compilation du programme, puis du dictionnaire( cette dernière
peut prendre plusieurs minutes).
>./Crack -makeonly
>./Crack -makedict
Types ICMP
65
66 CHAPITRE A. TYPES ICMP
Code Type
echo-reply (pong)
destination-unreachable network-unreachable
host-unreachable
protocol-unreachable
port-unreachable
fragmentation-needed
source-route-failed
network-unknown
host-unknown
network-prohibited
host-prohibited
TOS-network-unreachable
TOS-host-unreachable
communication-prohibited
host-precedence-violation
precedence-cuto
source-quench
redirect network-redirect
host-redirect
TOS-network-redirect
TOS-host-redirect
echo-request (ping)
router-advertisement
router-solicitation
time-exceeded (ttl-exceeded) ttl-zero-during-transit
ttl-zero-during-reassembly
parameter-problem ip-header-bad
required-option-missing
timestamp-request
timestamp-reply
address-mask-request
address-mask-reply
Tab. A.1 Liste des types ICMP gérés par ipchains 1.3.9, 17-Mar-1999
Chapitre B
Exemple Description
Nov 8 date
10 :25 :53 heure
b710pbv nom de la machine
kernel : deamon
Packet log : précède le contenu du paquet logué
input nom de la chaîne traversée par le paquet
REJECT nom de la police aectée à la chaîne
eth1 nom de l'interface tracversée le paquet
PROTO=17 numéro du protocol
134.214.90.16 :138 adresse IP source et port (TCP ou UDP) ou type ICMP
134.214.91.255 :138 adresse IP destination et port (TCP ou UDP) ou type ICMP
L=236 taille totale du paquet
S=0x00 TOS (Type Of Service)
I=51490 identiant numérique unique du paquet IP
F=0x0000 Drapeau (3 bits) et numéro de fragment (13 bits)
T=128 TTL (Time To Live)
(#7) numéro de la règle ipchains qui a causé la mise en log
67
68 CHAPITRE B. SYNTAXE LOG IPCHAINS
Table des matières
1 Introduction 3
1.1 Sujet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Limitations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3 Répartition des tâches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.4 Présentation orale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2 Architecture 5
3 Firewall 7
3.1 L'outil ipchains . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.1.1 Présentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.1.2 Fonctionnement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.1.3 Critères de ltrage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.1.4 Actions possibles sur les paquets . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.1.5 Mode de construction des chaînes et des règles . . . . . . . . . . . . . . . . . . 8
3.2 Stratégie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.2.1 Réseau local invisible . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.3 Passerelle sécurisée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.3.1 Initialisation des règles de ltrage . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.3.2 Accès http . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.3.3 Processus locaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.3.4 Réseau privé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.3.5 anti - IP Spoong . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.3.6 Restrictions telnet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.3.7 Trac IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.3.8 Trac ICMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.3.9 Fichier de log . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.4 Testons le service ftp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.5 Testons le service telnet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.5.1 Connexion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.5.2 Navigation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.5.3 Accès aux périphériques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.5.4 Droits super utilisateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.5.5 Déconnexion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.6 SSH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
69
70 TABLE DES MATIÈRES
4 SSH 17
4.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.2 Pourquoi utiliser SSH ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.3 Introduction à la cryptographie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.3.1 Le cryptage symétrique : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.3.2 Le cryptage asymétrique : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.4 Scénario d'usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4.5 Exiger SSH pour les connexions à distance . . . . . . . . . . . . . . . . . . . . . . . . . 19
4.6 Sources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4.7 Fichiers de conguration d'OpenSSH . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.7.1 Le chier ssh_cong : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.7.2 Le chier sshd_cong : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
4.7.3 Un chier très simple de sshd_cong : . . . . . . . . . . . . . . . . . . . . . . . 23
4.8 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
4.9 Conguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
4.9.1 Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
4.9.2 Serveur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
4.10 Testons la connexion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
4.10.1 Copie (utilisation de la commande scp) : . . . . . . . . . . . . . . . . . . . . . . 25
4.10.2 Tests avec Ethereal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4.10.3 Déconnexion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4.11 Exemple réel de session SSH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
5 Scanning 27
5.1 Présentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
5.1.1 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
5.1.2 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
5.2 Les résultats de NMAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
5.2.1 Première prise en main . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
5.2.2 Test sur un routeur autorisant des entrées . . . . . . . . . . . . . . . . . . . . . 29
5.2.3 Cacher l'adresse d'envoi des requêtes . . . . . . . . . . . . . . . . . . . . . . . . 30
5.2.4 Scanner un réseau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
6 Rootkits et Trojans 33
6.1 Dénitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
6.2 Résumé : étapes du hacker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
6.3 Mon expérimentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
6.4 Comment se présente le programme ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
6.5 Mode de fonctionnement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
6.6 Top du moment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
6.7 Les protections existantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
A Types ICMP 65
B Syntaxe log ipchains 67
Bibliographie 71
72 TABLE DES MATIÈRES
Bibliographie
73
74 BIBLIOGRAPHIE