« Apache/Sécurité » : différence entre les versions

Un livre de Wikilivres.
Contenu supprimé Contenu ajouté
DannyS712 (discussion | contributions)
m <source> -> <syntaxhighlight> (phab:T237267)
 
Ligne 9 : Ligne 9 :


=== whitelist avec Require<ref>https://httpd.apache.org/docs/2.4/fr/howto/access.html</ref> ===
=== whitelist avec Require<ref>https://httpd.apache.org/docs/2.4/fr/howto/access.html</ref> ===
<source lang="apache">
<syntaxhighlight lang="apache">
<Directory /usr/share/phpmyadmin/>
<Directory /usr/share/phpmyadmin/>
<IfModule mod_authz_core.c>
<IfModule mod_authz_core.c>
Ligne 19 : Ligne 19 :
</IfModule>
</IfModule>
</Directory>
</Directory>
</syntaxhighlight>
</source>


=== whitelist avec allow (obsolète en Apache 2.4) ===
=== whitelist avec allow (obsolète en Apache 2.4) ===


<source lang="apache">
<syntaxhighlight lang="apache">
<Directory /usr/share/phpmyadmin/>
<Directory /usr/share/phpmyadmin/>
<IfModule mod_access_compat.c>
<IfModule mod_access_compat.c>
Ligne 31 : Ligne 31 :
</IfModule>
</IfModule>
</Directory>
</Directory>
</syntaxhighlight>
</source>


