0x01. PRESENTATION
Commençons d'abord par quelques petits rappels de base. Un pare-feu logiciel est un programme destiné à filtrer les données envoyées depuis le réseau, des données pouvant provoquer un bogue, un plantage ou pour les hacker plus déterminés à envoyer un vers via un déni de service (distribué ou non). On peut donc comparer ça à une porte qui détermine quelles personnes sont autorisées à entrer.
En entrant un peu plus dans le détails, un pare-feu aussi appelé firewal possède trois fonctions principales:
- Filtrer/examiner les données entrantes
- Filtrer/examiner les données sortantes pour vérifier qu'elles ne proviennent pas d'une application inconnue avec des données privées
- Examiner les applications connues (notamment à l'aide d'un hash)
- Filtrer/examiner les applications inconnues.
- Rejeter tout le traffic suspect :
poisonning : injection de paquet
flood : envoie en masse
spoof : usurpation d'identité
nuke : envoie d'une trop grande quantité de données
...
Les firewall modernes ont tendance à trop en faire et parfois, même trop souvent à prendre le rôle d'un antivirus ou d'un antispyware, ce qui en fait un logiciel plus lourd, c'est à dire occupant plus de mémoire et donc ayant plus de chances de planter.
Voici donc quelques notions de base de ce que l'on appelle le "firewalling".
Le firewalling regroupe un ensemble de règles de sécurité utilisées dans des firewall très souvent matériels mais également pour certain firewall logiciel, dont :
- Look'n'Stop et Jetico sous Windows
- FireHOLE avec IPtables et ARPtables dans les systèmes *NIX (Linux, Unix, ...)
- PacketFilter sous les systèmes *BSD (Free, Open, Desktop, ...)
Quelques définitions rapides
Flag = Le flag défini sur le protocol TCP l'action d'une machine vers une autre : demande de connexion, fin de connexion, ...
Port = Le port est le service, l'application qui va permettre aux données d'être interpretée : smtp : mailing , ftp : transfert de fichiers, ...
Adresse IP = Défini numériquement une machine : mon PC a l'adresse IP 192.168.1.123 et le routeur 192.168.1.1
Data = Les datas sont les données envoyées dans le paquet TCP ou UDP, par exemple l'envoie de donnée en TCP se fait par une action appelée PUSH (pousser, flag PSH)
Broadcast = Paquet d'identification des machines sur un (sous-)réseau, paquet destiné à un ensemble de machines d'oà leur adresse IP destination de type 255.255.255.255 et mettant en oeuvre leur adresse physique, c'est à dire l'adresse MAC (protocole ARP)
0x02. PRINCIPE
Poste 1 envoie un paquet avec le flag SYN actif (=1) au Poste 2
Poste 2 reçois le paquet et confirme (si autorisé) par un accusé de réception et une demande de connexion lui aussi en envoyant donc un paquet avec le flag ACK actif (accusé de réception) et le flag SYN actif (demande de connexion)
Poste 1 reçois le paquet avec les flags SYN et ACK actifs au Poste 2 et accuse réception donc envoie un paquet avec le flag ACK actif
[ Connexion, certains appellent ça le 'three-way handshake' pour poignée de main :
P1 demande la connexion
P2 accepte la connexion et se connecte aussi : si P1 est connecté sur P2, P2 est connecté sur P1, c'est bi-directionnel
P1 confirme la connexion
P1 -> SYN -> P2 P2 -> SYN/ACK -> P1 P1 -> ACK -> P2
Une connexion est bi-directionnelle, cependant la connexion à un service se fait sur un port choisi au moment de la demande de connexion : pour se connecter sur le site de Google, on demande une connexion sur le port 80 (HTTP - donc choisi) et Google se connecte sur notre poste pour envoyer les données c'est à dire le contenu de la page sur un port aléatoire et non utilisé par un service. Les services utilisent en standard des ports inférieur à 1024. Les ports locaux utilisés sont souvent compris entre 1025 et 4999.
Commande : NETSTAT -N | find "ESTABLISHED" TCP 127.0.0.1:4457 127.0.0.1:65534 ESTABLISHED
[ Envoie de données ]
P1 envoie les données et demande un accusé de réception
P2 confirme. Si P2 ne confirme plus ou envoie autre chose que ACK, P1 arrêtera d'envoyer des données
P1 -> PSH/ACK -> P2 P2 -> ACK -> P1
[ Fin de connexion ]
P1 demande une fin de connexion
P2 accepte et met fin à sa connexion
P1 confirme la fin de connexion à P2
P1 -> FIN -> P2 P2 -> FIN/ACK -> P1 P1 -> ACK -> P2
[ Refus de connexion : P2 refuse la connexion à P1 ]
P1 demande une connexion à P2
P2 envoie un refus à P1
P1 -> SYN -> P2 P2 -> RST -> P1
Nous sommes capables grâce à ces informations d'envoyer de fausses demandes de connexion, afin de renseigner quelques informations sur le service qui est derrière. Cela s'appelle du 'grab de bannière'. Il s'agit en fait de se connecter à un service uniquement pour voir ce qu'il retourne :
C:/WINDOWS/system32>nc 192.168.1.11 1021 220 TYPSoft FTP Server 1.10 ready... ^C ^C = CTRL+C
Il est également possible de faire de la découverte de système, communément appelé 'os fingerprinting' grâce à l'outil p0f (fait par Michal Zalewski). Nous ne rentrerons pas dans les détails sur cette technique car elle est complexe et aura son article pour elle seule. Nous allons simplement voir comment nous pouvons faire, si il n'y a pas un firewall qui fausse les données de retour sur le système cible.
Console #1: nc 192.168.1.11 139 Console #2: p0f -i 2 (selon l'interface réseau obtenu avec -L) Résultat dans la console 1: â ?Å Résultat dans la console 2: 192.168.1.10:2519 - Windows 2000 SP4, XP SP1 (firewall!) -> 192.168.1.11:139 (distance 0, link: ethernet/modem)
Le but du firewalling dans ce cas est de ne pas renvoyer de données s'il n'y a pas d'envoie de donnée de la part du client afin que p0f ne recoive pas ou trop peu de données. Nous allons maintenant analyser rapidement quelques types de scan avec Nmap.
Un scanne de ports permet également de voir si un port est ouvert autrement qu'en envoyant une demande de connexion (SYN), il est possible de voir si un port est ouvert en regardant la réponse, le temps de réponse ou bien même le contenu de la réponse :
Demandes de connexion : nmap -sT Scanne de port de type TCP Connect(), un port est ouvert si la réponse contient les flags SYN et ACK actifs. nmap -sS Scanne de port de type SYN, mais ne renvoie pas un ACK en cas de réponse, un port est ouvert si la réponse contient le flag ACK actif. Particularités liées à TCP/IP : nmap -sF Scanne de port de type FIN (FIN actif), un port est fermé si la réponse contient le flag RST défini à 1 nmap -sN Scanne de port de type NULL (aucun drapeaux actifs), un port est fermé si la réponse contient le flag RST défini à 1 nmap -sX Scanne de port de type XMAS (FIN PSH URG), un port est fermé si la réponse contient le flag RST défini à 1 Exploitation par UDP : nmap -sU Scanne de port de type UDP, un port est fermé si la réponse est un paquet ICMP de type 3 et de code 3
Il est clair que le firewall doit être capable de détecter et d'arrêter les paquets de ces différents types. Un firewall trop simpliste qui ne bloquerait que les scanne de type SYN ou TCP Connect() ne serait utile qu'en parti.
0x03. VALEURS
La valeur correspond à une partie des données que contient le paquet TCP/IP. Ca dépend aussi bien du protocol que du service sur lequel transitent les paquets. Les types ICMP sont donnés à titre indicatifs, ils sont très utiles lors de l'élaboration d'un jeux de règles. Voici donc quelques valeurs utiles pour la configuration de votre pare-feu.
Types ICMP --------- * Type 8 : Requête : Envoie une demande de réponse d'un poste * Type 0 : Réponse : Répond 'présent' à une requête de type 8 * Type 10 : Requête : Envoie une demande de réponse d'un routeur * Type 9 : Réponse : Répond 'présent' à une requête de type 10 * Type 13 : Requête : Fait une demande pour l'identifiant de datage * Type 14 : Réponse : Répond à la demande de timestamp (identifiant de datage) * Type 15 : Requête : Envoie une demande d'information sur l'adresse IP * Type 16 : Réponse : Répond à la demande d'adresse IP avec en donnée la valeur IP * Type 17 : Requête : Demande quel masque est utilisé par la machine * Type 18 : Réponse : Répond à la demande de masque donnée la valeur de masque
Valeur IP --------- 192. 0. 0. 0 = 192 x 2^24 = 3221225472 0. 168. 0. 0 = 168 x 2^16 = 11010048 0. 0. 1. 0 = 1 x 2^8 = 256 0. 0. 1. 1 = 1 x 2^0 = 1 192.168. 1. 1 = C0. A8. 1. 1 = 3232235777 255.255.255.255 = FF. FF. FF. FF = 4294967295
Adresses MAC ------------ 00:11:00:11:00:12 = Paquet venant de l'Internet FF:FF:FF:FF:FF:FF = Broadcast, demande d'identification matérielle
IP Adresse - Hotmail Port ------------- -------------------------- ---- 65.54.179.192 loginnet.passport.com 443 65.54.239.80 dp.msnmessenger.akadns.net 1863 messenger.hotmail.com 65.54.239.81 gw.msnmessenger.akadns.net 80 gateway.hotmail.com 131.107.113.76 sqm.msn.com 80 207.46.3.2 80 64.4.60.7 http://services.msn.com/svcs/hotmail/httpmail.asp 80
0x04. SERVEURS DNS
DNS signifie Domain Name Server, et défini un nom à une adresse IP, c'est grâce à eux qu'ont peut naviguer sur internet sans avoir à conna�tre l'adresse IP de Google ou Yahoo, par exemple. Voici une liste de serveurs DNS en fonction des FAI (: Fournisseur d'Accès Internet)). Les serveurs DNS doivent avoir des autorisations spéciales notamment sur le port 53 en UDP (DNS).
LISTE DE SERVEURS DNS --------------------- 9 Telecom / 9Online | DNS primaire : 80.118.192.100 | DNS secondaire : 80.118.196.36 ---------------------------+------------------------------------- AOL | DNS Primaire : 205.188.146.146 | DNS Secondaire : 202.67.95.0 ---------------------------+------------------------------------- Alice ADSL | DNS primaire : 212.216.212.112 | DNS secondaire : 212.216.172.62 ---------------------------+------------------------------------- Belgacom / SkyNet | DNS primaire : 195.238.2.21 | DNS secondaire : 195.238.2.22 ---------------------------+------------------------------------- Bluewin.ch | DNS primaire : 195.186.4.111 | DNS secondaire : 195.186.4.110 ---------------------------+------------------------------------- Cégétel | DNS primaire : 212.94.174.85 | DNS secondaire : 212.94.174.86 | DNS tertiaire : 217.19.192.131 | DNS quater : 217.19.192.132 ---------------------------+------------------------------------- Chello | DNS primaire : 212.186.224.9 | DNS secondaire : 212.186.224.10 ---------------------------+------------------------------------- Club-internet | DNS Primaire : 194.117.200.10 | DNS Secondaire : 194.117.200.15 ---------------------------+------------------------------------- Darty box (Dartybox) | DNS Primaire : 212.99.2.8 | DNS Secondaire : 195.167.224.150 ---------------------------+------------------------------------- EasyConnect | DNS Primaire : 212.180.0.137 | DNS Secondaire : 212.180.1.79 ---------------------------+------------------------------------- Free | DNS Primaire : 212.27.32.5 | DNS Secondaire : 212.27.32.6 ---------------------------+------------------------------------- Free Haut débit | DNS Primaire : 212.27.32.176 | DNS Secondaire : 212.27.32.177 ---------------------------+------------------------------------- Infonie | DNS Primaire : 10.1.5.2 | DNS Secondaire : 10.1.6.10 ---------------------------+------------------------------------- LibertySurf | DNS Primaire : 213.36.80.2 | DNS Secondaire : 213.36.80.4 ---------------------------+------------------------------------- Magic Online | DNS Primaire : 194.149.160.9 | DNS Secondaire : 194.149.160.1 ---------------------------+------------------------------------- Nérim | DNS Primaire : 62.4.16.70 | DNS Secondaire : 62.4.16.80 ---------------------------+------------------------------------- Net Pratique | DNS Primaire : 62.210.164.14 | DNS Secondaire : 62.210.164.4 ---------------------------+------------------------------------- Neuf | DNS Primaire : 212.30.96.108 | DNS Secondaire : 213.203.124.146 ---------------------------+------------------------------------- NOOS | DNS Primaire : 212.198.0.91 | DNS Secondaire : 212.198.2.5 ---------------------------+------------------------------------- Nordnet | DNS Primaire : 194.206.126.253 | DNS Secondaire : 194.51.3.49 ---------------------------+------------------------------------- Numéricable | DNS Primaire : 81.220.255.4 | DNS Secondaire : 80.236.0.68 ---------------------------+------------------------------------- Oléane | DNS Primaire : 194.2.0.20 | DNS Secondaire : 194.2.0.50 ---------------------------+------------------------------------- Orange | DNS Primaire : 80.10.246.2 | DNS Secondaire : 80.10.246.129 ---------------------------+------------------------------------- Sympatico.Ca | DNS Primaire : 198.235.216.110 | DNS Secondaire : 209.226.175.224 ---------------------------+------------------------------------- Télé2 | DNS Primaire : 130.244.127.161 | DNS Secondaire : 130.244.127.169 ---------------------------+------------------------------------- TISCALI-Freesbee | DNS Primaire : 213.36.80.1 | DNS Secondaire : 192.221.96.3 ---------------------------+------------------------------------- Videotron.CA | DNS Primaire : 205.151.222.253 | DNS Secondaire : 205.151.222.254 ---------------------------+------------------------------------- Wanadoo | DNS Primaire : 80.10.246.2 | DNS Secondaire : 80.10.246.129 ---------------------------+------------------------------------- WorldNet | DNS Primaire : 195.3.3.1 | DNS Secondaire : 195.3.3.2 ---------------------------+------------------------------------- World Online | DNS Primaire : 212.83.128.3 | DNS Secondaire : 212.83.128.4
0x05. JEUX DE REGLES
La plus part des pare-feux utilisateur ont une base de donnée contenant des définitions d'attaques et de type de scanne. C'est avec cette base de donnée que le parefeu analyse le paquet reçu de l'exterieur et le compare avec sa liste. Les parefeux évolués c'est à dire matériels pour la plus part n'ont pas de mise à jour si ce n'est à cause de faille logiciel.
Un jeu de règles permet à la différence d'une base de donnée est défini par l'utilisateur et non par le firewall lui même, beaucoup de parefeux permettent les deux, cependant les règles paramètrables par l'utilisateur sont souvent génériques car elles permettent d'autoriser ou de bloquer une adresse IP, un port, controler les PING mais pas grand chose de plus.
Sous Windows, on peut se permettre de comparer Look'n'Stop ou Jetico à FireHol avec IPtables sous Linux (en cependant légèrement moins bien) car ils permettent de configurer jusqu'au flag des paquet TCP, et contrôle des protocoles utilisé en dehors de l'internet, dans un réseau d'entreprise par exemple - pour ça je pense au protocol SNMP, IPX, ...
Selon mon avis le rôle d'un parefeu est de proteger l'accès à une machine d'un réseau donné.
Sur un réseau simple, pour minimiser le coût il convient de disposer d'une solution firewall et antivirus sur chaque poste.

