Så här installerar du phpMyAdmin säkert

0
148

phpMyAdmin är ett bra verktyg för att hantera en MySQL -databas, men ge åtkomst till din databas bakom ett webbgränssnitt är ett stort säkerhetsproblem. Här är några sätt att minska riskerna med att köra phpMyAdmin.

Varför är phpMyAdmin ett säkerhetsproblem?

Vanligtvis har du en databas som körs på din server och endast accepterar anslutningar från localhost eller kanske från en annan betrodd server. Om du hade ett program som också körs på den servern skulle det kommunicera direkt. Det finns inget sätt för en angripare att få åtkomst utan att spricka in i hela servern.

phpMyAdmin kringgår detta för att ge dig ett webbgränssnitt för att hantera din databas. Det är ett mycket användbart verktyg, men det är en katastrof för säkerheten. phpMyAdmin har fullständig obegränsad åtkomst till din databas, eftersom den är avsedd att ersätta kommandorads direktåtkomst. Om en angripare får åtkomst till webbpanelen har de tillgång till allt. Och phpMyAdmin skyddas vanligtvis bara med ett enkelt lösenord.

Installera phpMyAdmin och Secure MySQL

phpMyAdmin körs på LAMP-stacken (Linux, Apache, MySQL, PHP). Innan du ens börjar installera phpMyAdmin, bör din instans av MySQL vara säker. MySQL är ett praktiskt verktyg för att utföra några grundläggande säkerhetsuppgifter:

sudo mysql_secure_installation

Detta leder dig genom att ändra rotlösenordet, inaktivera fjärrloggningar och ta bort testdatabasen.

Annonsering
< p>Efter det kan du installera phpMyAdmin som vanligt. Under installationen kommer du att bli ombedd att ange ett lösenord för databasens administratörsanvändare (som du borde ha ställt in under mysql_secure_installation) och ett nytt lösenord för att säkra phpMyAdmin med. Se till att lösenordet är långt och säkert, eftersom det är den sista försvarspunkten innan angripare kan få åtkomst.

Helst skulle dock ingen angripare ens få chansen att gissa ditt lösenord, så du vill lägga phpMyAdmin bakom något annat så att du kan säkra det ytterligare.

Alternativ 1: Lås ner Apache och använd SSH-port vidarebefordran

Detta är det säkraste alternativet, men det är bara riktigt lämpligt för enanvändares åtkomst, särskilt för enstaka användare som har fullständig administrativ åtkomst till hela servern, eftersom det kräver att du ansluter via SSH.

Vidarebefordran av SSH -port är en metod för att vidarebefordra lokala portar till ett fjärrsystem. Till exempel skulle du ha Apache igång på din server och lyssna på port 80. Om du tunnlar den porten kan du komma åt den genom att gå till:

https: //localhost: 80/

… i vilken webbläsare som helst. På ett sätt är det nästan som att Apache körs på ditt system. Men port 80 behöver inte vara öppen på din server; all trafik dirigeras genom standardporten 22 som används för SSH. Du måste se till att SSH är säkrat med SSH -nycklar och helst inte körs på standardporten, eftersom denna metod bara är lika säker som din SSH -anslutning.

För att göra detta måste du binda Apache till localhost och se till att det inte är öppet för internet. Öppna /etc/apache2/ports.conf och ändra de tre lyssningsuttalanden till att bara lyssna på localhost (aka 127.0.0.1):

Lyssna 127.0.0.1:80 & lt; IfModule ssl_module & gt; Lyssna 127.0.0.1:443 & lt;/IfModule & gt; & lt; IfModule mod_gnutls & gt; Lyssna 127.0.0.1:443 & lt;/IfModule & gt;

Starta om Apache med:

sudo service apache2 restart Advertisement

Och phpMyAdmin ska vara otillgängligt. Detta förväntas. När Apache har konfigurerats kan du tunnelport 80 med hjälp av följande kommando:

ssh -L 80: localhost: 80 user@server

Sedan kan du komma åt phpMyAdmin från localhost: 80 i valfri webbläsare. Samtidigt kan din server konfigureras med en strikt brandvägg för att tillåta allt utom SSH.

