Come installare e proteggere phpMyAdmin con Apache su un server CentOS 7

Introduzione

Sistemi di gestione di database relazionali come MySQL e MariaDB sono necessari per una parte significativa di siti web e applicazioni. Tuttavia, non tutti gli utenti si sentono a proprio agio nell’amministrare i propri dati dalla riga di comando.

Per risolvere questo problema, è stato creato un progetto chiamato phpMyAdmin al fine di offrire un’alternativa sotto forma di un’interfaccia di gestione basata sul web. In questa guida, dimostreremo come installare e proteggere una configurazione phpMyAdmin su un server CentOS 7. Costruiremo questa configurazione in cima al server web Apache, il server web più popolare al mondo.

Prerequisiti

Prima di iniziare, ci sono alcuni requisiti che devono essere risolti.

Per assicurarsi di avere una solida base su cui costruire questo sistema, è necessario eseguire la nostra guida all’installazione iniziale del server per CentOS 7. Tra le altre cose, questo ti guiderà attraverso la configurazione di un utente non root con accesso sudo per i comandi amministrativi.

Il secondo prerequisito che deve essere soddisfatto per iniziare su questa guida è installare uno stack LAMP (Linux, Apache, MariaDB e PHP) sul tuo server CentOS 7. Questa è la piattaforma che useremo per servire la nostra interfaccia phpMyAdmin (MariaDB è anche il software di gestione del database che vogliamo gestire). Se non hai ancora un’installazione di LAMP sul tuo server, segui il nostro tutorial sull’installazione di LAMP su CentOS 7.

Quando il server è in uno stato correttamente funzionante dopo aver seguito queste guide, è possibile continuare con il resto di questa pagina.

Fase uno-Installare phpMyAdmin

Con la nostra piattaforma LAMP già in atto, possiamo iniziare subito con l’installazione del software phpMyAdmin. Sfortunatamente, phpMyAdmin non è disponibile nel repository predefinito di CentOS 7.

Per ottenere i pacchetti di cui abbiamo bisogno, dovremo aggiungere un repository aggiuntivo al nostro sistema. Il repository EPEL (Pacchetti extra per Enterprise Linux) contiene molti pacchetti aggiuntivi, incluso il pacchetto phpMyAdmin che stiamo cercando.

Il repository EPEL può essere reso disponibile al server installando un pacchetto speciale chiamato epel-release. Questo riconfigurerà il tuo elenco di repository e ti darà accesso ai pacchetti EPEL.

Per installare, basta digitare:

sudo yum install epel-release

Ora che il repository EPEL è configurato, è possibile installare il pacchetto phpMyAdmin utilizzando il sistema di pacchettizzazione yum digitando:

sudo yum install phpmyadmin

L’installazione sarà ora completata. L’installazione includeva un file di configurazione di Apache che è già stato messo in atto. Avremo bisogno di modificare questo un po ‘ per farlo funzionare correttamente per la nostra installazione.

Apri il file nel tuo editor di testo ora in modo che possiamo apportare alcune modifiche:

sudo nano /etc/httpd/conf.d/phpMyAdmin.conf

All’interno, vediamo alcuni blocchi di directory con una logica condizionale per spiegare la politica di accesso per la nostra directory. Ci sono due directory distinte che sono definite, e all’interno di queste, configurazioni che saranno valide sia per Apache 2.2 che per Apache 2.4 (che stiamo eseguendo).

Attualmente, questa configurazione è configurata per negare l’accesso a qualsiasi connessione non effettuata dal server stesso. Dal momento che stiamo lavorando sul nostro server in remoto, abbiamo bisogno di modificare alcune righe per specificare l’indirizzo IP della vostra connessione di casa.

Modificare tutte le righe che leggono Require ip 127.0.0.1 o Allow from 127.0.0.1 per fare riferimento all’indirizzo IP della connessione domestica. Se hai bisogno di aiuto per trovare l’indirizzo IP della tua connessione domestica, controlla la sezione successiva. Ci dovrebbero essere quattro posizioni nel file che devono essere modificate:

. . .Require ip your_workstation_IP_address. . .Allow from your_workstation_IP_address. . .Require ip your_workstation_IP_address. . .Allow from your_workstation_IP_address. . .

Al termine, riavviare il server Web Apache per implementare le modifiche digitando:

sudo systemctl restart httpd.service

Con questo, la nostra installazione phpMyAdmin è ora operativa. Per accedere all’interfaccia, vai al nome di dominio o all’indirizzo IP pubblico del tuo server seguito da /phpMyAdmin, nel tuo browser Web:

