Optimaliseren veiligheid - WordPress veiliger maken (uitgebreid)
Deze handleiding is ervoor bedoeld om je bestaande WordPress installatie volledig te vergrendelen om hem zo veilig mogelijk te maken.
De volgende items zijn vereist voor deze handleiding:
- cPanel account met één WordPress (meerdere WordPress sites in één cPanel account niet ondersteund)
- WordPress geinstalleerd in de 'public_html'
- Geldig SSL certificaat is geïnstalleerd op het domein
- WordPress is geconfigureerd om via HTTPS te werken
- SSH toegang
Voordelen:
- WordPress is veiliger dan een standaard installatie
Nadelen:
- Onderhoud aan de website moet handmatig gebeuren
Belangrijk
Het extra beveiligen van een WordPress betekent niet dat deze niet meer geupdate hoeft te worden voor kwetsbaarheden.
We gaan alle bestanden volledig vergrendelen, let op dat het hierdoor de volgende dingen niet meer mogelijk zijn:
- Theme's uploaden via WordPress
- Plugins uploaded via WordPress
- Let's Encrypt SSL aanvragen via HTTP
Start met het inloggen via SSH
# ssh securewp@securewp.myhoasted.com
We passen als eerst de .htaccess aan om eventuele PHP in WordPress mappen te voorkomen. Voeg de volgende code toe aan het bestand 'public_html/.htaccess':
# nano public_html/.htaccess File: public_html/.htaccess # Voorkom listing van files Options All -Indexes # Blokkeer directe toegang tot error_log/wp.config.php/.htaccess bestanden <FilesMatch "^.*(error_log|wp-config\.php|php.ini|\.[hH][tT][aApP].*)$"> Order deny,allow Deny from all </FilesMatch> # Blokkeer directe toegang tot <FilesMatch "(\.(zip|tar|gz|bak|config|dist|fla|inc|ini|log|psd|sh|sql|swp)|~)$"> Order deny,allow Deny from all </FilesMatch> # Blokkeer directe toegang tot wp-includes bestanden <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^wp-admin/includes/ - [F,L] RewriteRule !^wp-includes/ - [S=3] RewriteRule ^wp-includes/[^/]+\.php$ - [F,L] RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L] RewriteRule ^wp-includes/theme-compat/ - [F,L] </IfModule> # Blokkeer directe toegang tot wp-content/plugins/* bestanden RewriteRule wp-content/plugins/(.*\.ph(?:p[345]?|t|tml))$ - [R=404,L] # Blokkeer directe toegang tot wp-content/themes/* bestanden RewriteRule wp-content/themes/(.*\.ph(?:p[345]?|t|tml))$ - [R=404,L] # Blokkeer verborgen bestanden RewriteCond %{SCRIPT_FILENAME} -d [OR] RewriteCond %{SCRIPT_FILENAME} -f RewriteRule "(^|/)\." - [F] # Forceer HTTPS RewriteEngine on RewriteCond %{HTTPS} !on RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L] # Forceer HTTPS op het domein permanent. HTTP gebruik is niet meer mogelijk. <IfModule mod_headers.c> # Remove "includeSubDomains" if you don't want to enforce HSTS on all subdomains Header always set Strict-Transport-Security "max-age=31536000;includeSubDomains" </IfModule> #STANDAARD WP .htaccess <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule>
Sla het bestand op via:
CTRL + X
Druk 'Y' for Yes
Druk 'Enter' om het bestand op te slaan.
Blokkeer PHP bestanden in uploads map
Plaats vervolgens nog een .htaccess in de uploads map.
# nano public_html/wp-content/uploads/.htaccess File: public_html/wp-content/uploads/.htaccess # Sluit PHP bestanden uit in de uploads map <Files ~ "\.ph(?:p[345]?|t|tml)$"> deny from all </Files>
Sla het bestand op via:
CTRL + X
Druk 'Y' for Yes
Druk 'Enter' om het bestand op te slaan.
IP Blokkade wp-login.php
Het is ook mogelijk om de 'wp-login.php' pagina enkel toegankelijk te maken tot bepaalde IP adressen. Voeg daarvoor de volgende code toe aan 'public_html/.htaccess'.
# nano public_html/.htaccess File: public_html/.htaccess #IP restrictie voor wp-login.php <Files wp-login.php> Order Deny,Allow Deny from all Allow from xx.xx.xx.xx #IP1 Allow from xx.xx.xx.xx #IP2 </Files> #REST VAN .htaccess
Blokkeer bestandswijzigingen in WordPress
# nano public_html/wp-config.php File: public_html/wp-config.php ###WORDPRESS CONFIG define('WP_DEBUG', false); define('DISALLOW_FILE_EDIT', true); define('DISALLOW_FILE_MODS',true); define('UPLOADS','wp-content/uploads');
Sla het bestand op via:
CTRL + X
Druk 'Y' for Yes
Druk 'Enter' om het bestand op te slaan.
Blokkeer het bewerken van bestanden
Door het uitvoeren van de volgende regels worden (uitvoeren als losse regels zonder #)
# find ./public_html/ -type f -exec chmod 444 {} \; # find ./public_html/ -type d -exec chmod 555 {} \; # find ./public_html/.htaccess -type f -exec chmod 444 {} \; # find ./public_html/wp-config.php -type f -exec chmod 400 {} \; # find ./public_html/wp-content/uploads/ -name .htaccess -type f -exec chmod 444 {} \; # find ./public_html/wp-content/uploads/ -type d -exec chmod 755 {} \; # find . -name public_html -type d -exec chmod 555 {} \;
Deblokkeer de rechten
Als het tijd is om updates aan te brengen in de WordPress kan je de volgende regels uitvoeren via SSH om alles te deblokkeren:
# find . -name public_html -type d -exec chmod 775 {} \; # find ./public_html/ -type f -exec chmod 644 {} \; # find ./public_html/ -type d -exec chmod 755 {} \;