41 lines
1.5 KiB
TeX
41 lines
1.5 KiB
TeX
\section{Méthodes}
|
|
|
|
\subsection{route}
|
|
|
|
La méthode "route" retourne la route (\lstinline{Route}), utilisée par l'équipement (\lstinline{Device}) pour atteindre le réseau spécifié.
|
|
|
|
\begin{lstlisting}[language=Ruby]
|
|
# Params:
|
|
# * network: an IPv4 network to test
|
|
def route(network)
|
|
ip_net = IPAddr.new network
|
|
ip = ip_net.to_i
|
|
|
|
candidate_routes = routes.where(:start_ip.lte => ip, :end_ip.gte => ip)
|
|
|
|
choosed_route(candidate_routes)
|
|
end
|
|
\end{lstlisting}
|
|
|
|
\subsection{crossed?}
|
|
\label{sec:methodes:crossed}
|
|
|
|
La méthode "crossed?" est un élément essentiel pour l'analyse des règles de sécurité (\lstinline{Policy}). Elle permet de déterminer sur un équipement (\lstinline{Device}) est traversé par un flux définit par deux réseaux. Pour cela, il faut utiliser la méthode "route" de la table de routage (\lstinline{RoutingTable}) de l'équipement en question et comparer l'interface de sortie des deux routes (Route) retourné. Si elles sont différentes, cela signifique que le flux traverse ce firewall.
|
|
|
|
\begin{lstlisting}[language=Ruby]
|
|
# Params:
|
|
# * network1: the *source* network
|
|
# * network2: the *destination* network
|
|
def crossed?(network1, network2)
|
|
return false unless routing_table
|
|
route1 = routing_table.route(network1)
|
|
route2 = routing_table.route(network2)
|
|
|
|
return false unless route1 && route2
|
|
route1.interface != route2.interface
|
|
end
|
|
\end{lstlisting}
|
|
|
|
\subsection{matched\_policies}
|
|
\label{sec:methodes:matched_policies}
|