\documentclass{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{textcomp}
\usepackage{geometry}
\geometry{top=15mm, bottom=15mm, left=1cm, right=1cm}
\usepackage[french]{babel}
\usepackage{pslatex}
\usepackage[colorlinks=true,urlcolor=black]{hyperref}
\usepackage{graphicx}
\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\footrulewidth}{0.4pt}
\fancyfoot[L]{Uubu.fr}
\fancyfoot[R]{jeu. avril 6 09:23:17 CEST 2017}
\lfoot{\Large \textit{Uubu.fr}}
\hypersetup{pdfinfo={
Title={firewalld.richlanguage},
Author={Sylvain Girod},
Creator={Bash script from uubu.fr's format version 1},
Producer={Bash script and PDFLaTeX},
Subject={Documentation du langage Rich},
CreationDate={D:20170406092317},
ModDate={D:20170406092317},
Keywords={firewall;sécurité;firewalld}
}}
\begin{document}
 
\begin{center}
{\Huge firewalld.richlanguage }
\end{center}
\vspace{1cm}
 
\begin{flushleft}
 
{\large Documentation du langage Rich}
 
\vspace{10mm}
 
\hspace{1mm}  Avec ce langage il est possible de créer des règles firewall plus complexes de manière simple. Ce langage utilise des mots clé avec des valeurs et est une représentation abstraite des règles iptables.
\vspace{5mm} \\
 
 
\hspace{1mm}  Ce langage étends les éléments de zone courantes (service, port, icmp-block, masquerade, forward-port et source-port) avec des adresses source et de destination, logging, actions et limites pour les logs et les actions.
\vspace{5mm} \\
 
 
\hspace{1mm}  Ce mémo décris ce langage utilisé en ligne de commande et les interfaces D-Bus. Une règle fait partie d'une zone. Une zone peut contenir de nombreuses règles.
\vspace{5mm} \\
 
 
\hspace{1mm} Structure de règle générale
 
{\ttfamily
rule\\ \hspace{2mm}\texttt{[}source\texttt{]}\\ \hspace{2mm}\texttt{[}destination\texttt{]}\\ \hspace{2mm}service|port|protocol|icmp-block|masquerade|forward-port|source-port\\ \hspace{2mm}\texttt{[}log\texttt{]}\\ \hspace{2mm}\texttt{[}audit\texttt{]}\\ \hspace{2mm}\texttt{[}accept|reject|drop|mark\texttt{]}\\
}
\vspace{8mm}
 
\begin{description} \normalsize
\item[\hspace{1mm} rule \texttt{[}family="ipv4|ipv6\texttt{]}]{Si la famille n'est pas fournie, la règle s'applique à IPv4 et IPv6.}
\item[\hspace{1mm} source \texttt{[}not\texttt{]} address="address\texttt{[}/mask\texttt{]}"|mac="mac-address"|ipset="ipset"]{Avec l'adresse source l'origine d'une tentative de connexion peut être limitée à l'adresse source.}
\item[\hspace{1mm} destination \texttt{[}not\texttt{]} address="address\texttt{[}/mask\texttt{]}"]{Une cible peut être limitée avec l'adresse de destination}
\item[\hspace{1mm} service name="service name"]{Ajoute le nom du service à la règle.}
\item[\hspace{1mm} port port="port value" protocol="tcp|udp"]{Le peut être être un numéro de port ou une plage de port. le protocole peut être tcp ou udp}
\item[\hspace{1mm} protocol value="protocol value"]{La valeur du protocole est soit un numéro identifiant ou un nom de protocole}
\item[\hspace{1mm} icmp-block name="icmptype name"]{Un des types icmp supporté par firewalld.}
\item[\hspace{1mm} masquerade]{Active le masquerading dans la règle. Une source et également une destination peuvent être fournis pour limiter le masquerading pour cette zone}
\item[\hspace{1mm} forward-port port="port value" protocol="tcp|udp" to-port="port value" to-addr="address"]{port/paquet forwarding depuis un port local vers un autre port local ou une autre machine ou un autre port sur un autre machine. Il n'est pas possible de spécifier une action ici, forward-port utilise l'action accept en interne}
\item[\hspace{1mm} source-port port="port value" protocol="tcp|udp"]{Le port source peut être un port ou une plage de port.}
\item[\hspace{1mm} log \texttt{[}prefix="prefix text"\texttt{]} \texttt{[}level="log level"\texttt{]} \texttt{[}limit value="rate/duration"\texttt{]}]{Log les tentatives de nouvelles connexions avec le logging kernel, par exemple syslog.}
\item[\hspace{1mm} audit \texttt{[}limit value="rate/duration"\texttt{]}]{Utilise auditd pour le logging}
\item[\hspace{1mm} accept \texttt{[}limit value="rate/duration"\texttt{]}]{}
\item[\hspace{1mm} reject \texttt{[}type="reject type"\texttt{]} \texttt{[}limit value="rate/duration"\texttt{]}]{}
\item[\hspace{1mm} drop \texttt{[}limit value="rate/duration"\texttt{]}]{}
\item[\hspace{1mm} mark set="mark\texttt{[}/mask\texttt{]}" \texttt{[}limit value="rate/duration"\texttt{]}]{Une action peut être accept, reject, drop, ou mark}
\item[\hspace{1mm} limit value="rate/duration"]{Limite des logs, audit et action. Un règle utilisant ce tag match jusqu'à ce que cette règle soit atteinte. La durée est en s, m, h ou d. Maximum: 2/d (2 matchs par jour)}
\item[\hspace{1mm} zone\_log]{}
\item[\hspace{1mm} zone\_deny]{}
\item[\hspace{1mm} zone\_allow]{la chaine zone\_log peut être ajoutée à toutes les zones, qui contient toutes les règles de logging. Les règles reject et drop sont placées dans zone\_deny et les règles accept dans zone\_allow}
\end{description}
 
\vspace{1cm}{\huge Exemples }
 
\
 
\hspace{1mm} Autoriser les nouvelles connexions IPv4 et IPv6 pour le protocole ah \\
\hspace{1mm} \textbf{rule protocol value="ah" accept} \\
\hspace{1mm} autoriser les nouvelles connexions IPv4 et IPv6 pour le service ftp et 1 log par minute avec audit \\
\hspace{1mm} \textbf{rule service name="ftp" log limit value="1/m" audit accept} \\
\hspace{1mm} Autoriser les connexions IPv4 depuis 192.168.0.0/24 pour tftp et un log par minute en utilisant syslog \\
\hspace{1mm} \textbf{rule family="ipv4" source address="192.168.0.0/24" service name="tftp" log prefix="tftp" level="info" limit value="1/m" accept} \\
\hspace{1mm} Les nouvelles connexions de 1:2:3:4:6:: vers radius sont rejetées et loggées à un taux de 3 par minute. Les nouvelles connexions depuis les autres sources sont acceptées \\
\hspace{1mm} \textbf{rule family="ipv6" source address="1:2:3:4:6::" service name="radius" log prefix="dns" level="info" limit value="3/m" reject} \\
\hspace{1mm} \textbf{rule family="ipv6" service name="radius" accept} \\
\hspace{1mm} forward les packets IPv6 reçus de 1:2:3:4:6:: sur le port 4011 avec tcp vers 1::2:3:4:7 sur le port 4012 \\
\hspace{1mm} \textbf{rule family="ipv6" source address="1:2:3:4:6::" forward-port to-addr="1::2:3:4:7" to-port="4012" protocol="tcp" port="4011"} \\
\hspace{1mm} Liste blanche d'adresse source pour autoriser les connexions depuis 192.168.2.2 \\
\hspace{1mm} \textbf{rule family="ipv4" source address="192.168.2.2" accept} \\
\hspace{1mm} Liste noire pour rejeter toutes les connexions depuis 192.168.2.3 \\
\hspace{1mm} \textbf{rule family="ipv4" source address="192.168.2.3" reject type="icmp-admin-prohibited"} \\
\hspace{1mm} liste noire pour supprimer toutes les connexions depuis 192.168.2.4 \\
\hspace{1mm} \textbf{rule family="ipv4" source address="192.168.2.4" drop} \\
\end{flushleft}
\end{document}
