lemonldap-ng/po-doc/fr/pages/documentation/current/security.html
2017-02-07 16:35:26 +00:00

464 lines
23 KiB
HTML

<!DOCTYPE html>
<html lang="fr" dir="ltr">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta charset="utf-8" />
<title>documentation:2.0:security</title><!-- //if:usedebianlibs
<link rel="stylesheet" type="text/css" href="/javascript/bootstrap/css/bootstrap.min.css" />
//elsif:useexternallibs
<link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css"></script>
//elsif:cssminified
<link rel="stylesheet" type="text/css" href="/static/bwr/bootstrap/dist/css/bootstrap.min.css" />
//else --><!-- //endif -->
<meta name="generator" content="DokuWiki"/>
<meta name="robots" content="index,follow"/>
<meta name="keywords" content="documentation,2.0,security"/>
<link rel="search" type="application/opensearchdescription+xml" href="lib/exe/opensearch.html" title="LemonLDAP::NG"/>
<link rel="start" href="security.html"/>
<link rel="contents" href="security.html" title="Sitemap"/>
<link rel="stylesheet" type="text/css" href="lib/exe/css.php.t.bootstrap3.css"/>
<link rel="stylesheet" type="text/css" href="/static/bwr/bootstrap/dist/css/bootstrap.css" />
<script type="text/javascript">/*<![CDATA[*/var NS='documentation:2.0';var JSINFO = {"id":"documentation:2.0:security","namespace":"documentation:2.0"};
/*!]]>*/</script>
<script type="text/javascript" charset="utf-8" src="lib/exe/js.php.t.bootstrap3.js"></script><!-- //if:usedebianlibs
<script type="text/javascript" src="/javascript/jquery/jquery.min.js"></script>
//elsif:useexternallibs
<script type="text/javascript" src="http://code.jquery.com/jquery-2.2.0.min.js"></script>
//elsif:jsminified
<script type="text/javascript" src="/static/bwr/jquery/dist/jquery.min.js"></script>
//else -->
<script type="text/javascript" src="/static/bwr/jquery/dist/jquery.js"></script><!-- //endif --><!-- //if:usedebianlibs
<script type="text/javascript" src="/javascript/jquery-ui/jquery-ui.min.js"></script>
//elsif:useexternallibs
<script type="text/javascript" src="http://code.jquery.com/ui/1.10.4/jquery-ui.min.js"></script>
//elsif:jsminified
<script type="text/javascript" src="/lib/scripts/jquery-ui.min.js"></script>
//else -->
<script type="text/javascript" src="/lib/scripts/jquery-ui.js"></script><!-- //endif -->
</head>
<body>
<div class="dokuwiki export container"><!-- TOC START -->
<div id="dw__toc">
<h3 class="toggle">Table of Contents</h3>
<div>
<ul class="toc">
<li class="level1"><div class="li"><a href="#secure_configuration_access">Securiser l'accès à la configuration</a></div></li>
<li class="level1"><div class="li"><a href="#protect_the_manager">Protéger le manager</a></div>
<ul class="toc">
<li class="level2"><div class="li"><a href="#protect_the_manager_by_the_web_server">Protect the Manager by the web server</a></div></li>
<li class="level2"><div class="li"><a href="#protect_the_manager_by_llng">Protéger le manager par LL::NG</a></div></li>
</ul>
</li>
<li class="level1"><div class="li"><a href="#portal">Portail</a></div>
<ul class="toc">
<li class="level2"><div class="li"><a href="#split_portal_when_using_soaprest">Split portal when using SOAP/REST</a></div></li>
</ul>
</li>
<li class="level1"><div class="li"><a href="#write_good_rules">Écrire de bonnes règles</a></div>
<ul class="toc">
<li class="level2"><div class="li"><a href="#order_your_rules">Ordonner les règles</a></div></li>
<li class="level2"><div class="li"><a href="#be_careful_with_url_parameters">Attention aux paramètres des URL</a></div></li>
<li class="level2"><div class="li"><a href="#encoded_characters">Caractères encodés</a></div></li>
</ul>
</li>
<li class="level1"><div class="li"><a href="#secure_reverse-proxies">Securiser les proxies inverses</a></div></li>
<li class="level1"><div class="li"><a href="#configure_security_settings">Configurer les paramètres de sécurité</a></div></li>
<li class="level1"><div class="li"><a href="#fail2ban">Fail2ban</a></div></li>
<li class="level1"><div class="li"><a href="#sessions_identifier">Sessions identifier</a></div></li>
</ul>
</div>
</div><!-- TOC END -->
<h1 class="sectionedit1" id="security_recommendation">Recommendation de sécurité</h1>
<div class="level1">
</div><!-- EDIT1 SECTION "Security recommendation" [1-39] -->
<h2 class="sectionedit2" id="secure_configuration_access">Securiser l'accès à la configuration</h2>
<div class="level2">
<p>
La configuration peut être stockée sous plusieurs formats (<a href="sqlconfbackend.html" class="wikilink1" title="documentation:2.0:sqlconfbackend">SQL</a>, <a href="fileconfbackend.html" class="wikilink1" title="documentation:2.0:fileconfbackend">File</a>, <a href="ldapconfbackend.html" class="wikilink1" title="documentation:2.0:ldapconfbackend">LDAP</a>) mais doit être partégée via le réseau si on utilise plus d'un serveur. Si certains des serveurs ne se trouvent pas sur le même réseau (securisé) que la même base de données, il est recommandé d'utiliser <a href="soapconfbackend.html" class="wikilink1" title="documentation:2.0:soapconfbackend">l'accès SOAP</a> pour ces serveurs.
</p>
<div class="notetip">On peut utiliser différent typed d'accès : <a href="sqlconfbackend.html" class="wikilink1" title="documentation:2.0:sqlconfbackend">SQL</a>, <a href="fileconfbackend.html" class="wikilink1" title="documentation:2.0:fileconfbackend">File</a> or <a href="ldapconfbackend.html" class="wikilink1" title="documentation:2.0:ldapconfbackend">LDAP</a> pour les serveurs se trouvant sur le réseau sécurisé et <a href="soapconfbackend.html" class="wikilink1" title="documentation:2.0:soapconfbackend">SOAP</a> pour les autres.
</div>
<p>
Next, you have to configure the SOAP access as described <a href="soapconfbackend.html#next_configure_soap_for_your_remote_servers" class="wikilink1" title="documentation:2.0:soapconfbackend">here</a> since SOAP access is denied by default.
</p>
</div><!-- EDIT2 SECTION "Secure configuration access" [40-809] -->
<h2 class="sectionedit3" id="protect_the_manager">Protéger le manager</h2>
<div class="level2">
<p>
Par défaut, l'accès au manager est restreint à l'utilisateur "dwho" (le backend par défaut est Demo). Pour protéger le manager, il faut choisir l'une où les deux solutions :
</p>
<ul>
<li class="level1"><div class="li"> protéger le manager par configuration d'Apache</div>
</li>
<li class="level1"><div class="li"> protéger le manager par <abbr title="LemonLDAP::NG">LL::NG</abbr></div>
</li>
</ul>
</div><!-- EDIT3 SECTION "Protect the Manager" [810-1069] -->
<h3 class="sectionedit4" id="protect_the_manager_by_the_web_server">Protect the Manager by the web server</h3>
<div class="level3">
<p>
You can use any of the mechanisms proposed by Apache: SSL, Auth-Basic, Kerberos,… Example
</p>
<pre class="code apache">&lt;<span class="kw3">VirtualHost</span> *:<span class="nu0">443</span>&gt;
<span class="kw1">ServerName</span> manager.example.com
<span class="co1"># SSL parameters</span>
...
<span class="co1"># DocumentRoot</span>
<span class="kw1">DocumentRoot</span> /var/lib/lemonldap-ng/manager/
&lt;<span class="kw3">Location</span> /&gt;
<span class="kw1">AuthType</span> Basic
<span class="kw1">AuthName</span> <span class="st0">"Lemonldap::NG manager"</span>
<span class="kw1">AuthUserFile</span> /usr/local/apache/passwd/passwords
<span class="kw1">Require</span> <span class="kw1">user</span> rbowen
<span class="kw1">Order</span> <span class="kw1">allow</span>,<span class="kw1">deny</span>
<span class="kw1">Deny</span> from <span class="kw2">all</span>
<span class="kw1">Allow</span> from 192.168.142.0/<span class="nu0">24</span>
<span class="kw1">Options</span> +ExecCGI
&lt;/<span class="kw3">Location</span>&gt;
&lt;/<span class="kw3">VirtualHost</span>&gt;</pre>
</div><!-- EDIT4 SECTION "Protect the Manager by the web server" [1070-1688] -->
<h3 class="sectionedit5" id="protect_the_manager_by_llng">Protéger le manager par LL::NG</h3>
<div class="level3">
<p>
Pour protéger le manager par <abbr title="LemonLDAP::NG">LL::NG</abbr>, il suffit de mettre ceci dans le fichier de configuration <code>lemonldap-ng.ini</code> (section [manager]) :
</p>
<pre class="code file ini"><span class="re0"><span class="br0">[</span>manager<span class="br0">]</span></span>
<span class="re1">protection</span> <span class="sy0">=</span><span class="re2"> manager</span></pre>
<div class="noteimportant">Avant, il faut créer l'hôte virtuel <code>manager.your.domain</code> dans le manager et mettre une <a href="writingrulesand_headers.html#rules" class="wikilink1" title="documentation:2.0:writingrulesand_headers">règle</a>, sinon l'accès au manager sera interdit.
</div>
</div><!-- EDIT5 SECTION "Protect the Manager by LL::NG" [1689-2105] -->
<h2 class="sectionedit6" id="portal">Portail</h2>
<div class="level2">
<p>
LLNG portal now embeds the following features:
</p>
<ul>
<li class="level1"><div class="li"> <a href="https://en.wikipedia.org/wiki/Cross-site_request_forgery" class="urlextern" title="https://en.wikipedia.org/wiki/Cross-site_request_forgery" rel="nofollow">CSRF</a> protection <em>(Cross-Site Request Forgery)</em>: a token is build for each form. To disable it, set requireToken to 0 <em>(portal security parameters in the manager)</em>. Token timeout can be defined via manager (default to 120 seconds),</div>
</li>
<li class="level1"><div class="li"> <a href="https://en.wikipedia.org/wiki/Content_Security_Policy" class="urlextern" title="https://en.wikipedia.org/wiki/Content_Security_Policy" rel="nofollow">Content-Security-Policy</a> header: portal build dynamically this header. You can modify default values in the manager <em>(Général parameters » Advanced parameters » Security » Content-Security-Policy)</em>.</div>
</li>
</ul>
</div><!-- EDIT6 SECTION "Portal" [2106-2740] -->
<h3 class="sectionedit7" id="split_portal_when_using_soaprest">Split portal when using SOAP/REST</h3>
<div class="level3">
<p>
If you use <a href="soapsessionbackend.html" class="wikilink1" title="documentation:2.0:soapsessionbackend">SOAP</a> or <a href="restsessionbackend.html" class="wikilink1" title="documentation:2.0:restsessionbackend">REST</a> session backend, dedicate a portal especially for these internal requests.
</p>
</div><!-- EDIT7 SECTION "Split portal when using SOAP/REST" [2741-2931] -->
<h2 class="sectionedit8" id="write_good_rules">Écrire de bonnes règles</h2>
<div class="level2">
</div><!-- EDIT8 SECTION "Write good rules" [2932-2961] -->
<h3 class="sectionedit9" id="order_your_rules">Ordonner les règles</h3>
<div class="level3">
<p>
Les <a href="writingrulesand_headers.html#rules" class="wikilink1" title="documentation:2.0:writingrulesand_headers">règles</a> sont appliquées dans l'ordre alphabétique (commentaires et expressions régulières). La première règle qui correspond est appliquée.
</p>
<div class="noteimportant">La règle “default” n'est appliquée que si aucune autre règle ne correspond
</div>
<p>
Le manager permet de définir des commentaires de règles, ce qui permet de les ordonner :
</p>
<p>
<a href="documentation/manager-rule.png_documentation_2.0_security.html" class="media" title="documentation:manager-rule.png"><img src="documentation/manager-rule.png" class="mediacenter" alt="" /></a>
</p>
<p>
Par exemple, si ces règles sont utilisées sans commentaires :
</p>
<div class="table sectionedit10"><table class="inline table table-bordered table-striped">
<thead>
<tr class="row0 roweven">
<th class="col0 centeralign"> Expression régulière </th><th class="col1 centeralign"> Règle </th><th class="col2 leftalign"> Commentaire </th>
</tr>
</thead>
<tr class="row1 rowodd">
<td class="col0"> ^/pub/admin/ </td><td class="col1"> $uid eq “root” </td><td class="col2"> </td>
</tr>
<tr class="row2 roweven">
<td class="col0"> ^/pub/ </td><td class="col1"> accept </td><td class="col2"> </td>
</tr>
</table></div><!-- EDIT10 TABLE [3378-3488] -->
<p>
Alors la seconde règle est appliquée en premier, donc tous les utilisateurs authentifiés pourront accéder au répertoire <code>/pub/admin</code>.
</p>
<p>
Utiliser des commentaires pour corriger ça :
</p>
<div class="table sectionedit11"><table class="inline table table-bordered table-striped">
<thead>
<tr class="row0 roweven">
<th class="col0 centeralign"> Expression régulière </th><th class="col1 centeralign"> Règle </th><th class="col2 leftalign"> Commentaire </th>
</tr>
</thead>
<tr class="row1 rowodd">
<td class="col0"> ^/pub/admin/ </td><td class="col1"> $uid eq “root” </td><td class="col2"> 1_admin </td>
</tr>
<tr class="row2 roweven">
<td class="col0"> ^/pub/ </td><td class="col1"> accept </td><td class="col2"> 2_pub </td>
</tr>
</table></div><!-- EDIT11 TABLE [3633-3757] -->
<div class="notetip"><ul>
<li class="level1"><div class="li"> Recharger le manager pour voir l'ordre dans lequel elles seront appliquées</div>
</li>
<li class="level1"><div class="li"> Utiliser les commentaires pour ordonner les règles</div>
</li>
</ul>
</div>
</div><!-- EDIT9 SECTION "Order your rules" [2962-3878] -->
<h3 class="sectionedit12" id="be_careful_with_url_parameters">Attention aux paramètres des URL</h3>
<div class="level3">
<p>
On peut écrire des <a href="writingrulesand_headers.html#rules" class="wikilink1" title="documentation:2.0:writingrulesand_headers">règles</a> qui examine n'importe quel composant de l'<abbr title="Uniform Resource Locator">URL</abbr> à protéger y compris les paramètres GET, mais il faut faire attention.
</p>
<p>
Par exemple avec cette règle sur le paramètre <code>access</code> :
</p>
<div class="table sectionedit13"><table class="inline table table-bordered table-striped">
<thead>
<tr class="row0 roweven">
<th class="col0 centeralign"> Expression régulière </th><th class="col1 centeralign"> Règle </th><th class="col2 leftalign"> Commentaire </th>
</tr>
</thead>
<tr class="row1 rowodd">
<td class="col0"> ^/index.php\?.*access=admin </td><td class="col1"> $groups =~ /\badmin\b/ </td><td class="col2"> </td>
</tr>
<tr class="row2 roweven">
<td class="col0"> default </td><td class="col1"> accept </td><td class="col2"> </td>
</tr>
</table></div><!-- EDIT13 TABLE [4115-4249] -->
<p>
Alors l'utilisateur qui tente d'accéder à l'une des URL suivantes <em class="u">sera autorisé</em> !
</p>
<ul>
<li class="level1"><div class="li"> /index.php?access=admin&amp;access=other</div>
</li>
<li class="level1"><div class="li"> /index.php?Access=admin</div>
</li>
</ul>
<p>
On peut utiliser les règles suivantes à la place :
</p>
<div class="table sectionedit14"><table class="inline table table-bordered table-striped">
<thead>
<tr class="row0 roweven">
<th class="col0 centeralign"> Expression régulière </th><th class="col1 centeralign"> Règle </th><th class="col2 leftalign"> Commentaire </th>
</tr>
</thead>
<tr class="row1 rowodd">
<td class="col0"> ^/(?i)index.php\?.*access.*access </td><td class="col1"> deny </td><td class="col2"> 0_bad </td>
</tr>
<tr class="row2 roweven">
<td class="col0"> ^/(?i)index.php\?.*access=admin </td><td class="col1"> $groups =~ /\badmin\b/ </td><td class="col2"> 1_admin </td>
</tr>
<tr class="row3 rowodd">
<td class="col0"> default </td><td class="col1"> accept </td><td class="col2"> </td>
</tr>
</table></div><!-- EDIT14 TABLE [4447-4650] -->
<div class="notetip"><strong>(?i)</strong> signifie insensible à la casse.
</div><div class="notewarning">Rappel : les règles poratnt sur des paramètres GET doivent être testées.
</div>
</div><!-- EDIT12 SECTION "Be careful with URL parameters" [3879-4787] -->
<h3 class="sectionedit15" id="encoded_characters">Caractères encodés</h3>
<div class="level3">
<p>
Certains caractères sont encodés dans les URLs par le navigateur (tels les espaces,…). Pour éviter les problèmes, <abbr title="LemonLDAP::NG">LL::NG</abbr> les décode en utilisant <a href="http://search.cpan.org/perldoc?Apache2::URI#unescape_url" class="urlextern" title="http://search.cpan.org/perldoc?Apache2::URI#unescape_url" rel="nofollow">http://search.cpan.org/perldoc?Apache2::URI#unescape_url</a>. Il faut donc écrire les règles en utilisant les caractères normaux.
</p>
</div><!-- EDIT15 SECTION "Encoded characters" [4788-5041] -->
<h2 class="sectionedit16" id="secure_reverse-proxies">Securiser les proxies inverses</h2>
<div class="level2">
<p>
<abbr title="LemonLDAP::NG">LL::NG</abbr> peut protéger toute application hébergée par Apache y compris le mécanisme de proxy inverse d'Apache. Exemple :
</p>
<pre class="code apache">PerlOptions +GlobalRequest
PerlRequire /var/lib/lemonldap-ng/handler/MyHandler.pm
&lt;<span class="kw3">VirtualHost</span> *:<span class="nu0">443</span>&gt;
<span class="kw1">SSLEngine</span> <span class="kw2">On</span>
... autres paramètres SSL ...
PerlInitHandler My::Handler
<span class="kw1">ServerName</span> appl1.example.com
<span class="kw1">ProxyPass</span> / http://hiddenappl1.example.com/
<span class="kw1">ProxyPassReverse</span> / http://hiddenappl1.example.com/
<span class="kw1">ProxyPassReverseCookieDomain</span> / http://hiddenappl1.example.com/
&lt;/<span class="kw3">VirtualHost</span>&gt;</pre>
<p>
Voir les documentation de <a href="http://httpd.apache.org/docs/2.2/mod/mod_proxy.html" class="urlextern" title="http://httpd.apache.org/docs/2.2/mod/mod_proxy.html" rel="nofollow">mod_proxy</a> et <a href="http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html" class="urlextern" title="http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html" rel="nofollow">mod_rewrite</a> pour plus d'information sur la configuration du proxy inverse d'Apache.
</p>
<p>
Une telle configuration peut engendrer des problèmes de sécurité :
</p>
<ul>
<li class="level1"><div class="li"> Si un utilisateur peut accéder directement à l'application cachée, peut contourner la protection de <abbr title="LemonLDAP::NG">LL::NG</abbr></div>
</li>
<li class="level1"><div class="li"> if many hidden applications are on the same private network, if one is corrupted (by SQL injection, or another attack), the hacker will be able to access to other applications without using reverse-proxies so it can bypass <abbr title="LemonLDAP::NG">LL::NG</abbr> protection</div>
</li>
</ul>
<p>
Il est donc recommandé de sécurisé le canal entre le proxy inverse et l'application pour être sûr que seules les requêtes issues des proxies inverses protégés par <abbr title="LemonLDAP::NG">LL::NG</abbr> sont autorisées. On peut utiliser un ou plusieurs solution :
</p>
<ul>
<li class="level1"><div class="li"> pare-feux (attention toutefois si plus d'une application se trouve derrière le pare-feu)</div>
</li>
<li class="level1"><div class="li"> restrictions basées sur le serveur (tel le mécanisme “allow/deny” d'Apache)</div>
</li>
<li class="level1"><div class="li"> SSL client certificate for the reverse-proxy (see SSLProxy* parameters in <a href="http://httpd.apache.org/docs/2.2/mod/mod_ssl.html" class="urlextern" title="http://httpd.apache.org/docs/2.2/mod/mod_ssl.html" rel="nofollow">mod_ssl documentation</a>)</div>
</li>
</ul>
</div><!-- EDIT16 SECTION "Secure reverse-proxies" [5042-6710] -->
<h2 class="sectionedit17" id="configure_security_settings">Configurer les paramètres de sécurité</h2>
<div class="level2">
<p>
Aller dans le manager, <code>Paramètres généraux</code> » <code>Paramètres avancés</code> » <code>Sécurité</code> :
</p>
<ul>
<li class="level1"><div class="li"> <strong>Contrôle du nom d'utilisateur</strong> : expression régulière utilisée pour vérifier la syntaxe du nom d'utilisateur.</div>
</li>
<li class="level1"><div class="li"> <strong>Forcer l'authentification</strong> : mettre à 'Activé' pour forcer l'authentification lorsque l'utilisateur accède au portail même s'il dispose d'une session valide</div>
</li>
<li class="level1"><div class="li"> <strong>Force authentication interval</strong>: time interval (in seconds) when a authentication renewal cannot be forced, used to prevent to loose the current authentication during the main process. If you experience slow network performances, you can increase this value.</div>
</li>
<li class="level1"><div class="li"> <strong>Clef de chiffrement</strong> : clef utilisée pour chiffrer certaines données, ne doit être connue d'aucune autre application</div>
</li>
<li class="level1"><div class="li"> <strong>Domaines approuvés</strong> : domaines vers lesquels l'utilisateur peut être redirigé après authentification sur le portail. Mettre '*' pour tout accepter.</div>
</li>
<li class="level1"><div class="li"> <strong>Utiliser la cage sécurisée</strong> : mettre à 'Désctivé' pour désactiver la cage sécurisée (Safe). Le module Safe est utilisé pour évaluer les expressions dans les en-têtes, règles, etc... La désactiver peut engendrer des trous de sécurité.</div>
</li>
<li class="level1"><div class="li"> <strong>Contrôler les attaques <abbr title="Cross Site Scripting">XSS</abbr></strong> : mettre à 'désactivé' pour désactiver la détection des attaques <abbr title="Cross Site Scripting">XSS</abbr>. Le contrôle <abbr title="Cross Site Scripting">XSS</abbr> continuera à être effectué mais avec seulement des avertissements dans les journaux sans empêcher le processus de continuer.</div>
</li>
<li class="level1"><div class="li"> <strong>LWP::UserAgent SSL options</strong>: insert here options to pass to LWP::UserAgent object (used by <abbr title="Security Assertion Markup Language">SAML</abbr> or OpenID-Connect to query partners). Example: <code>verify_hostname ⇒ 0</code>, <code>SSL_verify_mode ⇒ 0</code></div>
</li>
</ul>
</div><!-- EDIT17 SECTION "Configure security settings" [6711-8044] -->
<h2 class="sectionedit18" id="fail2ban">Fail2ban</h2>
<div class="level2">
<p>
pour bloquer les attaques en force brute avec fail2ban
</p>
<p>
Editer /etc/fail2ban/jail.conf
</p>
<pre class="code">[lemonldap-ng]
enabled = true
port = http,https
filter = lemonldap
action = iptables-multiport[name=lemonldap, port="http,https"]
logpath = /var/log/apache*/error*.log
maxretry = 3</pre>
<p>
et editer /etc/fail2ban/filter.d/lemonldap.conf
</p>
<pre class="code"># Fail2Ban configuration file
#
# Author: Adrien Beudin
#
# $Revision: 2 $
#
[Definition]
# Option: failregex
# Notes.: regex to match the password failure messages in the logfile. The
# host must be matched by a group named "host". The tag "&lt;HOST&gt;" can
# be used for standard IP/hostname matching and is only an alias for
# (?:::f{4,6}:)?(?P&lt;host&gt;[\w\-.^_]+)
# Values: TEXT
#
failregex = Lemonldap\:\:NG \: .* was not found in LDAP directory \(&lt;HOST&gt;\)
Lemonldap\:\:NG \: Bad password for .* \(&lt;HOST&gt;\)
# Option: ignoreregex
# Notes.: regex to ignore. Si cette expression régulière correspond, la ligne est ignorée.
# Values: TEXT
#
ignoreregex =</pre>
<p>
Redémarrer fail2ban
</p>
</div><!-- EDIT18 SECTION "Fail2ban" [8045-9098] -->
<h2 class="sectionedit19" id="sessions_identifier">Sessions identifier</h2>
<div class="level2">
<p>
You can change the module used for sessions identifier generation. To do, add <code>generateModule</code> key in the configured session backend options.
</p>
<p>
We recommend the use of <code>Lemonldap::NG::Common::Apache::Session::Generate::SHA256</code>.
</p>
</div><!-- EDIT19 SECTION "Sessions identifier" [9099-] -->
</div>
</body>
</html>