Come installare phpMyAdmin in modo sicuro

0
61

phpMyAdmin è un ottimo strumento per la gestione di un database MySQL, ma consente l'accesso a il tuo database dietro un'interfaccia web è un grave problema di sicurezza. Ecco alcuni modi per mitigare i rischi legati all'esecuzione di phpMyAdmin.

Perché phpMyAdmin è un problema di sicurezza?

Di solito, avresti un database che verrebbe eseguito sul tuo server e accetterebbe solo connessioni da localhost o forse da un altro server attendibile. Se anche tu avessi un'applicazione in esecuzione su quel server, comunicherebbe direttamente. Non c'è modo per un utente malintenzionato di ottenere l'accesso se non per violare l'intero server.

phpMyAdmin lo aggira per fornirti un'interfaccia web per la gestione del tuo database. È uno strumento molto utile, ma è un disastro per la sicurezza. phpMyAdmin ha accesso completo e illimitato al tuo database, poiché è destinato a sostituire l'accesso diretto dalla riga di comando. Se un utente malintenzionato ottiene l'accesso al pannello Web, avrà accesso a tutto. E phpMyAdmin di solito è protetto solo con una semplice password.

Installa phpMyAdmin e Secure MySQL

phpMyAdmin viene eseguito sullo stack LAMP (Linux, Apache, MySQL, PHP). Prima ancora di iniziare a installare phpMyAdmin, la tua istanza di MySQL dovrebbe essere sicura. MySQL fornisce una pratica utility per eseguire alcune attività di sicurezza di base:

sudo mysql_secure_installation

Questo ti guiderà attraverso la modifica della password di root, la disabilitazione degli accessi remoti e la rimozione del database di prova.

Annuncio
< p>Successivamente, puoi installare phpMyAdmin come al solito. Durante l'installazione, ti verrà richiesta una password dell'utente amministratore del database (che dovresti aver impostato durante mysql_secure_installation) e una nuova password con cui proteggere phpMyAdmin. Assicurati che questa password sia lunga e sicura, poiché è l'ultimo punto di difesa prima che gli aggressori possano accedere.

Idealmente, però, nessun utente malintenzionato dovrebbe nemmeno avere la possibilità di indovinare la tua password, quindi ti consigliamo di mettere phpMyAdmin dietro qualcos'altro in modo da poterlo proteggere ulteriormente.

Opzione 1: bloccare Apache e utilizzare il port forwarding SSH

Questa è l'opzione più sicura, ma è davvero adatta solo per l'accesso di un singolo utente, in particolare per i singoli utenti che dispongono di funzioni amministrative complete accesso all'intero server, poiché richiede la connessione tramite SSH.

Il port forwarding SSH è un metodo per inoltrare le porte locali a un sistema remoto. Ad esempio, avresti Apache in esecuzione sul tuo server, in ascolto sulla porta 80. Se hai eseguito il tunneling di quella porta, puoi accedervi andando a:

https://localhost:80/

… in qualsiasi browser web. In un certo senso, è quasi come se Apache fosse in esecuzione sul tuo sistema. Ma la porta 80 non deve essere aperta sul tuo server; tutto il traffico viene instradato attraverso la porta standard 22 utilizzata per SSH. Dovrai assicurarti che SSH sia protetto con chiavi SSH e idealmente non sia in esecuzione sulla porta standard, poiché questo metodo è sicuro solo quanto lo è la tua connessione SSH.

Per fare ciò, dovrai associare Apache a localhost e assicurarti che non sia aperto a Internet. Apri /etc/apache2/ports.conf e modifica le tre istruzioni di ascolto per ascoltare solo su localhost (alias 127.0.0.1):

Listen 127.0.0.1:80 <IfModule ssl_module> Ascolta 127.0.0.1:443 </IfModule> <IfModule mod_gnutls> Ascolta 127.0.0.1:443 </IfModule>

Riavvia Apache con:

sudo service apache2 restart Annuncio

E phpMyAdmin dovrebbe essere inaccessibile. Questo è previsto. Una volta configurato Apache, puoi eseguire il tunneling della porta 80 utilizzando il seguente comando:

ssh -L 80:localhost:80 user@server