http://server_domain_or_IP/phpMyAdmin

Schermata di accesso phpMyAdmin

Per accedere, utilizzare una coppia nome utente/password di un utente MariaDB valido. L’utente root e la password amministrativa MariaDB sono una buona scelta per iniziare. Sarà quindi possibile accedere all’interfaccia amministrativa:

phpMyAdmin admin interface

Trova il tuo indirizzo IP

Dovrai conoscere l’indirizzo IP del computer che stai utilizzando per accedere ai tuoi database per completare il passaggio precedente. Questa è una precauzione di sicurezza in modo che le persone non autorizzate non possano connettersi al server.

Nota: Questo non è l’indirizzo IP del tuo VPS, è l’indirizzo IP del tuo computer di casa o di lavoro.

Puoi scoprire come the greater web vede il tuo indirizzo IP visitando uno di questi siti nel tuo browser web:

  • Qual è il mio indirizzo IP?
  • Qual è il mio IP?
  • Il mio indirizzo IP

Confronta alcuni siti diversi e assicurati che tutti ti diano lo stesso valore. Utilizzare questo valore nel file di configurazione sopra.

Fase due — Proteggi la tua istanza phpMyAdmin

L’istanza phpMyAdmin installata sul nostro server dovrebbe essere completamente utilizzabile a questo punto. Tuttavia, installando un’interfaccia web, abbiamo esposto il nostro sistema MySQL al mondo esterno.

Anche con la schermata di autenticazione inclusa, questo è un bel problema. A causa della popolarità di phpMyAdmin combinata con la grande quantità di dati a cui fornisce accesso, installazioni come queste sono obiettivi comuni per gli aggressori.

Implementeremo due semplici strategie per ridurre le possibilità che la nostra installazione venga mirata e compromessa. Cambieremo la posizione dell’interfaccia da /phpMyAdmin a qualcos’altro per eludere alcuni dei tentativi automatici di forza bruta del bot. Creeremo anche un ulteriore gateway di autenticazione a livello di server Web che deve essere passato prima ancora di arrivare alla schermata di accesso phpMyAdmin.

Modifica della posizione di accesso dell’applicazione

Affinché il nostro server Web Apache funzioni con phpMyAdmin, il nostro file di configurazione Apache phpMyAdmin utilizza un alias per indicare la posizione della directory dei file.

Per modificare l’URL in cui è possibile accedere alla nostra interfaccia phpMyAdmin, è sufficiente rinominare l’alias. Aprire il file di configurazione di phpMyAdmin Apache ora:

sudo nano /etc/httpd/conf.d/phpMyAdmin.conf

Verso la parte superiore del file, vedrete due linee che assomigliano a questo:

Alias /phpMyAdmin /usr/share/phpMyAdminAlias /phpmyadmin /usr/share/phpMyAdmin

Queste due righe sono i nostri alias, il che significa che se accediamo al nome di dominio o all’indirizzo IP del nostro sito, seguito da /phpMyAdmin o /phpmyadmin, ci verrà fornito il contenuto su /usr/share/phpMyAdmin.

Vogliamo disabilitare questi alias specifici poiché sono pesantemente presi di mira da bot e utenti malintenzionati. Invece, dovremmo decidere il nostro alias. Dovrebbe essere facile da ricordare, ma non facile da indovinare. Non dovrebbe indicare lo scopo della posizione dell’URL. Nel nostro caso, andremo con /nothingtosee.

Per applicare le modifiche previste, dovremmo rimuovere o commentare le righe esistenti e aggiungere le nostre:

# Alias /phpMyAdmin /usr/share/phpMyAdmin# Alias /phpmyadmin /usr/share/phpMyAdminAlias /nothingtosee /usr/share/phpMyAdmin

Al termine, salvare e chiudere il file.

Per implementare le modifiche, riavviare il servizio web:

sudo systemctl restart httpd.service

Ora, se vai alla posizione precedente dell’installazione di phpMyAdmin, otterrai un errore 404:

http://server_domain_or_IP/phpMyAdmin

Errore phpMyAdmin 404

Tuttavia, l’interfaccia phpMyAdmin sarà disponibile nella nuova posizione selezionata:

http://server_domain_or_IP/nothingtosee

Schermata di accesso phpMyAdmin

Impostazione di un Web Server Authentication Gate

La prossima funzionalità che volevamo per la nostra installazione era un prompt di autenticazione che un utente sarebbe stato richiesto di passare prima di vedere la schermata di accesso phpMyAdmin.