Si les plages d'autorisation chevauchent celles d'interdiction, il est possible de préciser leur précédence (l'ordre des lignes dans le fichier ne change rien) :
Si les plages d'autorisation chevauchent celles d'interdiction, il est possible de préciser leur précédence (l'ordre des lignes dans le fichier ne change rien) :
Ligne 38 : Ligne 38 :


=== blacklist avec Require<ref>https://httpd.apache.org/docs/2.4/fr/upgrading.html</ref> ===
=== blacklist avec Require<ref>https://httpd.apache.org/docs/2.4/fr/upgrading.html</ref> ===
<source lang="apache">
<syntaxhighlight lang="apache">
<Directory /usr/share/phpmyadmin/>
<Directory /usr/share/phpmyadmin/>
<IfModule mod_authz_core.c>
<IfModule mod_authz_core.c>
Ligne 45 : Ligne 45 :
</IfModule>
</IfModule>
</Directory>
</Directory>
</syntaxhighlight>
</source>


=== blacklist avec deny (obsolète en Apache 2.4) ===
=== blacklist avec deny (obsolète en Apache 2.4) ===
<source lang="apache">
<syntaxhighlight lang="apache">
<Directory /usr/share/phpmyadmin/>
<Directory /usr/share/phpmyadmin/>
<IfModule mod_access_compat.c>
<IfModule mod_access_compat.c>
Ligne 56 : Ligne 56 :
</IfModule>
</IfModule>
</Directory>
</Directory>
</syntaxhighlight>
</source>


== Protection par mot de passe ==
== Protection par mot de passe ==
Ligne 90 : Ligne 90 :


Pour que le .htaccess active le .htpasswd, y ajouter les directives :
Pour que le .htaccess active le .htpasswd, y ajouter les directives :
<source lang=apache>
<syntaxhighlight lang=apache>
AuthName "Page protégée"
AuthName "Page protégée"
AuthType Basic
AuthType Basic
AuthUserFile "/home/user/www/.htpasswd"
AuthUserFile "/home/user/www/.htpasswd"
Require valid-user
Require valid-user
</syntaxhighlight>
</source>


{{attention|Cette protection ne tient pas compte des robots qui essaient tous les mots de passe un par un. Il convient donc de l'utiliser en complément d'un bon pare-feu (ex : iptables).}}
{{attention|Cette protection ne tient pas compte des robots qui essaient tous les mots de passe un par un. Il convient donc de l'utiliser en complément d'un bon pare-feu (ex : iptables).}}

Version actuelle du 16 avril 2020 à 08:38

De nombreux robots tentent quotidiennement de pirater des bases de données (par exemple via PhpMyAdmin ou WordPress). Pour s'en prémunir on peut jouer sur plusieurs critères.

Par exemple, pour interdire de visualiser les fichiers d'un répertoire qui n'a pas d'index (ex : .html, .php), ajouter le code : Options -Indexes.

Protection par provenance[modifier | modifier le wikicode]

N'autoriser que deux IP à lire ces répertoires :

whitelist avec Require[1][modifier | modifier le wikicode]

    <Directory /usr/share/phpmyadmin/>
        <IfModule mod_authz_core.c>
            <RequireAny>
                Require all denied
                Require ip 127.0.0.1
                Require ip 127.0.0.2
            </RequireAny>
        </IfModule>
    </Directory>

whitelist avec allow (obsolète en Apache 2.4)[modifier | modifier le wikicode]

    <Directory /usr/share/phpmyadmin/>
        <IfModule mod_access_compat.c>
            deny from all
            allow from 127.0.0.1
            allow from 127.0.0.2
        </IfModule>
    </Directory>

Si les plages d'autorisation chevauchent celles d'interdiction, il est possible de préciser leur précédence (l'ordre des lignes dans le fichier ne change rien) :

order allow, deny
commence par les autorisation puis démarre les interdictions au risque d'interdire ce qui était autorisé.
order deny, allow
le contraire est moins restrictif.

blacklist avec Require[2][modifier | modifier le wikicode]

    <Directory /usr/share/phpmyadmin/>
        <IfModule mod_authz_core.c>
            Require all granted
            Require not ip 127.0.0.1
        </IfModule>
    </Directory>

blacklist avec deny (obsolète en Apache 2.4)[modifier | modifier le wikicode]

    <Directory /usr/share/phpmyadmin/>
        <IfModule mod_access_compat.c>
            order allow,deny
            allow from all
            deny from 127.0.0.1
        </IfModule>
    </Directory>

Protection par mot de passe[modifier | modifier le wikicode]

Configuration de l'authentification[modifier | modifier le wikicode]

Il est impératif que la modification des paramètres d'authentification soit autorisée dans la configuration d'Apache.

Il faut que la directive AllowOverride d'un répertoire parent contienne l'option AuthConfig.

Les directives à placer dans le .htaccess sont les suivantes :

AuthType basic
type d'authentification communément adopté mais peu sécurisé
AuthName "Mon message"
affichera le texte comme invite dans la boîte de dialogue
AuthUserFile /etc/apache2/my_passwd
indique où vont se trouver les mots de passe
Require valid-user
précise qu'il faut un compte dans le fichier de mots de passe pour accéder au répertoire

On peut aussi utiliser Require user toto sasa pour n'autoriser que les comptes toto et sasa.

Le type d'authentification basic fait circuler les mots de passe en clair. Il existe d'autres types plus sécurisés comme digest, qu'il est recommandé de combiner à HTTPS. Voir l'article sur wikipédia pour plus de détails sur le fonctionnement.

La première requête adressée à ce répertoire protégé provoquera l'affichage d'une boîte de dialogue par laquelle l'utilisateur devra s'identifier (nom et mot de passe) :

  • Si le mot de passe saisi est invalide, la boite de dialogue s'affichera de nouveau.
  • S'il est valide, le navigateur l'enregistre et ne le demandera plus.

Il faudra relancer le navigateur pour qu'il le demande de nouveau.

Fichier de mots de passe[modifier | modifier le wikicode]

Pour créer un fichier stockant les mots de passe permettant de lire un site, nommé /etc/apache2/default-passwd avec comme 1er utilisateur toto, on utilisera la commande

htpasswd -c /home/user/www/.htpasswd toto

Pour ajouter ou modifier un utilisateur à un fichier de mots de passe existant :

htpasswd /home/user/www/.htpasswd sasa

Pour que le .htaccess active le .htpasswd, y ajouter les directives :

 AuthName "Page protégée"
 AuthType Basic
 AuthUserFile "/home/user/www/.htpasswd"
 Require valid-user

Logo

Cette protection ne tient pas compte des robots qui essaient tous les mots de passe un par un. Il convient donc de l'utiliser en complément d'un bon pare-feu (ex : iptables).

Références[modifier | modifier le wikicode]