Een veilige installatie van WordPress vereist voor het installeren of bijwerken van plugins, themes of de WordPress Core inloggegevens van de ssh-beheersgebruiker. Het is mogelijk om deze gegevens op te slaan in de WordPress-configuratie waardoor het uitvoeren van updates zonder toegenomen administratielast plaats kan vinden.

WordPress biedt twee mogelijkheden om de gegevens van de beheersgebruiker op te slaan in het WordPress configuratiebestand.

Voor- en nadelen

Gebruikersnaam en wachtwoord opnemen in wp-config.php
Voordelen: Installaties en updates uitvoeren zonder extra onderbreking
SSH-wachtwoord hoeft niet bekend te zijn bij WordPress-gebruiker
Mogelijkheid gebruiker per site te specificeren
Nadelen: Wachtwoord staat plain-text op de server
Bij applicatielek kan wachtwoord worden buitgemaakt
Gebruiker kan wachtwoord opzoeken
SSH key-based authenticatie configureren in wp-config.php
Voordelen: Installaties en updates uitvoeren zonder extra onderbreking
SSH-wachtwoord hoeft niet bekend te zijn bij WordPress-gebruiker
WordPress-gebruiker kan ssh-wachtwoord niet inzien
Nadelen: WordPress-gebruiker kan ongecontroleerde plugins of themes installeren
Bij een authenticatiebug kan toegang worden verkregen tot applicatiecode
Instellen van gegevens ligt gevoeliger


Instellen

Gebruikersnaam en wachtwoord opnemen in wp-config.php

  1. Open het WordPress configuratiebestand wp-config.php in een geschikte teksteditor.
  2. Onder de Database-settings (eindigend met “define(‘DB_COLLATE’, ”);“), voeg de volgende regels toe aan het bestand:
    /** SSH User info - used for installing plugins and themes, and updates */
    define('FTP_USER','gebruikersnaam');
    define('FTP_PASS','wachtwoord');
    define('FTP_HOST','127.0.0.1:22');
    define('FS_METHOD', 'ssh2');
    
  3. Sla de wijzigingen op en test de werking

SSH key-based authenticatie configureren in wp-config.php

  1. Zorg dat uw server voorzien is van een eigen SSH-key zonder passphrase.
  2. Maak een kopie van de ssh public- en private key in een logische locatie
    (bijvoorbeeld: /data/www/website.nl/ssh).
  3. Voeg de ssh key toe aan de authorized keys van de ssh-gebruiker waarbij enkel lokale verbindingen worden toegestaan:
    echo "from=\"127.0.0.1\" $(cat /data/www/website.nl/ssh/public_key.pub)" >> ~/.ssh/authorized_keys
  4. Zorg dat de ssh keys enkel leesbaar en schrijfbaar zijn voor het php proces
    (bijvoorbeeld: chown -R www-data:www-data ssh of via een ticket in TrueCare)
  5. Open het WordPress configuratiebestand wp-config.php in een geschikte teksteditor.
  6. Onder de Database-settings (eindigend met “define(‘DB_COLLATE’, ”);“), voeg de volgende regels toe aan het bestand:
    define('FTP_PUBKEY','/data/www/website.nl/ssh/public_key.pub');
    define('FTP_PRIKEY','/data/www/website.nl/ssh/private_key');
    define('FTP_USER','gebruikersnaam');
    define('FTP_PASS','');
    define('FTP_HOST','127.0.0.1:22');
    define('FS_METHOD', 'ssh2');
    
    
  7. Sla de wijzigingen op en test de werking

Beveiligingsmaatregelen

  • Plaats het wp-config.php bestand één map hoger dan de document root.
    Bijvoorbeeld

    • Document root: /data/www/website.nl/public_html/
    • wp-config: /data/www/website.nl/wp-config.php
  • Zorg dat wp-config.php niet benaderbaar is via de browser.
    Lees: Blokkeer of beperk toegang tot bestanden op uw server.