Om ssh inte kan binda till port 80, försök ändra den första porten till ett annat nummer och få åtkomst därifrån på localhost. Den kommer fortfarande att tunnla till port 80 på fjärrmaskinen. Denna anslutning upprätthålls tills du avslutar ssh. Om du vill köra den i bakgrunden använder du -f -flaggan.

Om du bara vill att phpMyAdmin ska lyssna på localhost kan du istället redigera /etc/apache2/conf-enabled/phpmyadmin.conf och lägg till följande rader i katalogblocket:

Orderneka, tillåt Neka från alla Tillåt från 127.0.0.1

Detta kommer att neka allt utom localhost att komma åt phpMyAdmin-installationen, även om du fortfarande kommer att behöva port 80 öppen i din brandvägg för att tillåta vanlig trafik.

Alternativ 2: Lås ner Apache och använd ett VPN

Om du behöver tillåta åtkomst till flera personer utan att ge SSH -åtkomst kan du ställa in Apache för att lyssna på maskinens privata IP -adress och endast acceptera anslutningar från samma moln. Detta fungerar särskilt bra med tjänster som AWS VPC, där varje server du startar skapas i ett virtuellt nätverk.

Annonsering

För att hitta din privata IP kan du köra ifconfig och leta efter inet -adressen på ditt primära nätverkskort:

Den här adressen syns också från AWS EC2 -konsolen. När du har kopierat adressen öppnar du /etc/apache2/ports.conf och redigerar de tre lyssningsdirektiven för att lyssna på den privata IP:

Lyssna 172.31.87.118:8 & lt; IfModule ssl_module & gt; Lyssna 172.31.87.118:443 & lt;/IfModule & gt; & lt; IfModule mod_gnutls & gt; Lyssna 172.31.87.118:443 & lt;/IfModule & gt;

Alternativt, om du bara vill säkra phpMyAdmin kan du redigera /etc/apache2/conf-enabled/phpmyadmin.conf och bara tillåta från den privata IP:

Beställ neka, tillåt Neka från alla Tillåt från 172.31. 87.118

Och starta om Apache.

För att komma åt phpMyAdmin måste du konfigurera en VPN -server som OpenVPN. Detta gör att du kan tunnla din klientdator till det virtuella privata molnet som dina webbservrar körs i och få åtkomst till servern som kör phpMyAdmin på den privata IP -adressen som om du vore en annan server. Naturligtvis måste du konfigurera dina brandväggsinställningar för att tillåta åtkomst från OpenVPN-servern till phpMyAdmin-instansen.

Alternativ 3: Secure Apache med HTTPS och grundläggande autentisering

Om du verkligen behöver använda offentlig DNS och ha din server tillgänglig kan du använda grundläggande autentisering med Apache. Detta är helt enkelt ett annat lösenord framför phpMyAdmin som hindrar utomstående från att göra några förfrågningar till phpMyAdmin -programmet. Du kan använda detta tillsammans med de andra alternativen på den här listan, eftersom det bara är ett extra försvarsskikt.

Skapa en ny lösenordsfil med htpasswd, som redan bör installeras tillsammans med Apache (om inte , det finns i apache2-utils):

sudo htpasswd /etc/apache2/.htpasswd phpadmin Annons

Detta låter dig ställa in ett nytt lösenord för användarens phpadmin och lagra det i/etc /apache2/.htpasswd.

Öppna /etc/apache2/conf-enabled/phpmyadmin.conf och konfigurera den för att använda Basic-verifiering med den nyskapade lösenordsfilen:

AuthType Basic AuthName ” Begränsat innehåll “AuthUserFile /etc/apache2/.htpasswd Kräv giltig användare

Starta om Apache med:

sudo service apache2 restart

Och när du försöker komma åt phpMyAdmin i din webbläsare kommer du att vara bad om ett användarnamn och lösenord. Ange phpadmin och lösenordet du skapade, så ska du få åtkomst. Annars är allt du ser ett 401 obehörigt svar.