Firewall, concepts et architectures

BoTTom |    Changer de couleur
 
I/ FIREWALL, Préambule.
------------------------
 
Un Firewall est un élément matériel ou logiciel (souvent les deux)
empéchant un intrus d'investir votre réseau
quand ce dernier est connecté à un réseau publique (Internet par ex.)
 
 
Quels sont les risques :
 
+ intrusion              : on accède à vos ressources
 
 
+ refus de service       : on empèche vos serveurs de fonctionner
                              (surchage de connexions ou surcharge de mails)
 
 
+ vol d'informations     : on accède à des données sensibles
                              ou on détruit des données
 
 


|    Changer de couleur
********************************
*  Quelques principes de base  *
********************************
 
1/ le moindre privilège.
 
il est très simple : Tout ce qui n'est pas explicitement autorisé est interdit.
(donc , interdiction par défaut, absence de droits par défaut, etc...)
 
2/ position de panne sans danger
 
un élément qui tombe (en panne ou sous les attaques) doit empécher le réseau
de fonctionner et non laisser passer tout le monde.
 
3/ goulet d'étranglement
 
le Firewall doit être le SEUL POINT DE PASSAGE (pas de modem sur les bureaux)
ce qui nous ammenera aux PROXYs et serveurs SOCKS
 
4/ faire simple
 
Il est souvent plus efficace de ne PAS démarrer certains services.


|    Changer de couleur
 
II/ architectures de Firewall
-----------------------------
 
 
1/ Hôte à deux réseaux
 
       INTERNET
           |
           |
           |
     +----------+
     |          |      il s'agit ici d'une machine à deux
     |          |      interfaces dont on a désactivé la
     |          |      fonction 'IP data Fowarding"
     +----------+
           |
           |
           |
     réseau privé
 
 


|    Changer de couleur
 
avantage      :
 
 
il suffit d'installer deux interfaces réseau sur le serveur WEB
(il faudra néenmoins compléter cette architecture par un soft de filtrage .
Firewall One de chez SUN, par exemple)
 
 
 
inconvénient  :
 
 
toute la sécurité est concentrée sur une seule machine,
                                       tous les services aussi.
 
 
 
 
 
 
 


|    Changer de couleur
 
2/ Hôte à écran
 
 
                   INTERNET
                      |
                      |
                      |
                      |
                      |
                 °---------°
                !           ! routeur (filtrage de paquets)
                 °---------°
                      |
                      |
réseau      ------------------------------------------------------
interne               |                       |             |
               +--------+                 client        client
               !        !
               !        ! bastion
               +--------+
 


|    Changer de couleur
 
avantage      :
 
 
-ce filtrage est réalisé par un routeur nettement plus difficile à pirater
qu'un ordinnateur
 
-en cas d'attaque par refus de service seul le routeur est surchagé
 
 
 
 
inconvénient  :
 
 
-si un intrus rentre sur votre serveur bastion, il n'existe plus de barrière
 avec votre réseau privé.
 
 
 
 
 