Fortunatamente, la maggior parte dei server Web, incluso Apache, fornisce questa funzionalità in modo nativo. Avremo solo bisogno di modificare il nostro file di configurazione di Apache per utilizzare un file di autorizzazione.

Apri di nuovo il file di configurazione di phpMyAdmin Apache nell’editor di testo:

sudo nano /etc/httpd/conf.d/phpMyAdmin.conf

All’interno del blocco di directory /usr/share/phpMyAdmin, ma al di fuori di uno qualsiasi dei blocchi all’interno, dobbiamo aggiungere una direttiva di override. Sarà simile a questo:

. . .<Directory /usr/share/phpMyAdmin/> AllowOverride All <IfModule mod_authz_core.c> . . .</Directory>. . .

Questo ci permetterà di specificare ulteriori dettagli di configurazione in un file chiamato .htaccess situato all’interno della directory phpMyAdmin stessa. Useremo questo file per impostare la nostra autenticazione della password.

Salva e chiudi il file quando hai finito.

Riavviare il servizio web per implementare questa modifica:

sudo systemctl restart httpd.service

Creare un .htaccess File

Ora che abbiamo la direttiva override nella nostra configurazione, Apache cercherà un file chiamato .htaccess all’interno della directory /usr/share/phpMyAdmin. Se ne trova uno, userà le direttive contenute all’interno per integrare i suoi dati di configurazione precedenti.

Il nostro prossimo passo è creare il file .htaccess all’interno di quella directory. Usa il tuo editor di testo per farlo ora:

sudo nano /usr/share/phpMyAdmin/.htaccess

All’interno di questo file, abbiamo bisogno di inserire le seguenti informazioni:

AuthType BasicAuthName "Admin Login"AuthUserFile /etc/httpd/pma_passRequire valid-user

Andiamo oltre ciò che ciascuna di queste righe significano:

  • AuthType Base: Questa riga specifica il tipo di autenticazione che stiamo implementando. Questo tipo implementerà l’autenticazione della password utilizzando un file di password.
  • AuthName: imposta il messaggio per la finestra di dialogo autenticazione. Dovresti mantenere questo generico in modo che gli utenti non autorizzati non acquisiscano conoscenza su ciò che viene protetto.
  • AuthUserFile: imposta la posizione del file di password effettivo che verrà utilizzato per l’autenticazione. Questo dovrebbe essere al di fuori delle directory che vengono servite. Creeremo questo file in un momento.
  • Richiede valid-user: Specifica che solo gli utenti autenticati devono avere accesso a questa risorsa. Questo è ciò che in realtà impedisce agli utenti non autorizzati di entrare.

Quando hai finito di inserire queste informazioni, salva e chiudi il file.

Creare il file di password per l’autenticazione

Ora che abbiamo specificato la posizione per il nostro file di password attraverso l’uso della direttiva AuthUserFile nel nostro file .htaccess, abbiamo bisogno di creare e popolare il file di password.

Questo può essere realizzato attraverso l’uso di un’utilità Apache chiamata htpasswd. Invochiamo il comando passandogli la posizione in cui vorremmo creare il file e il nome utente per cui vorremmo inserire i dettagli di autenticazione:

sudo htpasswd -c /etc/httpd/pma_pass username

Il flag -c indica che questo creerà un file iniziale. La posizione della directory è il percorso e il nome del file che verranno utilizzati per il file. Il nome utente è il primo utente che vorremmo aggiungere. Ti verrà richiesto di inserire e confermare una password per l’utente.

Se si desidera aggiungere altri utenti per l’autenticazione, è possibile chiamare nuovamente lo stesso comando senza il flag -c e con un nuovo nome utente:

sudo htpasswd /etc/httpd/pma_pass seconduser

Con il nostro file di password creato, è stato implementato un gateway di autenticazione e ora dovremmo vedere una richiesta di password la prossima volta che visitiamo il nostro sito:

http://server_domain_or_IP/nothingtosee

Apache authentication page

Una volta inserite le credenziali, verrete indirizzati alla normale pagina di login di phpMyAdmin. Questo ulteriore livello di protezione aiuterà a mantenere i registri MySQL puliti dai tentativi di autenticazione oltre al vantaggio di sicurezza aggiunto.

Conclusione

È ora possibile gestire i database MySQL da un’interfaccia web ragionevolmente sicuro. Questa interfaccia utente espone la maggior parte delle funzionalità disponibili dal prompt dei comandi MySQL. È possibile visualizzare database e schemi, eseguire query e creare nuovi set di dati e strutture.

You might also like

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.