Security Blog
Security Blog
Posted By Gregory

Maak van je WordPress-website een Fort Knox.

Hoe je WordPress kunt omtoveren tot een beschermd fort zoals Fort Knox


English version: Turn your WordPress into Fort Knox


Dit artikel gaat ervan uit dat we een kogelvrije, beveiligde website willen bouwen met WordPress. Het is niet per se nodig om alle volgende stappen woord voor woord en punt voor punt exact zo te volgen als beschreven. Maar ik raad het wel aan als je je eigen Fort Knox wilt creëren.

Sommige van de volgende stappen kunnen incompatibiliteitsproblemen veroorzaken met bepaalde plugins die bestanden rechtstreeks in de WordPress-mappen proberen te wijzigen. Ik raad aan om dergelijke plugins te negeren, omdat het gebruik ervan direct of in de toekomst tot veel problemen en beveiligingsrisico's kan leiden, wanneer hackers kwetsbaarheden in de plugins of het thema van uw site ontdekken. Ik heb dit artikel geschreven in de hoop dat het nuttig zal zijn, maar zonder enige garantie.

Let op: dit artikel is niet van toepassing als u gebruikmaakt van shared hosting. U moet minimaal een VPS-hosting hebben.

Vereisten: root-toegang tot de Linux-server waarop uw website wordt gehost. Zonder shell-toegang met root-rechten kunt u niets nuttigs doen om een echt beveiligde website te creëren. Er bestaat geen enkele manier of plugin die WordPress en de bestanden in de bijbehorende mappen op een professioneel niveau kan beschermen. Alle beveiligingsplugins hebben dezelfde rechten als hackers en bots. Zonder uitzondering. Als een beveiligingsplugin wijzigingen heeft aangebracht in bestanden van uw website om deze te beschermen, kan elke hacker of kwaadaardige code die wijzigingen ongedaan maken of de beveiliging verwijderen.

Hieronder volgen enkele belangrijke punten over mijn aanpak.

  • Alle codebestanden (PHP-code) en alle .htaccess-bestanden moeten schrijfbeveiligd zijn. Geen uitzonderingen.
  • We moeten alle standaardinstellingen (map, cookies, inlogpad, alle andere instellingen) wijzigen naar andere waarden.
  • We mogen geen plugins of thema's gebruiken die PHP- of .htaccess-bestanden in de WordPress-mappen manipuleren en proberen te wijzigen.

Stap één. WordPress installeren.

Gebruik niet het standaard voorvoegsel wp_ voor databasetabellen. Gebruik in plaats daarvan een paar of drie letters. Sommige WordPress-specifieke aanvallen en aanvallers gaan ervan uit dat het tabelvoorvoegsel wp_ is. Het wijzigen van het voorvoegsel helpt ons bepaalde SQL-injectieaanvallen te blokkeren.

Stap twee. De website beveiligen op WordPress-niveau.

  1. Verplaats de map 'uploads ' één niveau hoger, van de map /wp-content/ naar de hoofdmap van je WordPress-installatie.
  2. Hernoem de map met uploads naar media (of iets dergelijks, net wat je wilt).
  3. Hernoem de map wp-content naar content (of iets dergelijks, net wat je wilt).
  4. Hernoem de map 'plugins' naar 'mod' (of iets dergelijks, net wat je wilt).
  5. Voeg de volgende regels toe aan het begin van het wp-config.php- bestand. Vergeet niet om media , content en mod te vervangen door de waarden die je eerder hebt gekozen .
     define('AUTOMATIC_UPDATER_DISABLED', true ); // ja, het is veilig om dit handmatig te doen
    define('DISALLOW_FILE_EDIT', true ); // We staan nooit toe dat iemand je bestanden aanraakt
    define('DISALLOW_FILE_MODS', true ); // ja, het is veilig om dit handmatig te doen
    define('FS_METHOD', 'direct'); // geen FTP natuurlijk
    define('WP_HTTP_BLOCK_EXTERNAL', true );
    define('UPLOADS', ' media '); // We hebben de naam van 'uploads' gewijzigd en het naar een hoger niveau verplaatst.
    define('WP_CONTENT_DIR', '/pad/naar/wordpress/map/ content '); // geen hostnaam, geen afsluitende slash
    define('WP_CONTENT_URL', 'http://example.com/ content ');
    define('WP_PLUGIN_DIR', '/path/to/wordpress/dir/ content / mod '); // geen hostnaam, geen afsluitende slash
    define('WP_PLUGIN_URL', ' http://example.com/content/mod ' );
    ini_set('display_errors',0); // Schakel de weergave van PHP-fouten op de front-end uit