Quindi, puoi accedere a phpMyAdmin da localhost:80 in qualsiasi browser web. Nel frattempo, il tuo server può essere configurato con un firewall rigoroso per non consentire tutto tranne SSH.

Se ssh non riesce a collegarsi alla porta 80, prova a cambiare la prima porta con un numero diverso e ad accedervi da lì su localhost. Eseguirà ancora il tunneling alla porta 80 sulla macchina remota. Questa connessione viene mantenuta fino all'uscita da ssh. Se vuoi eseguirlo in background, usa il flag -f.

Se vuoi che phpMyAdmin sia in ascolto solo su localhost, puoi invece modificare /etc/apache2/conf-enabled/phpmyadmin.conf e aggiungi le seguenti righe al blocco Directory:

Ordina nega, consenti Nega da tutti Consenti da 127.0.0.1

Ciò impedirà a qualsiasi cosa tranne a localhost di accedere all'installazione di phpMyAdmin, anche se avrai ancora bisogno della porta 80 aperta nel tuo firewall per consentire il traffico regolare.

Opzione 2: Blocca Apache e usa una VPN

Se devi consentire l'accesso a più persone senza concedere l'accesso SSH, puoi configurare Apache in modo che ascolti sull'IP privato della tua macchina e accetti solo connessioni da la stessa nuvola. Funziona particolarmente bene con servizi come AWS VPC, in cui ogni server che avvii viene creato in una rete virtuale.

Pubblicità

Per trovare il tuo IP privato, puoi eseguire ifconfig e cercare l'indirizzo inet sulla tua scheda di rete principale:

Questo indirizzo è visibile anche dalla console AWS EC2. Una volta copiato l'indirizzo, apri /etc/apache2/ports.conf e modifica le tre direttive Listen per ascoltare sull'IP privato:

Ascolta 172.31.87.118:8 <IfModule ssl_module> Ascolta 172.31.87.118:443 </IfModule> <IfModule mod_gnutls> Ascolta 172.31.87.118:443 </IfModule>

In alternativa, se vuoi solo proteggere phpMyAdmin puoi modificare /etc/apache2/conf-enabled/phpmyadmin.conf e consentire solo dall'IP privato:

Ordina nega, consenti Nega da tutti Consenti da 172.31. 87.118

E riavvia Apache.

Ora, per accedere a phpMyAdmin, dovrai configurare un server VPN come OpenVPN. Ciò ti consentirà di incanalare il tuo computer client nel cloud privato virtuale in cui sono in esecuzione i tuoi server Web e di accedere al server che esegue phpMyAdmin sull'IP privato come se fossi un altro server. Ovviamente, dovrai configurare le impostazioni del firewall per consentire l'accesso dal server OpenVPN all'istanza phpMyAdmin.

Opzione 3: Secure Apache con HTTPS e autenticazione di base

Se hai davvero bisogno di usare il DNS pubblico e avere il tuo server accessibile, puoi usare l'autenticazione di base con Apache. Questa è semplicemente un'altra password davanti a phpMyAdmin che impedisce agli estranei di effettuare richieste all'applicazione phpMyAdmin. Puoi usarlo insieme alle altre opzioni in questo elenco, in quanto è solo un ulteriore livello di difesa.

Crea un nuovo file di password con htpasswd, che dovrebbe essere già installato insieme ad Apache (se non , è in apache2-utils):

sudo htpasswd /etc/apache2/.htpasswd phpadmin Advertisement

Questo ti permette di impostare una nuova password per l'utente phpadmin e di memorizzarla in /etc /apache2/.htpasswd.

Apri /etc/apache2/conf-enabled/phpmyadmin.conf e configuralo per utilizzare l'autenticazione di base con il file di password appena creato:

AuthType Basic AuthName ” Contenuto limitato” AuthUserFile /etc/apache2/.htpasswd Richiedi valida-user

Riavvia Apache con:

sudo service apache2 restart

E quando proverai ad accedere a phpMyAdmin nel tuo browser, sarai chiesto un nome utente e una password. Inserisci phpadmin e la password che hai creato e ti dovrebbe essere consentito l'accesso. In caso contrario, vedrai solo una risposta 401 Non autorizzato.