Ceci peut être intéressant dans plusieurs cas :
Je présente ici le paramétrage pour Apache (version 2.2 et 2.4) ainsi que pour Nginx.
Tout se passe dans le fichier de déclaration du VirtualHost, ou dans le fichier .htaccess si vous autorisez leur utilisation.
La syntaxe est la suivante :
<Directory /var/www/monsite/repertoire >
Order deny,allow
# acces interdit par défaut
Deny from all
# Fichier d'autorisation
AuthName "Protected Area"
AuthType Basic
AuthUserFile /var/www/monsite.htpasswd
# Permet l'accès si l'un des critères est OK : utilisateur ou adresse IP
Satisfy Any
require valid-user
# Adresses IP Authorisées
Allow from 1.2.3.4 11.22.33.44
</Directory>
La création du fichier htpasswd s'effectue avec la commande htpasswd, de la manière suivante :
cd /var/www
htpasswd -c monsite.htpasswd monuser
Pour ajouter un utilisateur ou modifier le mot de passe on utilise la commande sans l'option '-c' :
htpasswd monsite.htpasswd newuser
L'accès à l'administration de Wordpress s'effectue via le script wp-login.php, puis via les scripts php présents dans le répertoire wp-admin. Dans ce cas on peut protéger un fichier :
<Files wp-login.php>
AuthType Basic
AuthName "WP-ADMIN is Restricted"
AuthUserFile "/home/hostinguser/passwd"
Require valid-user
# If you have a fixed IP address, you can add the following
# three lines replacing x.x.x.x with your fixed IP address
Order allow,deny
Allow from x.x.x.x
Satisfy any
</Files>
# Protection du repetoire d'admin
<Directory /var/www/wordpress/monsite/wp-admin >
AuthName "Admins Only"
AuthUserFile /etc/www/monsite.htpasswd
AuthGroupFile /dev/null
AuthType basic
require user monSiteAdmin
Allow from 1.2.3.4 11.22.33.44
Satisfy Any
</Directory>
La version 2.4 du serveur a modifié pas mal de paramètres (Allow et Satisfy ne sont plus supportés, par exemple). La syntaxe correcte est maintenant la suivante :
<Directory /var/www/monsite/repertoire >
AuthType Basic
AuthUserFile /www/.site_htpasswd
AuthName "Protected Area"
<RequireAny>
# Adresses IP Authorisées
Require ip 1.2.3.4 11.22.33.44
Require valid-user
</RequireAny>
</Directory>
La syntaxe pour Nginx est assez proche de celle utilisée pour Apache (syntaxe 2.2).
A noter qu'on utilise plutôt location qui cible une URL
location /wp-admin {
satisfy any ;
# Adresses IP Authorisées
allow 1.2.3.4 ;
allow 11.22.33.44 ;
deny all;
auth_basic "Restricted access";
auth_basic_user_file conf.d/basicauthpasswd;
.../...
try_files $uri @gitlist;
}
A la différence de Apache, le mot de passe présent dans le fichier utilisé est généré de la manière suivant :
openssl passwd
Password:
Verifying - Password:
Fipx.a4Q5fjjw
Il faut ensuite mettre à jour le fichier avec le nom et le mot de passe de l'utilisateur, séparés par ':'. Par exemple :
cat /etc/nginx/conf.d/basicauthpasswd
httpadmin:Fipx.a4Q5fjjw