Accueil Hardware Software

Programmation Liens L'équipe



Windows NT 4.0
 
Office 2000
 
Windows 2000
 
Sécurité...
 
Vos recherches sur le Net...

Sécurité...

 

A cause du développement du réseau Internet, de nombreux utilisateurs, tant particuliers que professionnels, ont désormais un besoin accru de sécurité... Virus, chevaux de troie, intrusion sur le système, et bien d'autres encore sont devenus de nombreux fléaux contre lesquels les utilisateurs ont envie de lutter... Explications...

Firewall
Le reste est à venir... Patience...

 

Firewall

Objectifs

Les firewalls ont une renomée qui n'est plus à faire ! Désormais, chez les professionnels, il est impossible de parler de sécurité sans évoquer ces fameux murs de feu...
 
Ils ont deux objectifs qui sont :
¤ Protéger le réseau interne contre les intrusions provenant de l'extérieur,
¤ Limiter et vérifier les connextions du réseau interne vers l'extérieur.

Fonctionnement

Les firewalls fonctionnent selon un principe très simple... Le firewall est, à l'origine, un système comportant deux interfaces réseau.
 

 
Remarque : il peut s'avérer que l'isolation TOTALE du réseau ne soit pas indispensable... A ce moment, le réseau à sécuriser est relié au sous réseau par un firewall et le sous réseau est relié à Internet par un routeur.
 

 
Afin d'améliorer la compréhension générale de la suite de l'article, nous allons nous placer dans le premier cas, celui où l'on veut protéger tout le réseau. On dispose en fait d'une interface interne reliée au réseau local et une interface externe reliée à Internet. L'ordinateur faisant office de firewall peut accéder au réseau protégé ET à Internet. Le réseau protégé ne peut atteindre Internet (sauf s'il passe par le firewall, qui va réguler les accès) et Internet ne peut accéder au réseau protégé.

Différence entre Firewall et Routeur IP

La caractéristique principale du routeur est qu'il prend en charge les paquets jusqu'à la couche IP. Il transmet chaque paquet en fonction de son adresse de destination et de la route vers la destination de routage.
Le firewall, quand à lui, ne transmet pas les paquets. Il les accepte et les prend en charge jusqu'à la couche application.

Les différents types

Filtres de paquets

Ce type de firewall inspecte tous les paquets qu'il reçoit et vérifie leur correspondance aux règles établies au préalable. Si le paquet respecte ces règles, il est admis, et est redistribué au PC ayant émis la requète. Aussi non, il est rejeté. Les règles peuvent être basées, par exemple, sur l'IP, les ports source ou destination contenus dans le paquet.
 
Cette technologie de filtrage est incluse dans le noyau de Linux. Elle agit sur la pile IP du système.
Pour utiliser cette technique, vous allez devoir recompiler le noyau de Linux et répondre YES aux questions suivantes :
 

IP : forwarding/gatewaying (CONFIG_IP_FORWARD)                YES
IP : firewalling (CONFIG_IP_FIREWALL)                         YES
IP : firewall packet logging (CONFIG_IP_FIREWALL_VERBOSE)     YES

Après avoir compilé et installé le noyau, et après un petit redémarrage du système, vous allez pouvoir configurer le firewall.
Pour cela, nous allons utiliser ipfwadm dont la syntaxe générale est :
 

ipfwadm -A commande paramètres [options]
ipfwadm -I commande paramètres [options]
ipfwadm -O commande paramètres [options]
ipfwadm -F commande paramètres [options]
ipfwadm -M [-l ou -s] [options]

Comme vous avez pu le constater, nous sommes en présence de cinq catégories :
¤ -A : configuration de l'accounting (compatibilité des paquets atteignant le système),
¤ -I : règles à appliquer aux paquets TCP/IP en entrée,
¤ -O : règles à appliquer aux paquets TCP/IP en sortie,
¤ -F : règles à appliquer aux paquets TCP/IP à router d'une interface à une autre,
¤ -M : administration de l'IP Masquerading.

Avant de créer toute règle de filtre IP, il vous faut définir des règles de sécurité. Par exemple :
¤ Toute connexion du réseau Internet vers une machine interne est interdite,
¤ Accès au serveur de messagerie et au service DNS du firewall à partir de l'extérieur.

Soit le réseau interne de type 193.1.1.0/24 relié à un réseau de type 193.1.2.0/24 (entre le firewall et le routeur, le firewall ayant pour adresse 193.1.1.254 en interne [eth0] et 193.1.2.1 en externe [eth1]).

Nous allons maintenant appliquer quelques filtres :
 

