Accueil | Hardware | Software |
Programmation | Liens | L'équipe |
Windows NT 4.0
|
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
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...
Fonctionnement Les firewalls fonctionnent selon un principe très simple... Le firewall est, à l'origine, un système comportant deux interfaces réseau.
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.
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.
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.
Comme vous avez pu le constater, nous sommes en présence de cinq catégories :
Avant de créer toute règle de filtre IP, il vous faut définir des règles de sécurité. Par exemple :
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.
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.
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 (!!!).
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.
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.
Exemple de configuration de /usr/local/etc/netperm-table :
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.
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...
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...
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$ !!!
DURAND Adrien
|
Participer au site | Nous écrire | Vos questions |