\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. mai 25 20:00:41 CEST 2017}
\lfoot{\Large \textit{Uubu.fr}}
\hypersetup{pdfinfo={
Title={jail.conf},
Author={Sylvain Girod},
Creator={Bash script from uubu.fr's format version 1},
Producer={Bash script and PDFLaTeX},
Subject={Configuration pour le serveur fail2ban},
CreationDate={D:20170525200041},
ModDate={D:20170525200041},
Keywords={security;IDS;Linux;firewall}
}}
\begin{document}
 
\begin{center}
{\Huge jail.conf, fail2ban.conf }
\end{center}
\vspace{1cm}
 
\begin{flushleft}
 
{\large Configuration pour le serveur fail2ban}
 
\vspace{10mm}
 
\hspace{1mm}  fail2ban a 4 types de fichier de configuration:
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{1mm} fail2ban.conf]{Configuration globale de fail2ban}
\item[\hspace{1mm} filter.d/*.conf]{Filtres spécifiant comment détecter les erreurs d'authentification}
\item[\hspace{1mm} action.d/*.conf]{Actions définissant les commandes pour bannir et débannir les adresses IP}
\item[\hspace{1mm} jail.conf]{Les jails définissent les combinaisons de filtre avec les actions}
\end{description}
 
\vspace{1cm}{\huge Format des fichiers de configuration }
 
\
 
\hspace{1mm} Les fichiers .conf sont distribués par Fail2Ban. Il est recommandé que ces fichiers restent inchangés pour simplifier les mises à jours. Si nécessaire, les personnalisations devraient être fournies dans des fichiers .local. Par exemple, pour activer le jail [ssh-iptables-ipset] spécifié dans jail.conf, créer un fichier jail.local contenant:
 
{\ttfamily
jail.local\\ \hspace{2mm}\texttt{[}ssh-iptables-ipset\texttt{]}\\ \hspace{2mm}\\ \hspace{2mm}enabled = true\\
}
\vspace{8mm}
 
\begin{description} \normalsize
\item[\hspace{1mm} tail.d et fail2ban.d]{En plus des fichier .local, pour jail.conf et fail2ban.conf, il y a un répertoire correspondant contenant des fichier .conf additionnels. L'ordre de configuration des jail est:}
\item[\hspace{1mm} ]{[ENDSECTION]}
\item[\hspace{1mm} ]{[SECTION] name="-" table="listes" imbrication="1"}
\item[\hspace{1mm} jail.conf]{jaid.d/*.conf}
\item[\hspace{1mm} jail.local]{jail.d/*.local}
\end{description}
 
\hspace{1mm} Les fichiers de configuration ont des sections et des paire nom = valeur. Les fichiers de configuration peuvent inclure d'autres fichiers de configuration, qui sont souvent utilisé dans les filtres et actions, en utilisant les directives before et after. En utilisant les mécanismes d'interpolation de chaîne Python, d'autres définitions sont permise et peuvent ensuite être utilisées dans d'autres définitions sous la forme \%(name)s:
 
{\ttfamily
baduseragents = IE|wget\\ failregex = \%(known/failregex)s\\
}
\vspace{8mm}
 
\hspace{1mm} Additionnellement à l'interpolation \$(known/parameter)s, qui ne fonctionne pas pour les paramètres init de filtre et action, un tag d'interpolation <known/parameter> peut être utilisé. Cela permet d'étendre un paramètre un filtre ou action directement dans le jail sans créer de filtre séparément.
 
{\ttfamily
\# filter.d/test.conf:\\ \texttt{[}Init\texttt{]}\\ test.method = GET\\ baduseragents = IE|wget\\ \texttt{[}Definition\texttt{]}\\ failregex = \textasciicircum \%(\_\_prefix\_line)\textbackslash{}s+"<test.method>"\textbackslash{}s+test\textbackslash{}s+regexp\textbackslash{}s+-\textbackslash{}s+useragent=(?:<baduseragents>)\\ \# jail.local:\\ \texttt{[}test\texttt{]}\\ \# use filter "test", overwrite method to "POST" and extend known bad agents with "badagent":\\ filter = test\texttt{[}test.method=POST, baduseragents="badagent|<known/baduseragents>"\texttt{]}\\
}
\vspace{8mm}
 
\vspace{1cm}{\huge fail2ban.conf }
 
\
 
\hspace{1mm}  Ces fichier ont une section, [Definition]. Les éléments sont:
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{1mm} loglevel]{Niveau de verbosité des logs de sortie: CRITICAL, ERROR, WARNING, NOTICE, INFO, DEBUG. Défaut: ERROR}
\item[\hspace{1mm} logtarget]{Cible des logs: filename, SYSLOG, STDERR ou STDOUT. Défaut: STDERR}
\item[\hspace{1mm} socket]{Fichier socket. Défaut: /var/run/fail2ban/fail2ban.sock. utilisé pour la communication avec les serveur fail2ban}
\item[\hspace{1mm} pidfile]{Fichier pid. Défaut: /var/run/fail2ban/fail2ban.pid}
\item[\hspace{1mm} dbfile]{nom de la base de données. Défaut: /var/lib/fail2ban/fail2bn.sqlite3. Contient les données persistante.}
\item[\hspace{1mm} dbpurgeage]{age de purge de la base, en secondes. Défaut: 86400}
\end{description}
 
\vspace{1cm}{\huge jail.conf }
 
\
 
\hspace{1mm}  Les options suivantes sont applicables dans les jail. Elles apparaissent dans une section spécifiant le nom du jail ou dans la section [DEFAULT]
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{1mm} filter]{Nom du filtre - nom d'un fichier dans /etc/fail2ban/filter.d/, sans l'extension}
\item[\hspace{1mm} logpath]{Nom des fichiers de log à surveiller, séparés par des newline.}
\item[\hspace{1mm} logencoding]{Encodage des fichiers de logs. Défaut: auto (utilise la locale système)}
\item[\hspace{1mm} banaction]{Action pour le bannissement (défaut: iptables-multiport).}
\item[\hspace{1mm} banaction\_allports]{Idem, mais pour certains jails "allports" signifie "pam-generic" ou "recidive". Défaut: iptables-allports}
\item[\hspace{1mm} action]{Actions dans /etc/fail2ban/action.d, sans l'extension}
\item[\hspace{1mm} ignoreip]{Liste des IP à ne pas bannir. Peut inclure un masque cidr}
\item[\hspace{1mm} ignorecommand]{La commande qui est exécutée pour déterminer si l'IP candidate pour le bannissement ne devrait pas être bannie}
\item[\hspace{1mm} bantime]{Durée du ban}
\item[\hspace{1mm} findtime]{Interval de temps, en secondes, avant l'heure courante où les erreurs comptent comme un ban}
\item[\hspace{1mm} maxretry]{Nombre d'erreur qui se produisent dans findtime pour bannir une IP}
\item[\hspace{1mm} backend]{Backend à utiliser pour détecter les changements dans le logpath. Défaut: auto, qui tente, dans l'ordre, pyinotify, gamin, systemd, polling.}
\item[\hspace{1mm} usedns]{Utilise DNS pour résoudre les noms d'hôte qui apparaîssent dans les logs.}
\item[\hspace{1mm} failregex]{Expression régulière Python à ajouter aux failregex du filtre.}
\item[\hspace{1mm} ignoreregex]{expression régulière, si la ligne de log match, à ne pas considérer.}
\end{description}
 
\vspace{1cm}{\huge action.d/*.conf }
 
\
 
\hspace{1mm}  Les fichiers action spécifie quelles commande sont exécutées pour bannir et débannir une adresse IP. Les fichiers action ont 2 section, Definition et Init. La section Init définis des paramètres qui peuvent être écrasés pour un jail particulier. Les commandes suivantes peuvent être présents dans la section Definition
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{1mm} actionstart]{Commande à exécuter quand le jail démarre}
\item[\hspace{1mm} actionstop]{Commande à exécuter quand le jail s'arrête}
\item[\hspace{1mm} actioncheck]{Commande à exécuter avant tout autre action}
\item[\hspace{1mm} actionban]{Commande à exécuter pour bannir l'adresse IP}
\item[\hspace{1mm} actionunban]{Commande à exécuter pour débannir l'adresse IP}
\end{description}
 
\hspace{1mm}  La section Init permet de définir des actions spécifiques à l'action. Les éléments spéciaux suivants peuvent être définis dans la section Init:
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{1mm} timeout]{Délai max en seconde qu'une commande peut mettre à s'exécuter, avant d'être terminée}
\end{description}
 
\hspace{1mm}  Les commandes spécifiées dans la section Definition sont exécutées via un shell système donc les redirections shell et contrôle de process sont autorisés. Les commandes doivent retourner 0, sinon une erreur est loggée. De plus, si actioncheck qui avec un status non-0, il est considéré que le status du firewall a changé et fail2ban doit se réinitialiser. Les tags sont entre <>. Tous les éléments de la section Init sont des tags qui sont remplacés dans les commandes action. Plus d'une commande est autorisée. Chaque commande doit être sur une ligne séparée et indenté avec des espaces blanc.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Tags d'action }
 
\
 
\hspace{1mm}  Les tags suivants sont substitués dans l'actionban, actionunban, et actioncheck.
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{1mm} ip]{IPv6 à bannir}
\item[\hspace{1mm} failures]{Nombre de fois que l'erreur se produit dans le fichier de log}
\item[\hspace{1mm} ipfailures]{idem, mais le total de toutes les erreurs pour cette IP dans tous les jails, depuis la base persistante}
\item[\hspace{1mm} ipjailfailures]{idem, mais le total basé sur les erreus de lIP pour le jail courant}
\item[\hspace{1mm} time]{temp (epoch) du ban}
\item[\hspace{1mm} matches]{Chaîne concaténées des lignes du fichier de log des matchs qui génèrent le ban. De nombreux caractères interprétés par le shell sont échappés pour éviter les injection}
\item[\hspace{1mm} ipmatches]{idem, mais inclus toutes les lignes pour l'IP qui sont contenus avec la base persistante}
\item[\hspace{1mm} ipjailmatches]{idem, mais les matches sont limités pour l'ip et pour le jail courant}
\end{description}
 
\vspace{1cm}{\huge Fichiers d'action Python }
 
\
 
\hspace{1mm}  Les actions basées sur python peuvent également être utilisés, où le nom de fichier doit être [actionname].pv. Le fichier python doit contenir une variable Action, qui pointe vers une classe python. Cette classe doit implémenter une interface minimum tel que décris dans fail2ban.server.action.ActionBase.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge filter.d/*.conf }
 
\
 
\hspace{1mm}  Ces fichiers sont utilisés pour identifier les tentatives d'authentification échouées dans les fichiers de log et pour extraire l'adresse IP de l'hôte. La principale section est la section Definition. Il y a 2 définitions de filtre définie dans cette section:
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{1mm} failregex]{Expression régulière pour matcher les tentatives échouées.}
\item[\hspace{1mm} ignoreregex]{Expression régulière pour identifier les entrées de log qui doivent être ignorées.}
\end{description}
 
\hspace{1mm}  Similairement aux actions, les filtres on une section Init qui peut écraser jail.conf/jail.local. Les éléments qui peuvent s'y trouver sont:
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{1mm} maxlines]{Nombre maximum de lignes à mettre en tampon pour matcher les expressions régulières multilignes}
\item[\hspace{1mm} datepattern]{Spécifie une motif/regex de date personnalisé pour le détecteur de date}
\item[\hspace{1mm} journalmatch]{Spécifie le journal systemd utilisé pour filtrer les entrées du journal.}
\end{description}
 
\hspace{1mm}  Les filtres peuvent également avoire une section INCLUDES, utilisée pour lire d'autres configurations:
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{1mm} before]{Indique que ce fichier est lu avant la section Definition}
\item[\hspace{1mm} after]{Indisque que ce fichier est lu après la section Definition}
\end{description}
\end{flushleft}
\end{document}