Stap drie. Wijzig de standaard cookienaam.

Voeg deze regels toe aan het begin van het wp-config.php- bestand.

 define('USER_COOKIE', 'my_user_cookie' ); // verander dit naar iets anders
define('PASS_COOKIE', 'my_pass_cookie' ); // verander dit naar iets anders
define('AUTH_COOKIE', 'my_auth_cookie' ); // verander dit naar iets anders
define('SECURE_AUTH_COOKIE', 'my_sec_cookie' ); // verander dit naar iets anders
define('LOGGED_IN_COOKIE', 'my_logged_cookie' ); // verander dit naar iets anders
define('TEST_COOKIE', 'my_test_cookie' ); // verander het in iets anders

Stap vier. Installeer direct na de installatie van WordPress een beveiligingsplugin.

Bescherm je inlogpagina met WP Cerber Security . Zelfs met de bovenstaande beveiligingsmaatregelen zullen hackers brute force-aanvallen (inlogpogingen) proberen uit te voeren om toegang te krijgen tot je WordPress-website. Verberg en sluit deze deur met WP Cerber.

Stap vijf. De website beveiligen op serverniveau.

In deze stap ga ik ervan uit dat je een server met Apache als HTTP-server gebruikt. We moeten de eigenaar van alle WordPress-bestanden wijzigen, inclusief plugins en thema's. Standaard is dit de gebruiker 'apache' . We moeten dit wijzigen naar een andere gebruiker die je hiervoor eerder hebt aangemaakt. Laten we zeggen dat deze gebruiker 'cerber' heet.

  1. Plaats het .htaccess-bestand in de media -map (uw nieuwe uploadmap) met de volgende instructie erin. Dit voorkomt dat de website geüploade kwaadaardige PHP-code uitvoert.
     php_flag engine off

    Opmerking: Het Apache-configuratiebestand moet de instructie AllowOverride Options bevatten voor uw uploadmap of een van de bovenliggende mappen om deze instructie te laten werken.

  2. Wijzig voor de volledige website-directory (/pad/naar/wordpress/directory) de eigenaar en de machtigingen voor alle bestanden. Voer hiervoor de volgende commando's uit in de shell.
     find /path/to/wordpress/dir -exec chown cerber:root {} +
    find /path/to/wordpress/dir -type d -exec chmod 755 {} +
    find /path/to/wordpress/dir -type f -exec chmod 644 {} +

  3. Voor de uploadmap (/pad/naar/wordpress/map/ media ) moeten we speciale machtigingen instellen. Laten we dat doen met behulp van `exec`-opdrachten in de shell.
     find /path/to/wordpress/dir/ media -exec chown cerber:apache {} +
    find /path/to/wordpress/dir/ media -type d -exec chmod 775 {} +
    find /path/to/wordpress/dir/ media -type f -exec chmod 664 {} +

  4. Stel de permalinkstructuur in via de WordPress-instellingen en wijzig vervolgens de schrijfrechten van het .htaccess- bestand.
     chown cerber:root /path/to/wordpress/dir/.htaccess
    chmod 644 /pad/naar/wordpress/map/.htaccess

  5. Verplaats het bestand wp-config.php naar de map boven de installatiemap van je WordPress-installatie.

Stap zes. De website beveiligen op NGINX-serverniveau.

Lees hier: WordPress beveiligen met WP Cerber en NGINX

Stap zeven. De website beveiligen met Fail2Ban

Lees hier: Hoe u WordPress kunt beschermen met Fail2Ban


I'm a team lead in Cerber Tech. I'm a software & database architect, WordPress - PHP - SQL - JavaScript developer. I started coding in 1993 on IBM System/370 (yeah, that was amazing days) and today software engineering at Cerber Tech is how I make my living. I've taught to have high standards for myself as well as using them in developing software solutions.

View Comments
There are currently no comments.