Sappiamo già come installare phpMyAdmin con lo stack LAMP su Ubuntu 20.04 . Oggi vediamo come installare phpMyAdmin con lo stack LEMP su Ubuntu 20.04 LTS edition. E poi discuteremo anche di alcune pratiche di sicurezza che aiuteranno a proteggere phpmyadmin dalle minacce comuni. Innanzitutto, assicurati di aver impostato lo stack LEMP su Ubuntu 20.04 come descritto nel seguente link.
- Installa Nginx, MySQL, PHP (stack LEMP) su Ubuntu 20.04 LTS
Dopo aver installato lo stack LEMP, installa e proteggi phpMyAdmin come descritto nelle sezioni seguenti.
Installa phpMyAdmin con lo stack LEMP su Ubuntu 20.04 LTS
Esegui il seguente comando per installare phpMyAdmin dal Terminale:
$ sudo apt install phpmyadmin
Nella finestra successiva, ti verrà chiesto di selezionare il server web che dovrebbe essere configurato automaticamente per eseguire phpMyAdmin. Come puoi vedere nello screenshot qui sotto, Nginx non è disponibile nell'elenco dei server web. Apache e lighthttpd sono elencati solo qui. Quindi non selezionare qualsiasi server web e lascialo vuoto. Scegli OK e premi INVIO per continuare:
PhpMyAdmin richiede un database installato e configurato prima di poter essere utilizzato. Puoi farlo con dbconfig-command.
Scegli Sì per configurare il database per phpmyadmin con dbconfig-common:
Devi fornire una password per phpmyadmin per registrarsi con il server di database MySQL. Se la password non viene fornita, verrà generata una password casuale.
Inserisci una password complessa e premi INVIO per continuare:
Reinserire la password:
Al momento della stesura di questa guida, quando ho provato a impostare la password per phpmyadmin, viene generato il seguente errore:
An error occurred while installing the database: mysql said: ERROR 1819 (HY000) at line 1: Your password does not satisfy the current policy requirements . Your options are: * abort - Causes the operation to fail; you will need to downgrade, reinstall, reconfigure this package, or otherwise manually intervene to continue using it. This will usually also impact your ability to install other packages until the installation failure is resolved. * retry - Prompts once more with all the configuration questions (including ones you may have missed due to the debconf priority setting) and makes another attempt at performing the operation. * retry (skip questions) - Immediately attempts the operation again, skipping all questions. This is normally useful only if you have solved the underlying problem since the time the error occurred. * ignore - Continues the operation ignoring dbconfig-common errors. This will usually leave this package without a functional database.
Questo errore si verifica perché abbiamo abilitato la VALIDATE PASSWORD componente come descritto nella sezione intitolata "2.2 Modifica del metodo di autenticazione per l'utente root MySQL" nella guida all'installazione dello stack LEMP allegata sopra.
Per risolvere questo problema, devi disabilitare temporaneamente il componente Convalida password e riattivarlo dopo aver impostato la password per phymyadmin. Fai clic su OK per chiudere il messaggio di errore sopra riportato e scegli "abort" per annullare l'installazione di phpmyadmin.
Ora accedi al prompt di Mysql eseguendo il seguente comando:
$ mysql -u root -p
Dal prompt di mysql, sintonizza il seguente comando per disabilitare il plug-in Convalida password:
mysql> UNINSTALL COMPONENT "file://component_validate_password";
Tieni presente che il comando sopra disabiliterà solo il plug-in, ma non lo rimuoverà. Puoi abilitarlo in seguito. Quindi digita "exit" per uscire dal prompt di MySQL.
mysql> exit
Ora prova a installare di nuovo phpmyadmin usando il comando:
$ sudo apt install phpmyadmin
Scegli "Sì" e premi INVIO per configurare il database per phpmyadmin con dbconfig-common. Questa volta l'installazione di phpmyadmin funzionerà senza problemi.
Una volta installato phpmyadmin, riattiva il plug-in Convalida password. Per farlo, accedi al tuo prompt di MySQL:
$ mysql -u root -p
Dal prompt di mysql, sintonizza il seguente comando per disabilitare il plug-in Convalida password:
mysql> INSTALL COMPONENT "file://component_validate_password";
Digita exit per uscire dal prompt di mysql.
mysql> exit
Ora crea un collegamento simbolico per configurare il server web Nginx per eseguire phpmyadmin usando il comando:
$ sudo ln -s /usr/share/phpmyadmin/ /var/www/html/phpmyadmin
Questo comando creerà un collegamento simbolico chiamato "phpmyadmin" nella directory principale di Nginx. Questo collegamento simbolico in realtà punta alla directory /usr/share/phpmyadmin, dove sono archiviati i file effettivi.
Fatto! Abbiamo installato con successo PhpMyAdmin con lo stack LEMP.
Accedi alla dashboard di phpMyAdmin
Apri il tuo browser web e vai a "http://IP-Address/phpmyadmin" dalla barra degli indirizzi.
Dovresti vedere la pagina di accesso di phpmyadmin. Immettere l'utente del database e la relativa password:
Sarai soddisfatto della dashboard di phpMyAdmin.
Da qui puoi creare, eliminare e gestire database.
Crea un utente dedicato per accedere alla dashboard di phpMyAdmin
Una volta installato phpMyAdmin, un utente del database chiamato 'phpmyadmin' verrà creato automaticamente con la password amministrativa impostata durante l'installazione. Puoi accedere alla dashboard di phpmyAdmin utilizzando l'utente 'phpmyadmin' o mysql root utente come mostrato sopra. Tuttavia, si consiglia di creare un utente dedicato per gestire i database tramite l'interfaccia web di phpMyAdmin.
Per farlo, accedi alla shell di mysql usando il comando:
$ mysql -u root -p
Inserisci la tua password di root MySQL. Ora sarai nella shell di MySQL.
Immettere il comando seguente per creare un nuovo utente dedicato per phpmyadmin:
mysql> CREATE USER 'phpmyadminuser'@'localhost' IDENTIFIED BY 'Password123#@!';
Qui, phpmyadmin è il nuovo utente per l'accesso alla dashboard di phpmyadmin. La password per phpmyadminuser è Password123#@! . Sostituisci questi valori con i tuoi.
Quindi dai i privilegi appropriati a 'phpmyadminuser' usando il comando:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'phpmyadminuser'@'localhost' WITH GRANT OPTION;
Finalmente esci dalla shell di MySQL:
mysql> exit
Abbiamo ora creato un utente dedicato per la gestione dei database tramite l'interfaccia web di phpmyadmin. Andiamo avanti e accediamo alla dashboard di phpmyadmin.
Apri il browser web e vai a "http://IP-Address/phpayadmin. Inserisci l'utente del database appena creato e la sua password. Congratulazioni! Hai effettuato l'accesso con un utente dedicato alla dashboard web di phpMyAdmin.
Proteggi phpMyAdmin
Questa sezione fornisce alcuni suggerimenti per proteggere l'installazione di PhpMyAdmin. Tieni presente che i seguenti passaggi da soli non potrebbero proteggere phpMyAdmin al 100% sicuro. Tuttavia, rallenteranno almeno qualsiasi tentativo di un perpetratore di entrare nella dashboard di phpmyadmin.
Disabilita l'accesso root MySQL alla dashboard di phpmyadmin
Consentire all'utente root mysql di accedere al dashboard di phpMyAdmin non è sicuro, specialmente quando si gestiscono database in rete. Per questo abbiamo creato un utente dedicato nella sezione precedente. Dal momento che abbiamo già un utente dedicato, possiamo disabilitare in sicurezza il login root mysql per accedere alla dashboard di phpmyadmin per ridurre al minimo gli attacchi.
Generalmente, phpmyadmin è installato in /usr/share/phpmyadmin/ directory e i suoi file di configurazione sono archiviati in /etc/phpmyadmin directory.
Modifica il file di configurazione di phpmyadmin:
$ sudo nano /etc/phpmyadmin/config.inc.php
Aggiungi/modifica i seguenti parametri:
[...] $cfg['Servers'][$i]['auth_type'] = 'cookie'; $cfg['Servers'][$i]['AllowRoot'] = FALSE; [...]
Salva e chiudi il file.
Riavvia il server web Nginx usando il comando:
$ sudo systemctl restart nginx
Ora prova ad accedere a phpmyadmin come utente root. Riceverai l'Accesso negato messaggio di errore:
Modifica l'URL dell'interfaccia web di phpmyadmin
Questa è la tattica più comune seguita dai robot per accedere a phpmyadmin. Puoi impedirlo cambiando l'URL in qualcosa di difficile da indovinare. La modifica dell'URL di phpmyadmin eviterà che i bot o gli script automatici eseguano la scansione degli URL e gli attacchi di forza bruta.
Ricordi che abbiamo creato un collegamento simbolico chiamato "phpmyadmin" nella directory principale di Nginx?
$ ls -l /var/www/html/ total 8 -rw-r--r-- 1 root root 612 Jun 2 07:15 index.nginx-debian.html -rw-r--r-- 1 root root 20 Jun 2 07:35 info.php lrwxrwxrwx 1 root root 22 Jun 2 08:14 phpmyadmin -> /usr/share/phpmyadmin/
Qui, phpmyadmin è il collegamento simbolico che punta alla directory /usr/share/phpmyadmin.
Cambieremo il nome del collegamento simbolico usando il comando:
$ sudo mv /var/www/html/phpmyadmin /var/www/html/ostechnix
Assicurati che il nome contenga caratteri casuali e sia molto difficile da indovinare.
D'ora in poi, ogni volta che qualcuno tenta di accedere alla pagina phpmyadmin navigando su http://IP-Address/phpmyadmin URL, riceverà il seguente messaggio di errore:
Perché abbiamo cambiato l'URL. Il nuovo URL di phpmyadmin è http://indirizzo-IP/otechnix.
Pagina di accesso phpMyAdmin protetta da password
Possiamo aggiungere un ulteriore livello di sicurezza limitando l'accesso alla pagina di accesso di phpmyadmin con il metodo di autenticazione HTTP di base. Significato:abilitiamo la protezione con password per la pagina di accesso di phpmyadmin, quindi gli utenti dovranno inserire un nome utente/password aggiuntivo prima di accedere alla pagina di accesso effettiva di phpMyAdmin.
Innanzitutto, dobbiamo generare un file di password utilizzando htpasswd utilità. L'utilità htpasswd fa parte di apache2-utils pacchetto. Quindi installiamolo usando il comando:
$ sudo apt install apache2-utils
Ora crea un file di password crittografato con il comando:
$ sudo htpasswd -c /etc/nginx/.htpasswd ostechnix
Sostituisci "otechnix" con un nome utente a tua scelta. Immettere una password complessa due volte per generare il file della password.
Per visualizzare il contenuto del file appena generato, fai causa al comando "cat" come di seguito:
$ cat /etc/nginx/.htpasswd
Vedrai un output come di seguito:
ostechnix:$apr1$Us9YABHL$CMPDIuHaOB2lK/DVIzA2C/
Successivamente, dobbiamo menzionare il percorso del file di password sopra nel nostro file di configurazione predefinito Nginx. Se hai seguito il nostro tutorial di installazione LEMP allegato sopra, la configurazione Nginx predefinita dovrebbe essere /etc/nginx/sites-available/default .
Modifica il file di configurazione Nginx predefinito:
$ sudo nano /etc/nginx/sites-available/default
Aggiungi le seguenti righe, sotto la "posizione" blocco:
[...] location /ostechnix { auth_basic "Restricted Zone"; auth_basic_user_file /etc/nginx/.htpasswd; } [...]
Ricordi che abbiamo cambiato l'URL di phpMyAdmin (http://IP-Address/otechnix) nel passaggio precedente? Ecco perché ho menzionato il nome del blocco come "otechnix" nel blocco sopra. Sostituiscilo con il tuo. Salva e chiudi il file.
Controlla il file di configurazione di Nginx per eventuali errori di sintassi usando il comando:
$ sudo nginx -t
Risultato di esempio:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Se non vedi alcun errore, riavvia il servizio nginx per rendere effettive le modifiche.
$ sudo systemctl restart nginx
Ora prova ad accedere al tuo URL phpMyAdmin dal tuo browser. Ti verrà chiesto di inserire un nome utente e una password:
Immettere il nome utente e la password corretti che verranno creati in precedenza utilizzando l'utilità "htpasword". Ora verrai reindirizzato alla vera e propria pagina di accesso di phpMyAdmin, dove puoi inserire l'utente del database e la sua password per accedere alla dashboard web di phpMyAdmin.