|    Changer de couleur
3/ Sous réseau à écran     (c'est l'architecture la plus répendue,
                                                 et l'une des plus sures)
 
INTERNET
   |
   |
   |                           +----------+
   |                           !          ! Bastion
   |                           !          !  (serveur WWW)
°---------°  routeur           !          !
!           ! externe          +----------+
°---------°                           |              réseau périphérique
   |-----------------------------------------------------------
                                               |
                                          °---------°  routeur
                                         !           ! interne
                                          °---------°
                                               |
                                               |
  réseau      ------------------------------------------------------
   interne              |                                      |
   sécurisé           client                                 client


|    Changer de couleur
les deux routeurs appliquent des règles de filtrage de paquets
le bastion contient les services "publiques", www, smtp et DNS.
 
sur le réseau privé,
vous utiliserez des ADRESSES IP PRIVEES (non routables)
 comme la classe A 10, ou la classe C 192.168.x
vous configurerez un autre nom de domaine que le domaine publique
 vous installerez donc probablement une autre DNS.
 
le routeur "interne" peut être un host avec un logiciel de filtrage
et de logging, plus un proxy ou serveur SOCKS (ou les deux).
 
 
Avantages :
-le fait d'avoir deux filtres multiplie la sécurité
                                          (si une règle est mal configurée)
si un intrus "crack" votre premier filtre,
                   il n'a accès qu'à un réseau de moindre importance
                                                (réseau périphérique).
 
-Inconvénients :
il est plus compliqué d'intégrer vos données entreprise à vos pages Web.


|    Changer de couleur
variantes de cette architecture avec un FIREWALL IBM sur IPCS :
 
INTERNET
   |                           +----------+
   |                           !          ! Bastion
   |                           !          !  (serveur WWW)
°---------°  routeur           !          !
!         ! externe            +----------+
°---------°                           |              réseau périphérique
   |-----------------------------------------------------------
                                               |
                                   +------+---------+  IPCS (fsiop)
          AS/400                   +      !         !  à deux interfaces
             contient:             !      ! FIRE-   !  > DNS externe
                    DNS interne    !      !   WALL  !  > routeur de Mail
                    serveurs FTP,  !      +---------+  > Proxy et/ou
                    Mail interne   !           |    !     serveur SOCKS
                                   ! AS400     |    !  > Filtrage de paquets
                                   +-----------|----!
  réseau      ---------------------------------|--------------------
   interne              |                                      |
   sécurisé           client                                 client


|    Changer de couleur
 
III/ Filtrage
-------------
 
Le firewall possède un certain nombre d'informations
 
+ l'adresse IP source et cible
 
+ les ports source et cible (21 = FTP, 23 = Telnet, 80 = HTTP)
    on peut refuser les paquets pour le port 21 ==> FTP ne passe pas
 
+ l'interface d'arrivée
    par exemple une adresse IP source privée (interne) sur l'interface externe
    représente cetainement quelqu'un de l'extérieur qui a épié vos trames et qui
    essaie de ce faire passer pour quelqu'un de l'intérieur.
 
 
+ le Bit d'acquitement (ACK)
    ce bit est à zéro sur le premier paquet (la demande de conexion) et à UN
    sur tous les autres, on peut donc imaginer la règle qui suit
 
 


|    Changer de couleur
 
             ! Adr.    ! Adr.   !           ! port   ! port  !       !       !
  direction  ! source  ! cible  ! protocole ! source ! cible ! = 1 ? ! Action!
------------------------------------------------------------------------------
1  sortie    ! interne !   -    ! TCP       ! >1023  !   23  !   -   !  OK   !
2  entrée    !    -    !interne ! TCP       !    23  ! >1023 !  Oui  !  OK   !
3  sortie    !    -    !   -    !    -      !    -   !    -  !   -   ! refus !
4  entrée    !    -    !   -    !    -      !    -   !    -  !   -   ! refus !
 
 
les lignes 3 & 4 sont un refus par défaut (règle du moindre privilège)
 
 
 
la ligne 1 correspond à un paquet Telnet sortant ==> OK
 
la ligne 2 correspond à une réponse Telnet entrante ==> OK
 
en effet le premier paquet TELNET (ACK = 0) étant refusé, la session Telnet
 ne pourra jamais être initialisée venant de l'extérieur.
 
 


|    Changer de couleur
Quelques remarques service par service :
 
 
SMTP :
 
+ port d'écoute 25, port client > 1023
 
+ comme Telnet le premier paquet a le bit ACK à 0, les autres paquets à 1
 
+ le protocole étant par définition redirigable, utiliser un enregistrement
dans la DNS du réseau privé indiquant la bastion comme passerelle SMTP
qui lui même redirigera (avec SON adresse IP) le courrier sortant vers
l'internet.
 
POP3 :
 
+ port d'écoute 110 (109 pour POP2) , port client > 1023
 
+ comme Telnet le premier paquet a le bit ACK à 0, les autres à 1
 
 
 


|    Changer de couleur
FTP  :
 
+ port d'écoute 21 pour le canal commandes
                20 pour le canal données
                clients, deux ports > 1023.
 
en effet le FTP de base fonctionne de la manière suivante :
 
 - au début de la session le CLIENT s'alloue deux ports pour lui-même(> 1023)
 - il communique avec le serveur sur le port 21 en mode commande
 - puis lance la commande FTP "PORT" pour indiquer au serveur quel numéro de
    port utiliser pour le transfert des données.
 - le serveur ouvre alors une connexion sur le port demandé.
 
==> la dernière ligne constitue donc une exeption puisque l'on a une connexion
(paquet ayant ACK à 0) venant du serveur sur un n° de port > à 1023
 
Dans le monde UNIX certains services utilisent des ports 6xxx pour le serveur X
Sur AS/400, Client Accès utilise de tels ports.
 
 
 


|    Changer de couleur
Certaines versions de FTP autorisent le mode passif
 - le début de connexion est le même (sur le port 21)
 - mais le client utilise la commande FTP PASV (et non port) demandant au
    serveur de choisir un n° de port aléatoire (> 1023) pour le canal data.
 - c'est alors le client qui initialisera cette deuxieme connexion.
 
 
L'AS/400 essai le mode passif, s'il recoit une erreur, il envoi alors la
  commande PORT
 
 
TELNET :
 
+ port d'écoute 23 , port client > 1023
 
+ premier paquet a le bit ACK à 0, les autres à 1
 
 
Attention aux mots de passe de l'ouverture de session qui circulent en CLAIR
sur la ligne et qui peuvent donc être "sniffer".
Cela rend particulièrement délicat les sessions TELNET entrantes.
 


|    Changer de couleur
 
REXEC  :
 
commandes à distance entrantes ==> à déactiver !
 
+ port d'écoute 512 , port client > 1023
 
+ premier paquet a le bit ACK à 0, les autres à 1
 
 
NNTP  :
 
ou serveur de new, non présent sur AS/400 (voir RENDEZ-VOUS/400)
 
+ port d'écoute 119 , port client > 1023
 
+ premier paquet a le bit ACK à 0, les autres à 1
 
 
 
 
 


|    Changer de couleur
 
DNS   :
 
+ port d'écoute 53, port client > 1023
 
        en fait la règle est la suivante :
 
 
        source >1023, cible = 53 ==> client vers serveur
 
        source = 53 , cible = 53 ==> réponse d'un serveur en UDP
                                     ou dialogue de serveur à serveur en UDP
 
 
+ sur UDP, il n'y a pas de bits ACK
 
        - mais certains systèmes utilisent TCP si une requête UDP n'aboutit
           pas. (en TCP le port client est TOUJOURS > 1023)
 
 
 
 


|    Changer de couleur
 
HTTP  :
 
+ port d'écoute par défaut 80, client > 1023
 
        mais le port d'écoute peut être indiqué par le client
        (dans une URL, tapez "www.as400.ibm.com:81" pour dialoguer avec
         le serveur www.as400.ibm.com sur le port 81)
 
+ premier paquet a le bit ACK à 0, les autres à 1
 
 
c'est LE service qu'il faut mandater en sortie
 
(c'est à dire utiliser un proxy, situé sur le réseau périhérique)
 
  -  tous les navigateurs WEB l'admettent
  -  il est inclus dans le FIREWALL pour AS/400
  -  sur NT, Microsoft en propose un, sinon essayez WINGATE de Deerfield.
 
 
 


|    Changer de couleur
autres services :
 
service ! port  !   remarques
---------------------------------------------------------------------------
TFTP    !  69   !  Trivial FTP (FTP sans connexion)
        !       !
LPR     !  515  ! transfert de spools
        !       !
UUCP    !  540  !  Unix to Unix (transfert de fichiers)
        !       !
rlogin  !  513  !  conenxion à distance du monde Unix
        !       !
rsh     !  514  !  commandes à distance (type Rexec)
        !       !
TFTP    !  69   !  Trivial FTP (FTP sans connexion)
        !       !
Gopher  !  70   !  Accès hiérarchique à des fichiers
        !       !
WAIS    !  210  !  serveur de recherche
        !       !
Archie  !  1525 !  indexs de serveurs FTP
        !       !


|    Changer de couleur
Finger  !  79   !  recherche de renseignements sur des utilisateurs Internet
        !       !
whois   !  43   !  recherche de renseignemts Internet (users, serveurs, réseau)
        !       !
TALK    !  517/ ! service de conférence en temps réel
        !  518  !
        !       !
IRC     !  6667 ! service de conférence mais en mode texte
        !       !
SNMP    !  161  ! service de surveillance et centralisation
        !       !  d'informations réseau
        !       !
RIP     !  520  ! routage dynamique
        !       !
NTP     !  123  ! réglage de l'horloge (UDP)
        !       !
NFS     !(2049) ! accès à des fichiers éloignés en UDP
        !       !  (le n° de port n'est pas normalisé)
        !       !
X11     !>6000  ! serveur de terminaux X (nombreuses failles possibles)
-----------------------------------------------------------------------
 


|    Changer de couleur
enfin pensez au requêtes ICMP,
 particulièrement celles générées par Ping et Traceroute
 
===========================================================================
 
ATTENTION sur AS/400 à WSG (port 5061)
et aux services Client Access sur IP (ports 84xx, ==> netstat *cnn)
 
============================================================================
 
proposition de tableau de filtrage pour une architecture à sous réseau :
 
 
routeur interne (c'est à dire FIREWALL sur IPCS)
 
 
       + un " - " indique que l'on applique pas de test sur cette colonne
 
       + pour les adresses le jeux des masques (subnet mask) permet
         d'indiquer une adresse précise (le bastion,le serveur SMTP interne)
          ou une plage d'adresse (le réseau interne)
 


|    Changer de couleur
             ! Adr.    ! Adr.   !           ! port   ! port  !       !       !
  direction  ! source  ! cible  ! protocole ! source ! cible ! = 1 ? ! Action!
------------------------------------------------------------------------------
* Adresse falsifiée    !        !           !        !       !       !       !
01 entrée    ! interne !   -    !    -      !   -    !   -   !   -   ! refus !
             !         !        !           !        !       !       !       !
* Telnet     !         !        !           !        !       !       !       !
02 sortie    ! interne !   -    ! TCP       ! >1023  !   23  !   -   !  OK   !
03 entrée    !    -    !interne ! TCP       !    23  ! >1023 !  Oui  !  OK   !
             !         !        !           !        !       !       !       !
* FTP (canal commandes)!        !           !        !       !       !       !
04 sortie    ! interne !   -    ! TCP       ! >1023  !   21  !   -   !  OK   !
05 entrée    !    -    !interne ! TCP       !    21  ! >1023 !  Oui  !  OK   !
             !         !        !           !        !       !       !       !
* FTP (canal données) en mode passif [connexion due au client]       !       !
06 sortie    ! interne !   -    ! TCP       ! >1023  ! >1023 !   -   !  OK   !
07 entrée    !    -    !interne ! TCP       ! >1023  ! >1023 !  Oui  !  OK   !
             !         !        !           !        !       !       !       !
* SMTP sortant vers le bastion  !           !        !       !       !       !
08 sortie    ! interne ! bastion! TCP       ! >1023  !   25  !   -   !  OK   !
09 entrée    ! bastion ! serveur! TCP       !    25  ! >1023 !  Oui  !  OK   !
             !         !SMTP int!           !        !       !       !       !


|    Changer de couleur
             !         !        !           !        !       !       !
* HTTP       !         !        !           !        !       !       !
10 sortie    ! interne ! bastion! TCP       ! >1023  !   80  !   -   !  OK   !
11 entrée    ! bastion !interne ! TCP       !    80  ! >1023 !  Oui  !  OK   !
             !         !        !           !        !       !       !
* DNS requêtes entre DNS interne et DNS du bastion   !       !       !
12 sortie    ! DNS int.! bastion! UDP       !    53  !   53  !       !  OK   !
13 entrée    ! bastion ! DNS int! UDP       !    53  !   53  !       !  OK   !
             !         !        !           !        !       !       !
* DNS requêtes clients et vers DNS du BASTION        !       !       !
14 sortie    ! DNS int.! bastion! UDP       ! >1023  !   53  !       !  OK   !
15 entrée    ! bastion ! DNS int! UDP       !    53  ! >1023 !       !  OK   !
             !         !        !           !        !       !       !
* DNS requêtes TCP (réessai)    !           !        !       !       !
12 sortie    ! DNS int.! bastion! UDP       ! >1023  !   53  !       !  OK   !
13 entrée    ! bastion ! DNS int! UDP       !    53  ! >1023 !       !  OK   !
             !         !        !           !        !       !       !
* refus par défaut     !        !           !        !       !       !
98 sortie    !    -    !   -    !    -      !    -   !    -  !   -   ! refus !
99 entrée    !    -    !   -    !    -      !    -   !    -  !   -   ! refus !
 
 





©AF400