Le fichier .htaccess permet de communiquer avec la machine qui héberge votre site internet.
Le fichier dont je ferai référence dans cet article doit être placé à la racine de votre blog, c’est à dire au même niveau que votre fichier wp-config.php.
Dans certains cas, il est possible de placer un fichier .htaccess dans un dossier pour limiter l’impact sur les fichiers. Les instructions du fichier .htaccess placé dans un dossier prend le dessus sur le fichier .htaccess parent, si les instructions rentrent en conflit.

N’oubliez pas de faire une sauvegarde systématique de votre fichier .htaccess avant toute intervention. Vous pourrez facilement replacer en ligne votre sauvegarde si jamais le nouveau fichier est mal écrit.

Empêcher la navigation dans les dossiers

Certains hébergeurs ne bloquent pas la possibilité de naviguer directement dans les dossiers d’un site. (désolé pour la personne qui reconnaitra le dossier Galerie de son site ;) )
Ainsi, en tapant http://mon_super_site.net/wp-includes/ il est parfois possible de naviguer dans les fichiers de ce dossier, puis dans les sous-dossiers.
Pour bloquer cette possibilité il suffit de rentrer cette ligne de code dans votre fichier .htaccess :

Options -Indexes

Attention, ce code n’empêche pas le contenu d’un dossier d’être indexé, il faudra renseigner le fichier robots.txt pour cela.

Modifier le « register globals »

Ce paramètre existe depuis PHP4 et permet de sécuriser les variables globales.
Il est important de régler le register_globals à off.
Il est possible de régler ceci grâce au fichier .htaccess, avec la ligne suivante :

php_flag register_globals off

Si vous êtes chez OVH ce sera plutôt :

SetEnv REGISTER_GLOBALS 0

Attention, chez OVH ce paramètre est par défaut réglé à on !

Merci à Julio pour l’info sécu !

Bannir des adresses IP

Il peut arriver qu’une personne qui ne vous aime pas (si si ça arrive), ou qu’un robot se mette à poster non-stop sur votre blog, 10, 20 commentaires indésirables par jour.
Les robots et les personnes indésirables peuvent être bannis grâce à leur adresse IP. WordPress vous la donne lorsque la personne poste un commentaire sur votre blog, mais elle peut aussi apparaître dans les mails de contact grâce à certains plugins proposant des formulaires de contact.
En ajoutant ce code à votre fichier .htaccess, vous bannirez les personnes visitant votre site avec l »adresse IP 123.456.789 et l’adresse IP 987.654.321.

order allow,deny
allow from all
deny from 123.456.789
deny from 987.654.321

Pour bannir davantage d’IP, il suffit de dupliquer la dernière ligne autant de fois que nécessaire en renseignant l’IP à bannir.

Autoriser votre seule adresse IP dans le dossier wp-admin

Cette technique n’a d’intérêt que si le nombre d’intervenant est limité et connu, et surtout si vous éditez votre site depuis le même ordinateur.
De même, il vous faudra une IP fixe, ou alors vous serez obligé d’autoriser une plage d’IP.

AuthUserFile /dev/null
AuthGroupFile /dev/null
AuthName "Wordpress Admin Access Control"
AuthType Basic

order deny,allow
deny from all
allow from 123.456.789

Si vous souhaitez rajouter des autorisations pour d’autres IP, dupliquez simplement la dernière ligne en renseignant la bonne adresse.
Le fichier .htaccess doit être placé dans le dossier /wp-admin de votre installation.

Interdire l’accès aux fichiers importants

Interdire l’accès à wp-config.php qui est le fichier qui liste certaines informations sur l’installation de WordPress, notamment les identifiants de connexion à votre base de données, ainsi que le préfixe des tables.
Pour éviter qu’il puisse être atteint directement, interdisez simplement son affichage :

# protect wpconfig.php
<files wp-config.php>
order allow,deny
deny from all
</files>

Une autre solution consiste à placer wp-config.php à l’extérieur du dossier www de votre espace web. En effet, WordPress arrive à le retrouver même à l’extérieur de www.

De la même manière il est possible d’interdire l’accès au fichier readme.html ou au fichier .htaccess lui-même.

# protect readme.html
<files readme.html>
order allow,deny
deny from all
</files>
# protect .htaccess
<files .htaccess>
order allow,deny
deny from all
</files>

Article original (en)

Limiter l’appel au script de commentaires

Cette technique permet de vérifier d’où est appelé le script qui envoie les commentaires en base de données.
Il a l’avantage de limiter une partie du spam.
Si le referer existe, et s’il s’agit de votre blog, alors le commentaire est posté. Autrement il ne l’est pas et l’utilisateur du script est redirigé.

RewriteEngine On
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} .wp-comments-post\.php*
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !.*yourblog.com.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule (.*) http://yourblog.com [R=301,L]

N’oubliez pas de remplacer yourblog.com par l’URL exacte de votre blog.
Article original (en)

5G Blacklist 2012

Développée par Perishable Press, ce code vous permet de vous protéger contre pas mal de choses.
Tout est expliqué sur le site (en anglais, mais Google peut traduire si ce n’est pas votre fort), je vous laisser donc découvrir 5G Blacklist 2012.

Bonux : Bloquer l’indexation de contenus sensibles

Rien à voir avec le fichier .htaccess, il s’agit ici du fichier robots.txt utilisé par les moteurs de recherche.
Il est possible d’empêcher l’indexation des fichiers du système WordPress par les moteurs de recherche en renseignant ceci dans votre fichier robots.txt qui se trouve à la racine de votre site :

User-Agent: *
Disallow: /wp-*

Et bien d’autres techniques

Il existe de nombreuses autres techniques dont certaines sont détaillées sur cette page :
AskApache mod_rewrite security
Merci à Mr Xhark pour son partage dans un de ses commentaires.

Un récent article de BoiteAWeb a été publié concernant la sécurité de WordPress et ses éventuelles faiblesses.
Je vous invite à le lire, c’est une réflexion à laquelle vous pouvez participer.

Le mot de la fin

Nous avons fait le tour de ce dossier.
Si vous avez manquez quelque chose, le sommaire ci-dessous vous y mènera.
Ce dossier n’a pas la prétention d’être exhaustif, aussi, si vous avez des plugins, hooks ou astuces à partager, n’hésitez pas à commenter ce dossier. Votre contribution sera ajoutée au dossier et un lien vers votre site sera fait pour vous en remercier.
De même, si vous croisez des erreurs faites m’en part.

À bientôt ;)