Ordinateur/Poste : PC1 PC2 -----------------:------------------------------------------------ Parefeux : Jetico 2.0 Comodo Antivirus : NOD32 2.7 Avast Autre : ProcessGuard : Seem
En supposant que l'ordinateur portable est dédié à un usager classique alors que le l'ordinateur fixe PC1 est dédié à la personne qui s'y connait le plus. Je propose des solutions simplistes sur PC2 mais testée et approuvée par des sites experts en sécurité (logiciels à trouver, il se peut qu'à la lecture Comodo Firewall et Avast Antivirus soit obsolète). D'abord il convient de bloquer les ports sensibles : 139, 445, 1027, 1028 et le 135. Je propose ci-dessous - en grosse partie grâce au jeu de règles de Look'n'Stop Phant0m`s - une série de tests à réaliser pour mieux filtrer le traffic sur votre ordinateur ou sur votre réseau.
Port pour liste autorisée Filtrage du protocole TCP ------------------------- ------------------------- 21 FTP My Adress Attack 25 SMTP Drop Bad Packets (Invalid checksum) 80 HTTP Deny Fragmented Packets 110 POP Deny TCP with all flags set 143 IMAP Deny TCP without set 443 HTTPS Deny TCP with flags SYN FIN RST ACK 465 SMTPS Deny TCP with flags SYN FIN RST 995 POPS Deny TCP with flags FIN PSH URG (Xmas scan) Deny TCP with flags CWR (Ymas scan) Deny TCP with flags SYN FIN PSH Port bloqués de l'exterieur Deny TCP with flags SYN RST PSH --------------------------- Deny TCP with flags SYN FIN 445 Microsoft DS Deny TCP with flags SYN RST (DoS) 135 EPMAP Deny TCP with flags FIN RST PSH URG 137:139 NETBIOS Deny TCP with flags FIN URG 7001 PUB MSN Deny TCP with flags FIN RST Deny TCP with flags FIN ACK (Mailmon scan) Deny TCP with flags URG Filtrage du protocole ICMP -------------------------- Block MBONE ICMP Block ICMP Redirection (Detection) Block ICMP Problematic (Detection) Allow ICMP Request Allow ICMP Reply Block All Other ICMP packet Block IGMP
Afin de mieux sécuriser ce genre de réseau il suffit tout simplement d'avoir un Windows officiel et des logiciels de sécurité à jour, car un réseau ou un ordinateur avec une multitude d'outils de sécurité mais qui ne sont pas à jour, laissera les exploits passer, et bloquer un exploit ne fait ni parti du travail d'un antivirus ni du travail du firewall. Pour un tel réseau il faut donc sécuriser le poste le plus important de manière efficace et non de manière forte. J'entend par manière forte, installer un antivirus, antispyware, un firewall, un antirootkits, un HIPS surtout que maintenant le firewall fait antispyware, que l'antivirus fait antispyware. On se retrouve avec plein d'usines à gaz qui ont plus tendance à ralentir un ordinateur même récent que vraiment protéger. Il faut se dire qu'il veut mieux un outil spécialisé plutôt qu'un outil qui fait tout, un outil qui fait tout, s'il plante ne fait plus rien, alors qu'un antivirus qui plante ne cause pas de dégâts au pare-feu. Je me répète certes, mais j'ai de bonnes raisons.
0x06. CONCLUSION
De telles règles assurent une bonne politique de sécurité, elle sont très certainement perfectionnables mais elle me semble déjà bien filtrante et empêche pas mal de type de scanne. La grosse différence avec Linux est le fait que le timing n'est absolument pas géré.
=> Écrit par : Nicolas, le 21 juillet 2015