Le firewalling correspond à la configuration particulière que peut avoir un pare-feu (firewall). Cette configuration particulière correspond en fait à une suite de règles souvent prédéfinies par un pare-feu personnel, et à définir sur un pare-feu professionel. Nous allons voir quelques bases du firewalling.







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)





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.





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    




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
  




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.


./fichiers/tutoriels/firewalling/lan_classic.jpg

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.





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


 
Mots clés :  
  network 
  
  security 
    >   Articles connexes :

GitVuln

GitVuln


HTTP Server, tell me who you are ?


Discuter avec un serveur web *apparement* muet ? Voici comment faire...


/tmp et /var/log en noexec sur macOS

/tmp et /var/log en noexec sur macOS



Durcissement de Windows

Durcissement de Windows


3318506