ipfwadm -O -p accept
La règle par défaut des paquets en sortie est accept (-p représentant l'action par défaut).
 
ipfwadm -I -p deny
La règle par défaut des paquets en entrée est deny.
 
ipfwadm -F -p deny
La règle par défaut des paquets à router en entrée est deny.
 
ipfwadm -F -a accept -S 193.1.1.0/24 -D0/0 -P tcp
Autorisation pour router tous les paquets TCP provenant de l'extérieur.
 
ipfwadm -I -a deny -S 193.1.1.0/24 -D0/0 -W eth1
Cette commande sert à lutter contre le spoofing ou changement de son adresse IP. En effet, cette règle dicte que tous les paquets qui entrent dans le sous réseau sécurisé et qui ont une adresse source correspondant à une adresse du sous réseau (illogique...) doivent être rejetés.
 
ipfwadm -I -a accept -P udp -S0/0 -D 193.2.1.1 53
ipfwadm -I -a accept -P tcp -S0/0 -D 193.2.1.1 53
Ces mesures indiquent que les accès au serveur DNS (port 53) sont accessibles de n'importe où.
 
ipfwadm -I -a accept -P udp -S0/0 -D 193.2.1.1 25
Accès au serveur SMTP du firewall de n'importe où.

Malheureusement, on retrouve ici le plus grand inconvénient des firewalls. En effet, dans l'état actuel du système, on ne pourra pas faire fonctionner un client FTP du réseau interne vers un serveur situé à l'extérieur.
Le protocole FTP prévoit l'établissement d'une connexion du serveur FTP vers le client de port 20 au port 1024...
Heureusement pour nous, il existe des solutions, qui sont :
¤ Utiliser le client FTP en mode passif (le client établit une connexion vers le serveur FTP),
¤ Utiliser un proxy (voir plus bas) installé sur le firewall qui relaiera les requêtes de l'intérieur vers l'extérieur,
¤ Utiliser l'IP masquerading,
¤ Ou, tout simplement, ajouter cette règle :
ipfwadm -F -a accept -P tcp -S0/0 20 -D 193.1.1.0/24 1024-65535

Remarque intéressante : si un pirate rencontre un système basé sur une règle de ce type, l'intrusion est possible ! En effet, cette règle expose les services du réseau interne qui écoutent sur un port supérieur à 1024. A partir de là, il n'a plus qu'à faire partir un paquet du port 20 de votre machine vers un service, car beaucoup de services fonctionnent sur ce port.
Par exemple, pour tous les ports 6000, vous avez les services X-Windows. S'ils n'ont pas été protégés correctement, le pirate peut espionner l'utilisateur ! Il peut même voir les touches frappées par l'utilisateur, les programmes lancés. Si vous faites un telnet dessus, vous aurez l'effet d'un denial of service : l'écran va geler, le système va ralentir... Mais il peut faire mieux que cela !
Si le pirate s'y connait un petit peu en programmation (et il est fort probable qu'il s'y connaisse...), il peut utiliser la fonction XOpenDisplay(). Si la fonction retourne NULL alors le système est sécurisé... Ou sinon... ;-)

  char   *hostname;
  if (XOpenDisplay(hostname) == NULL) {
     printf("Machine sécurisée : %s\n", hostname);
  } else {
     printf("Machine non sécurisée : %s\n", hostname);
  }

Il vous faut aussi penser à une autre chose... Normalement, la route qu'emprunte un paquet de sa source à sa destination est déterminée par les routeurs qui se trouvent entre eux. En fonction de l'adresse de destination et de leur table, les routeurs se chargent de diriger les paquets. Mais, dans une trame TCP/IP, il y a une option qui porte le nom de "source routing", qui est peu utilisée. En fait, on l'utilise dans le debuggage des réseaux pour trouver les problèmes. L'astuce se trouve ici : si vous envoyez un paquet en faisant croire qu'il vient de l'intérieur, normalement, les routeurs ne devraient pas l'amener au firewall. Mais le problème est que, à cause de ce "source routing", ils le font quand même... En plus, cette manipulation n'est pas très compliquée à effectuer ! Mais vous devriez pouvoir trouver dans votre firewall une option pour désactiver le "source routing".

Nota Bene : n'oubliez pas de configurer les clients de façon à ce que le routeur par défaut soit le firewall...

Les proxy

Lorsque ce type de firewall est utilisé sur un réseau, il n'y a aucune connexion directe entre les machines du réseau local et Internet. Les machines du réseau local se connectent en fait au serveur Proxy, afin de lui demander un service. Le firewall se charge ensuite de relayer la requête au serveur Internet et renvoie la réponse au client interne.

Une des meilleures solutions pour utiliser une machine Linux en mode proxy consiste à utiliser les outils qu'offre TIS. Ce package est connu sous le nom de FW Toolkit, et est téléchargeable sur le site Web de TIS à l'adresse suivante : http://www.tis.com/docs/products/fwtk/index.html.

Installation

En l'occurence, étant donné que votre machine va devenir un proxy, il va vous falloir désactiver l'option de routeur de Linux. C'est très simple ! Il vous suffit de répondre NO à la question forwarding/gatewaying (CONFIG_IP_FORWARDING) lors de la recompilation du noyau (!!!).
Cette modification n'est pas obligatoire, mais si vous ne la faites pas, les machines du réseau interne seront directement accessibles de l'extérieur à travers les possibilités du firewall.
Si l'IP forwarding est laissé, votre firewall présentera une faille, et je pense que la seule méthode d'intrusion serait de downer le firewall. Ainsi, ce dernier ne marcherait plus, mais le noyau continuerait à router les paquets sans suivre les règles ! Mais un pirate pourrait utiliser de nombreuses autres techniques, comme le SYN flooding...
Mais, revenons à notre histoire de package FW Toolkit.... Compilez-les en suivant les instruction...

Configuration

La table netperm se trouvant dans le fichier /usr/local/etc/netprem-table décrit la configuration principale de tous les composants du Trusted Firewall Toolkit. La configuration des applications de la suite TIS se trouve dans ce fichier...

Description

L'application Netacl permet de donner l'accès aux différents services TCP. Elle se démarre à partir su super-demon inetd.
Si, par exemple, on ajoute au fichier /etc/inetd.conf ceci :
telnet stream tcp nowait root /usr/local/etc/netacl telnetd
Avec cette option, toute requête atteignant le port ftp du système netacl démarre avec le paramètre telnetd. Mais, avant le lancementdu demon, le logiciel vérifié que la requête est valide selon la table.
Par exemple, si l'on veut autoriser les personnes de son réseau interne à se connecter au telnet du firewall, il faudra ajouter :
netacl -telnetd : permit-hosts 193.1.1.* -exec /usr/sbin/in.telnetd
Nota Bene : ici 193.1.1.* équivaut à 193.1.1.0/24...

Dans cette suite se trouvent aussi quelques logiciels qui implémentent un relai pour les services... Le principe est le suivant : le client envoie une requête au service du firewall puis ce même client effectue une requête pour se connecter au site extérieur. Slon les règles du proxy, cette connexion sera refusée ou acceptée.
Les règles pouvant être utilisée sont les suivantes (liste non exhaustive...) :
- tn-gw (relai pour le service telnet),
- ftp-gw (relai pour les services FTP),
- rlogin-gw (relai pour le proxy rlogin),
- http-gw (relai pour client HTTP et gopher [remarquez que cette commande peut être pratique pour interdire certaines applications Java...]).

Exemple de configuration de /usr/local/etc/netperm-table :
tn-gw : deny-hosts * -dest 193.1.1.*
Interdiction à ces machines d'accéder au service Telnet.
tn-gw : permit-hosts 193.1.1.25
Autorise la machine ayant l'adresse 193.1.1.25 à accéder au service Telnet.
 
Maintenant, à vous de trouver comment configurer votre Proxy..... Je ne peux plus vous aider sur ce point, car chaque réseau est différent et chaque administrateur système a des besoins différents...

L'IP Masquerading

Cette technique est de plus en plus utilisée... Elle consiste en fait à masquer totalement l'adressage IP du réseau interne, ce qui rend possible l'utilisation d'adresses IP privées). Grâce à ce système, chaque paquet traversant le firewall est modifié pour faire croire qu'il n'y a qu'une seule machine connectée. Tout le réseau interne partage ainsi l'adresse IP (externe) du firewall.

Installation

Hélas, il va vous falloir une fois de plus recompiler le noyau de Linux, et répondre YES aux questions suivantes :
 

IP : forwarding/gatewaying (CONFIG_IP_FORWARD)                YES
IP : firewalling (CONFIG_IP_FIREWALL)                         YES
IP : firewall packet logging (CONFIG_IP_FIREWALL_VERBOSE)     YES
IP : masquerading (CONFIG_IP_MASQUERADE)                      YES
IP : ICMP masquerading (CONFIG_IP_MASQUERADE_ICMP)            YES

Ne répondez "YES" à la dernière question que si le firewall devra router les paquets ICMP...

Grâce à cela, nous allons pouvoir utiliser une autre option de ipfwadm : l'option -M.
Pour cela, il faut utiliser l'option -l qui liste les connexions qui utilisent l'IP masquerading et -s qui fixe le timeout.
Pour autoriser le masquerading, il faut fixer les règles suivantes :
 

ipfwadm -F -p deny
ipfwadm -F -a masquerade -S 192.10.10.0/24 -D0/0

Assainissement et protection du firewall

Comme vous l'aurez compris, pour attaquer un réseau possédant un firewall, il faut s'attaquer directement au firewall... Maintenant, il va vous falloir assainir votre firewall, c'est à dire vérifier la protection de la machine afin d'en trouver les points faibles...
 
Tout d'abord, vous pouvez commencer par visualiser le fichier /etc/inet.conf, qui est ce que l'on pourrait appeler un "super-serveur". Lorsqu'on lui demande, il lance les demons serveurs. Il contient la liste des services offerts, ce qui veut dire qu'il va falloir enlever tous les services qui ne sont pas parfaitement obligatoire, comme NIS, NFS, rsh, rcp, netstat, systat, tftp, bootp et finger...
Attention, il n'est pas nécessaire de tout désactiver ! Pour désactiver un service, placez simplement un # devant... Ensuite, envoyez un signal SIG-HUP au processus inetd, selon la syntaxe suivante :
kill -HUP <pid> où pid est le numéro du processus inetd.
 
Pour les débutants qui ne savent pas comment obtenir le PID, il existe une autre méthode : il vous suffit de faire
ps -uax |grep inetd Cela force inetd à relire son fichier de configuration (inetd.conf) et à se relancer...

Astuce : Si TFTP est ouvert, vous pouvez tenter une petite manipulation... En effet, ce protocole permet de transférer des fichiers comme FTP mais il s'appuie sur le protocole UDP. Il est donc moins sûr et ne peut servir que pour des fichiers de petite taille. Mais, son grand avantage réside dans le fait qu'il ne demande pas de mot de passe et de compte utilisateur ! Donc, en toute logique, tout utilisateur ayant accès au port 69 a accès à tous les fichiers lisibles par le demon correspondant... Vous pouvez tenter ceci :
 

evil % tftp
 tftp> connect victim.com
 tftp> get /etc/passwd /tmp/passwd.victim
 tftp> quit

Pour la sécurité du réseau, il est aussi préférable de supprimer tous les comptes utilisateurs inutiles...
Par ailleurs, il est fortement recommandé de supprimer tous les packages installés qui n'ont rien à faire sur un firewall, comme X Window, les services NFS et Samba, les jeux, etc.

A titre indicatif, voici la configuration idéale pour une machine destinée à devenir un firewall : Pentium 166 MMX, 32 Mo de Ram et partition de 800 Mo pour Linux... Ca suffit amplement !!! Bien sûr, à cela, il vous faut ajouter une connexion PPP à un fournisseur Internet, et on finit par une carte réseau afin de relier d'autres machines à ce firewall (par exemple, une carte ethernet compatible NE2000).

Maintenant, il va falloir protéger notre firewall, puisqu'il va devoir subir toutes les attaques provenant de l'extérieur... Nous allons donc utiliser un filtre de paquet... Une fois de plus, on recompile le noyaux, avec les options suivantes :
 

IP : forwarding/gatewaying (CONFIG_IP_FORWARD)                NO
IP : firewalling (CONFIG_IP_FIREWALL)                         YES
IP : firewall packet logging (CONFIG_IP_FIREWALL_VERBOSE)     YES

On pourra aussi s'inspirer des règles sur le filtrage des paquets et sur le spoofing pour compléter...

 

Bonne nouvelle pour tous les utilisateurs de Window$ !!!
Vous désirez un firewall, facile à installer et à paramêtrer, et qui, en plus, soit gratuit (freeware) ? Impossible, me direz vous...
Eh bien non ! Votre serviteur, après de longues recherches, vous a découvert ce petit bijou : ZoneAlarm v2.1, de Zone_Labs !
Vous verrez, le paramêtrage est exemplaire ! Vous installez le firewall, il se lance au démarrage de l'ordinateur, et, lorsque vous êtes connecté au Net et qu'un programme essaie d'y accéder en sortie, il vous demande s'il peut l'y autoriser, et voilà ! Tous les programmes non autorisés en sortie ou en entrée seront purement et simplement bloqués ! Génial non ?
 
Télécharger ZoneAlarm 2.1

Retour au sommaire


DURAND Adrien
Dernière révision : Samedi 26 août 2000




Participer au site Nous écrire Vos questions