avance reseau
This commit is contained in:
@@ -1,11 +1,70 @@
|
||||
\chapter{Les réseaux informatiques}
|
||||
|
||||
\section{Définiton}
|
||||
\section{Définition}
|
||||
|
||||
Pour être en mesure de comprendre le fonctionnement de l'analyse des règles de sécurité des réseaux informatiques, il est d'abords nécessaire de définir ce que sont ces derniers. Les classes et objets du code utilisent les terminologies réseaux expliquées ici.
|
||||
|
||||
Le but d'un réseau informatique et d'acheminer des données sous forme de paquets \acrshort{ip} d'un noeud A vers un ou plusieurs autres noeuds. Ces réseaux sont composés de plusieurs sortes d'équipements différents comme des routers, switches (commutateurs en français) mais aussi des équipements plus orienté sur la sécurité tels que des firewalls ou proxy. Tous ces équipements sont reliés ensemble via du cablages cuivre (citation) ou bien par du réseau optique. Ils forment ensemble le réseau physique sur lequel des réseaux logiques seront configurés. Pour comprendre cela, il est essentiel de connaître le modèle réseau OSI(citation).
|
||||
Le but d'un réseau informatique et d'acheminer des données sous forme de paquets \acrshort{ip} d'un noeud A vers un ou plusieurs autres noeuds. Ces réseaux sont composés de plusieurs sortes d'équipements différents comme des routers, switches (commutateurs en français) mais aussi des équipements plus orienté sur la sécurité tels que des firewalls ou proxy. Tous ces équipements sont reliés ensemble via du câblages cuivre (citation) ou bien par du réseau optique. Ils forment ensemble le réseau physique sur lequel des réseaux logiques seront configurés. Pour comprendre cela, il est essentiel de connaître le modèle réseau OSI(citation).
|
||||
|
||||
\newpage
|
||||
\section{Le modèle OSI}
|
||||
|
||||
Le modèle \gls{osi} est un découpage en sept couches, représentant les différents acteurs nécessaires à l'échange et la compréhension de l'information.
|
||||
Le modèle \gls{osi} est un découpage en sept couches, représentant les différents acteurs nécessaires à l'échange et la compréhension de l'information.
|
||||
|
||||
\begin{figure}[ht]
|
||||
\centering
|
||||
\includegraphics[width=100mm]{OSI_Model_v1.png}
|
||||
\caption{Le modèle OSI}
|
||||
\end{figure}
|
||||
|
||||
Ce qui va particulièrement nous intéresser ici sont les couches trois et quatres. La couche trois, réseau, décrit l'adressage logique des noeuds du réseau et la façon dont ils vont communiquer. C'est à ce niveau qu'est définit le protocole IPv4 est avec lui son système d'adressage et de routage qui sont essentiels pour comprendre le fonctionnement de certains objets (\lstinline{Address}, \lstinline{Route}).
|
||||
|
||||
\section{Couche 3 - les réseaux IP}
|
||||
|
||||
\subsection{IPv4}
|
||||
|
||||
Un noeud dans un réseau IPv4 est définit par une adresse réseau ainsi qu'un masque. Ensemble, ils vont définir l'identifiant de la machine ainsi que le sous-réseau dans lequel il appartient. Ces deux propriétés sont représentées sous la forme de 4 blocs de 8 bits au format décimal, séparé par des points (exemple: 192.168.0.10). Le masque lui, représente des valeurs binaires continues (par exemple 255.255.128.0). En appliquant un AND logique des deux valeurs, on obtient l'identifiant du sous-réseau dans lequel l'adresse IP fait partie. Dans le cadre de l'application, un noeud réseau est représenté par la classe \refname{sec:classe:address} (section \ref{sec:classe:address}).
|
||||
|
||||
Exemple tableau binaires et tout.
|
||||
|
||||
\subsection{CIDR}
|
||||
\label{subsec:network:ip:cidr}
|
||||
|
||||
La notation CIDR est beaucoup utilisée dans cette application, il s'agit d'une manière
|
||||
|
||||
\subsection{Le routage}
|
||||
|
||||
Pour qu'un noeud d'un sous réseau soit capable de communiquer avec un noeud se trouvant dans un autre, il faut que le paquet soit \emph{routé} du sous réseau source vers celui de destination. Cette action est effectuée par des équipements qui s'appellent "router" et qui utilisent pour cela les tables de routage.
|
||||
|
||||
schéma du labo avec les ip
|
||||
|
||||
Image d'une table de routage.
|
||||
|
||||
Chaque entrée dans une table de routage indique un réseau (au format \refname{subsec:network:ip:cidr}) et quel est le noeud suivant à qui envoyer le paquet afin de s'y rendre. En plus de cela, il existe des données supplémentaires qui permettent de déterminer quel est le meilleur chemin possible lorsque plusieurs route sont possibles. Dans le contexte de cette application, la table de routage correspond à la classe \lstinline{RoutingTable} (section \ref{sec:classe:routingtable}) et une route à la classe \lstinline{Route} (section \ref{sec:classe:route}).
|
||||
|
||||
Dans les réseaux informatiques, les routers ont très souvent plusieurs liens vers d'autres routeurs afin d'assurer de la redondance en cas de perte de liens. Pour être capable de définir quel est le meilleur chemin possible, le router commence par déterminer quel est la route la plus précise. Admettons que l'on souhaite envoyer un paquet vers l'adresse 192.168.0.10, si on reprend la table de routage précédente, on peut voir qu'il existe une route vers le réseau 192.168.0.0/16 via le router 10.0.0.1 et une autre route pour le réseau 192.168.0.0/24 via le router 10.0.1.1. Ces deux routes sont valables pour l'adresse 192.168.0.10, mais la seconde route est plus précise dans le sens où le réseau de la route est plus petit. Au niveau du code, l'algorithme du choix de la route est fait avec la méthode \lstinline{choosed\_route}.
|
||||
|
||||
Les routes peuvent avoir plusieurs types qui définissent une caractéristiques propre aux routes qui s'appelle l'\emph{Administrative Distance}. Cet attribut définit la priorité d'un protocole sur un autre. Plus la valeur est basse, plus le type est prioritaire. Une route directement connectées (par exemple une adresse IP définie sur une interface du router), sera forcément prioritaire sur une route apprise par un quelconque protocole. Les routes moins prioritaires ne se voient pas dans la table de routage et il n'y a donc pas besoin de gérer cette partie là.
|
||||
|
||||
La dernière caractéristique importante d'une route est son interface de sortie. C'est le port que le paquet va utiliser pour rejoindre le prochain router. Cette information est notamment utilisée par la méthode \lstinline{crossed?} (section \ref{sec:methodes:crossed}) afin de savoir si un flux va traverser le router. La logique utilisée dans ce cas découle directement de cet attribut, car un flux est définit par un réseau source et destination. Si l'interface de sortie pour ces deux réseaux est la même, cela signifie que l'équipement réseau ne sera jamais traversé par ce flux.
|
||||
|
||||
figure des AD standards.
|
||||
|
||||
schéma bloc de comment choisir une route.
|
||||
|
||||
\section{couche 4 - Transport}
|
||||
|
||||
\subsection{TCP \& UDP}
|
||||
|
||||
Si la couche trois définit l'adressage logique qui fournit les outils pour acheminer les paquets dans un réseau, la couche quatre va permettre de définir comment ces communications sont gérées par les noeuds. Il existe plusieurs protocoles de transport différent mais en pratique, TCP et UDP sont ceux qui sont le plus utilisé dans les réseaux internes d'entreprise. Ces deux protocoles ont comme point commun le fait d'utiliser un numéro de port pour identifier leurs communications. De la même façon qu'il y a une adresse IP source et destination, il y a aussi un port source et destination. Le port de destination est utilisé par le noeud de destination pour savoir quel processus doit traiter cette requête. Le numéro de port est codé sur 16bits et bien que n'importe quel programme peut utiliser un port, les 1024 premiers sont considérés comme "well-known" et sont identifiés. Par exemple, le protocol HTTP utilisé pour les applications web utilisent le port 80 et sa version chiffrée, le HTTPS, le 443. Ces éléments s'appellent des services et correspondent dans cette application à la classe \lstinline{Service} (section \ref{sec:classe:service}) qui sont composés d'une liste de port TCP et UDP qui sont représentés par la classe \lstinline{PortRange}
|
||||
|
||||
tableau avec les well-known port
|
||||
|
||||
Lorsqu'un noeud "client" ouvre une connexion vers un noeud "seveur", il va utiliser un port source aléatoire géré par le système d'exploitation et le port de destination est définis par le programme utilisé.
|
||||
|
||||
schéma ouverture de connexion.
|
||||
|
||||
\subsection{Firewall}
|
||||
|
||||
Les firewall sont des routers qui sont également capable de gérer les éléments de la couche quatre. Ils sont utilisés pour filtrer les communications entre les réseaux en filtrant les échanges basé sur les ports destinations. Ces équipements de sécurité permettent donc de n'autoriser que les paquets à destination d'un noeud spécifique et sur un ou plusieurs ports.
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@ Cette classe est utilisée pour sauvegarder les informations d'identifications p
|
||||
\section{Address}
|
||||
\label{sec:classe:address}
|
||||
|
||||
Il s'agit d'un élément d'une règle de sécurité (\lstinline{Policy}) qui décrit un objet réseau caractérisé par un réseau IPv4 au format \acrshort{cidr}. De ce réseau nous allons pouvoir en déduire la première et dernière addresse IP. Ces addresses seront ensuite converties en décimal pour pouvoir être indexé par la base de donnée. Ainsi \lstinline{start_ip} est la représentation numérique de la première addresse IP de ce réseau, et \lstinline{end_ip} la dernière. Dans le cas où le réseau ne contient qu'une seule adresse IP (masque réseau de 32 bits (cité la doc réseau au début)), ces deux valeurs seront identiques. Ces dernières sont calculées à chaque modifications de l'attribut network.
|
||||
Il s'agit d'un élément d'une règle de sécurité (\lstinline{Policy}) qui décrit un objet réseau caractérisé par un réseau IPv4 au format \acrshort{cidr}. De ce réseau nous allons pouvoir en déduire la première et dernière adresse IP. Ces addresses seront ensuite converties en décimal pour pouvoir être indexé par la base de donnée. Ainsi \lstinline{start_ip} est la représentation numérique de la première adresse IP de ce réseau, et \lstinline{end_ip} la dernière. Dans le cas où le réseau ne contient qu'une seule adresse IP (masque réseau de 32 bits (cité la doc réseau au début)), ces deux valeurs seront identiques. Ces dernières sont calculées à chaque modifications de l'attribut network.
|
||||
|
||||
\begin{lstlisting}[language=Ruby, title="app/model/address.rb"]
|
||||
# Exemples:
|
||||
@@ -56,10 +56,12 @@ Il fournit également la méthode 'match?' qui va retourner 'true' si l'ensemble
|
||||
Un groupe de service est simplement un objet dont l'attribut 'addresses' contient le nom de toutes les \lstinline{Address} qu'il contient.
|
||||
|
||||
\section{Route}
|
||||
\label{sec:classe:route}
|
||||
|
||||
Correspond à une route dans une table de routage d'un équipement réseau. (pti cf qui va bien). Elle est notament caractérisée par le réseau de destination, lui aussi donné avec une notation \acrshort{cidr}. Comme pour les adresses réseaux (\lstinline{Address}), la première et la dernière adresse IP du réseau sont converties en décimal pour être indexées dans la base de donnée. Chaque \lstinline{Route} est reliée a une table de routage (\lstinline{RoutingTable}).
|
||||
Correspond à une route dans une table de routage d'un équipement réseau. (pti cf qui va bien). Elle est notamment caractérisée par le réseau de destination, lui aussi donné avec une notation \acrshort{cidr}. Comme pour les adresses réseaux (\lstinline{Address}), la première et la dernière adresse IP du réseau sont converties en décimal pour être indexées dans la base de donnée. Chaque \lstinline{Route} est reliée a une table de routage (\lstinline{RoutingTable}).
|
||||
|
||||
\section{RoutingTable}
|
||||
\label{sec:classe:routingtable}
|
||||
|
||||
La table de routage est un élément des équipement réseau et est composé de routes.
|
||||
|
||||
@@ -71,8 +73,8 @@ Une policy représente un règle de sécurité dans un équipement réseau. Elle
|
||||
|
||||
La source et la destination sont deux champs qui peuvent contenir un ou plusieurs nom de \lstinline{Address} et/ou \lstinline{AddressGroup}. Le champ service peut être composé de un ou plusieurs nom de \lstinline{Service} et/ou \lstinline{ServiceGroup}. En plus de cela, la règle de sécurité peut contenir le ou les interfaces source et destination. Il s'agit de l'interface par lequel le flux doit arriver pour que la règle soit évaluée. Il se peut qu'une interface face partie d'un groupe d'interface qui s'appelle dans ce cas là, une zone.
|
||||
|
||||
Le dernier attribut d'une règle de sécurité est l'action à faire lorsqu'un flux correspond aux critières de la règle. Les deux seuls actions possibles sont "accept" ou "deny", qui vont respectivement laisser passer le flux, ou bien le bloquer.
|
||||
Le dernier attribut d'une règle de sécurité est l'action à faire lorsqu'un flux correspond aux critères de la règle. Les deux seuls actions possibles sont "accept" ou "deny", qui vont respectivement laisser passer le flux, ou bien le bloquer.
|
||||
|
||||
\section{Device}
|
||||
|
||||
|
||||
Les équipements de sécurité gérés dans l'application sont des objets de type \lstinline{Devices}. Il s'agit de la classe principale de l'application étant donné que la plupart des autres objets dépendent directement d'un équipement. Il fournit la méthode \nameref{sec:methodes:matched_policies} qui permet de mettre en place la feature principale de l'application, soit la recherche de règles de sécurité.
|
||||
|
||||
@@ -34,4 +34,7 @@ La méthode "crossed?" est un élément essentiel pour l'analyse des règles de
|
||||
return false unless route1 && route2
|
||||
route1.interface != route2.interface
|
||||
end
|
||||
\end{lstlisting}
|
||||
\end{lstlisting}
|
||||
|
||||
\section{matched\_policies}
|
||||
\label{sec:methodes:matched_policies}
|
||||
|
||||
BIN
images/OSI_Model_v1.png
Normal file
BIN
images/OSI_Model_v1.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 56 KiB |
Reference in New Issue
Block a user