core
de wordpressNB Si vous n'utilisez pas une extension ou un theme => supprimez-les
Points à juger :
On ne dira jamais assez FAITES DES sauvegardes
Mon truc à moi :
Je crée une dropbox dédiée au site sur laquelle je sauve images, fichiers site, base de donnée, et qui est liée avec une sauvegarde automatique
Wordpress est gratuit et en open source
DONC populaire ET tentant pour les hackers
On peut distinguer 3 types de pirates
les hackers, passionné, ils veulent comprendre, s'infiltrer pour améliorer leur connaissance réseaux et avetir de failles possibles
les crackers qui sont des criminels informatiques
les script-kiddies, amateurs ou débutants qui utilisent des scripts tout-fait sur le net et qui sont responsables de 90% des attaques (dit-on!)
Les Updates mineurs sont faites automatiquement depuis la version 2.7.
Par contre, les majeurs attendent toujours votre clic !!
Updater, c'est combler ses failles dans le systeme et surtout fermer la porte aux pirates qui connaissent désormais les failles décelées !
Car lorsqu'un update est publié, les problèmes de sécurité sont mentionnés pour les anciennes versions.
=> facile pour les pirates d'utiliser l'info.
Avant de commencer:
Cacher le numéro de version wp ne semble pas servir à grand chose car les attaques ciblent wordpress dans son ensemble
mais si vous voulez le faire quand même
Utiliser pour cela le fichier function.php (présent dans /wp-content/themes/Votre-Theme-enfant)
remove_action("wp_head", "wp_generator");
On peut également empêcher le flux RSS d’afficher la version WordPress avec la fonction suivante:
function wpt_remove_version() {
return '';
}
add_filter('the_generator', 'wpt_remove_version');
supprimer aussi:
readme.html => qui indique le numéro de version wp
Le prefix de la base de donnée est par défaut wp_
pour empecher certaines attaques de script, il est préférable de changer ce préfix lors de la création du site.
Evitez wp1, wpa ou tout autre préfix commençant par wp
tuto de Tony Archambeau pour changer le prefix,
=> attention, toute action sur la BDD est risquée, prenez vos précautions, backup, test en local etc…
Les attaques BRUTFORCE
Ce sont de petits programmes/scripts qui cherchent le password
car il n'y a pas de limit à la combinaison de connexions sur Wordpress
et si vous laissez le login Admin
y'a qu'à pour le password …..
Ne pas utiliser :
s
par $
utiliser un générateur de mot de passe
une phrase “coucoumarchesuisdemain”
cap, minuscule et symbole (< >)
Qui fait quoi !!??
Si vous partagez l'admin
peut-être pouvez vous empecher d'éditer directement du site
dans config.php
define('DISALLOW_FILE_EDIT',true);
Mon truc à moi :
Je recrée un utilisateur administrateur
après plusieurs création d'utilisateurs lambdas afin que l'admin n'ai pas l'ID n°1 dans la BDD.
Même chose que pour les themes, vérifiés l'historique, les updates etc
ceux qui peuvent vous aider :
Comme le dit si bien OVH, le fichier .htacces
est le couteau suisse d’Apache.
Apache.org - Tutoriel du serveur HTTP Apache : fichiers .htaccess
Pour comprendre le charabia du .htaccess
généré automatiquement par WordPress (après toute modification des permaliens) : cliquez ici
Options -Indexes
wp-config.php
et empêcher la lecture de ce fichier via Apache.
Editez (ou créez) le fichier .htaccess qui se trouve à la racine du répertoire de WordPress et ajoutez-y les lignes suivantes :
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
<Files wp-config.php>
order allow, deny
deny from all
</Files>
<LIMIT GET>
order deny,allow
deny from all
# whitelist Robert's IP address
allow from xx.xx.xx.xxx
# whitelist David's IP address
allow from xx.xx.xx.xxx
# whitelist Amanda's IP address
allow from xx.xx.xx.xxx
# whitelist Jean's IP address
allow from xx.xx.xx.xxx
# whitelist Work IP address
allow from xx.xx.xx.xxx
</LIMIT>
Remplacez xx.xx.xx.xxx avec votre adresse IP.
Si vous utilisez plus d'une adresse pour acceder à votre site, ajoutez-les aussi.
<Limit GET POST>
order allow, deny
deny from 203.023.24.1
deny from xx.xx.xx.xxx
allow from all
</Limit>
Remplacez xx.xx.xx.xxx avec l'adresse IP que vous voulez bloquer.
# STRONG HTACCESS PROTECTION
<Files ~ "^.*\.([Hh][Tt][Aa])">
order allow,deny
deny from all
satisfy all
</Files>
Mon truc à moi
mon fichier type
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
#Interdire la lecture du contenu des dossiers
Options All -Indexes
# PROTECT wpconfig.php
<FilesMatch ^wp-config.php$>
deny from all
</FilesMatch>
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Voila ce qu'il signifie en détail…
# BEGIN WordPress
# END WordPress
De simples commentaires signalant le début et la fin du code de réécriture d'URL.
<IfModule mod_rewrite.c> </IfModule>
Expression conditionnelle: le code inclu entre ces deux balises est exécuté seulement si l'URL rewritting est permise par l'hébergeur et dans ce cas le module mod_rewrite
doit être disponible.
RewriteEngine On
Active le moteur de réécriture d'URL.
RewriteBase /
Indique explicitement que la racine du site est “/”, ce qui n'est pas le cas par défaut pour la plupart des hébergements Unix: la base du site est l'emplacement des fichiers, quelque chose comme /home/utilisateur/www/
.
Cette directive introduit une différence entre PHP et le serveur: pour PHP, la racine reste l'emplacement du répertoire et il faut utiliser les variables PHP pour connaître la racine du site (voir le script Bioloide pour une application pratique).
La base étant ainsi définie, on peut utiliser dans les pages des adresses relatives comme par exemple /mapage.html
.
RewriteCond %{REQUEST_FILENAME} !-f
Une précondition pour la directive qui suivra.
Elle empêche la redirection automatique sur index.php
, ce qui est le cas par défaut, lorsque l'URL correspond à un fichier réel.
REQUEST_FILENAME
est une variable Apache qui représente le chemin réel dans le système de fichier sur le serveur.
%{}
ce code est la façon pour Apache de désigner une variable.!
ce symbole forme la négation du filtre qui suit.-f
précise qu'il s'agit d'un fichier et !-f
indique que ce ne doit pas être un fichier.-d
précise qu'il s'agit d'un répertoire et !-d
l'inverse.Donc la condition exclut les URL correspondant à un fichier réel sur le site, tandis que:
RewriteCond %{REQUEST_FILENAME} !-d
exclut les sous-répertoires.
RewriteRule . /index.php [L]
La commande RewriteRule
demande le remplacement de l'expression régulière, en l'occurence un point, par l'adresse /index.php
(sauf si c'est un fichier ou répertoire réels).
Le point représentant tout caractère ou séquence de caractère, toute URL est redirigée sur index.php
.
[]
ajoute une règle pour le serveur.
L
signifie Last, la règle est la dernière à être appliquée.
Ainsi la règle complète redirige toutes les URLs sur /index.php
sauf si elles correspondent à des fichiers ou répertoires réels.
Instructions de mise à jour manuelle-CODEX
tuto de Tony Archambeau pour changer le prefix bdd
OVH - astuce_htaccess
Apache.org - Tutoriel du serveur HTTP Apache : fichiers .htaccess
9-most-useful-htaccess-tricks-for-wordpress/
securisation-de-votre-site-wordpress