Files
heig-rapport-tb/chapitres/model/classes.tex
2018-09-07 17:08:25 +02:00

79 lines
5.4 KiB
TeX

\chapter{Les classes}
\label{ch:classes}
\section{Credential}
Cette classe est utilisée pour sauvegarder les informations d'identifications pour accéder aux équipements et est identifiable par un nom unique. Le mot de passe est enregistré dans la base de donnée de façon chiffrée, mais avec un chiffrement symétrique, car il est nécessaire de pouvoir le réutiliser pour s'authentifier par la suite sur les équipements. Les fonctions pour chiffrer et déchiffrer le mot de passe sont fournit par l'attribut "password".
\begin{lstlisting}[language=Ruby, title="app/model/credential.rb"]
# Returns the decrypted value of the 'encrypted_password' field
def password
@password = SymmetricEncryption.decrypt(encrypted_password)
end
# Encrypt the clear text password and set the 'encrypted_password' field.
#
# Params:
# * new_password: the new value of the password
def password=(new_password)
@password = SymmetricEncryption.encrypt(new_password)
self.encrypted_password = @password
end
\end{lstlisting}
\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.
\begin{lstlisting}[language=Ruby, title="app/model/address.rb"]
# Exemples:
#
# address = Address.new
# address.name = 'unique name' # => true
# address.network = '192.168.0.0/24' # => true
# address.start_ip # => 3232235520
# address.end_ip # => 3232235775
\end{lstlisting}
\section{AddressGroup}
Un groupe d'adresse est simplement un objet dont l'attribut 'addresses' contient le nom de toutes les \lstinline{Address} qu'il contient.
\section{PortRange}
Un \lstinline{PortRange}, représente une plage de numéro de port et le protocol qui leur est associé. Il peut en plus également gérer une combinaison de code et type pour les communications ICMP. Il est contenu dans un \lstinline{Service}.
\section{Service}
\label{sec:classe:service}
Un service est un élément d'une règle de sécurité (\lstinline{Policy}) qui est composé d'un ensemble de port/protocol nécessaire au fonctionnement d'une application. Par exemple, un service qui autoriserait les flux web (HTTP/HTTPS) va autoriser les ports TCP 80 et 443. Pour cela, il aura donc deux \lstinline{PortRange} liés.
Il fournit également la méthode 'match?' qui va retourner 'true' si l'ensemble port/protocol en paramètre est inclus dans les \lstinline{PortRange} liés.
\section{ServiceGroup}
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}
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}).
\section{RoutingTable}
La table de routage est un élément des équipement réseau et est composé de routes.
Elle fournit la méthode 'crossed?' (\nameref{sec:methodes:crossed}) qui permet de savoir si un équipement (\lstinline{Device}) est traversé par un flux définit par un réseau source et de destination.
\section{Policy}
Une policy représente un règle de sécurité dans un équipement réseau. Elle décrit comme ce dernier doit se comporter lorsqu'il est traversé par des flux réseaux. En fonction de la source et de la destination du paquet (représenté sous forme d'adresses (section \ref{sec:classe:address}-\nameref{sec:classe:address}) ainsi que du protocol et de son numéro de port utilisé (représenté par le service (section \ref{sec:classe:service}-\nameref{sec:classe:service})), la règle va définir si la communication est autorisée où si elle doit être bloquée.
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.
\section{Device}