Hur man installerar och säkrar phpMyAdmin med Apache på en CentOS 7-Server

introduktion

relationsdatabashanteringssystem som MySQL och MariaDB behövs för en betydande del av webbplatser och applikationer. Men inte alla användare känner sig bekväma att administrera sina data från kommandoraden.

för att lösa detta problem skapades ett projekt som heter phpMyAdmin för att erbjuda ett alternativ i form av ett webbaserat hanteringsgränssnitt. I den här guiden kommer vi att visa hur man installerar och säkrar en phpMyAdmin-konfiguration på en CentOS 7-server. Vi kommer att bygga denna inställning ovanpå Apache webbserver, den mest populära webbservern i världen.

förutsättningar

innan vi börjar finns det några krav som måste lösas.

för att säkerställa att du har en solid bas för att bygga detta system på, bör du gå igenom vår första serverinstallationsguide för CentOS 7. Detta kommer bland annat att leda dig genom att konfigurera en icke-root-användare med sudo – åtkomst för administrativa kommandon.

den andra förutsättningen som måste uppfyllas för att börja med den här guiden är att installera en LAMP (Linux, Apache, MariaDB och PHP) – stack på din CentOS 7-server. Detta är plattformen som vi kommer att använda för att betjäna vårt phpMyAdmin-gränssnitt (MariaDB är också databashanteringsprogramvaran som vi vill hantera). Om du ännu inte har en LAMP-installation på din server, följ vår handledning om installation av LAMP på CentOS 7.

när din server är i ett korrekt fungerande tillstånd efter att ha följt dessa guider kan du fortsätta med resten av den här sidan.

steg ett — Installera phpMyAdmin

med vår LAMP-plattform redan på plats kan vi börja direkt med att installera phpMyAdmin-programvaran. Tyvärr är phpMyAdmin inte tillgängligt i CentOS 7: s standardförvar.

för att få de paket vi behöver måste vi lägga till en extra repo till vårt system. EPEL repo (Extra paket för Enterprise Linux) innehåller många ytterligare paket, inklusive phpMyAdmin-paketet vi letar efter.

EPEL-arkivet kan göras tillgängligt för din server genom att installera ett specialpaket som heter epel-release. Detta konfigurerar om din förvaringslista och ger dig tillgång till EPEL-paketen.

för att installera, skriv bara:

sudo yum install epel-release

nu när EPEL repo är konfigurerad kan du installera phpMyAdmin-paketet med yum förpackningssystem genom att skriva:

sudo yum install phpmyadmin

installationen kommer nu att slutföras. Installationen inkluderade en Apache-konfigurationsfil som redan har införts. Vi måste ändra detta lite för att få det att fungera korrekt för vår installation.

öppna filen i din textredigerare nu så att vi kan göra några ändringar:

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

inuti ser vi några katalogblock med viss villkorlig logik för att förklara åtkomstpolicyn för vår katalog. Det finns två distinkta kataloger som definieras, och inom dessa konfigurationer som är giltiga för både Apache 2.2 och Apache 2.4 (som vi kör).

för närvarande är denna inställning konfigurerad för att neka åtkomst till någon anslutning som inte görs från själva servern. Eftersom vi arbetar på vår server på distans måste vi ändra några rader för att ange IP-adressen för din hemanslutning.

ändra alla rader som läser Require ip 127.0.0.1 eller Allow from 127.0.0.1 för att hänvisa till din HEMANSLUTNINGS IP-adress. Om du behöver hjälp med att hitta IP-adressen för din hemanslutning, kolla in nästa avsnitt. Det bör finnas fyra platser i filen som måste ändras:

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

när du är klar startar du om Apache-webbservern för att implementera dina ändringar genom att skriva:

sudo systemctl restart httpd.service

med det är vår phpMyAdmin-installation nu i drift. För att komma åt gränssnittet, gå till serverns domännamn eller offentliga IP-adress följt av /phpMyAdmin, i din webbläsare:

http://server_domain_or_IP/phpMyAdmin

phpMyAdmin inloggningsskärmen

för att logga in, använd ett användarnamn/lösenord par av en giltig MariaDB användare. root – användaren och MariaDB-administratörslösenordet är ett bra val för att komma igång. Du kommer då att kunna komma åt det administrativa gränssnittet:

phpMyAdmin admin interface

hitta din IP-adress

du måste känna till IP-adressen för datorn du använder för att komma åt dina databaser för att slutföra steget ovan. Detta är en säkerhetsåtgärd så att obehöriga inte kan ansluta till din server.

Obs: Detta är inte IP-adressen för din VPS, det är IP-adressen för ditt hem eller arbetsdator.

du kan ta reda på hur den större webben ser din IP-adress genom att besöka en av dessa webbplatser i din webbläsare:

  • Vad är min IP-adress?
  • Vad är min IP?
  • min IP-adress

jämför några olika webbplatser och se till att de alla ger dig samma värde. Använd detta värde i konfigurationsfilen ovan.

steg två — säkra din phpMyAdmin-instans

phpMyAdmin-instansen installerad på vår server bör vara helt användbar vid denna tidpunkt. Men genom att installera ett webbgränssnitt har vi utsatt vårt MySQL-system för omvärlden.

även med den medföljande autentiseringsskärmen är detta ett ganska problem. På grund av phpMyAdmin popularitet i kombination med den stora mängden data det ger tillgång till, installationer som dessa är vanliga mål för angripare.

vi kommer att genomföra två enkla strategier för att minska risken för att vår installation riktas och äventyras. Vi kommer att ändra platsen för gränssnittet från /phpMyAdmin till något annat för att kringgå några av de automatiska botbrute-force-försöken. Vi kommer också att skapa en ytterligare autentiseringsgateway på webbservernivå som måste skickas innan vi ens kommer till phpmyadmin-inloggningsskärmen.

ändra programmets Åtkomstplats

för att vår Apache-webbserver ska fungera med phpMyAdmin använder vår phpMyAdmin Apache-konfigurationsfil ett alias för att peka på katalogplatsen för filerna.

för att ändra webbadressen där vårt phpMyAdmin-gränssnitt kan nås behöver vi helt enkelt byta namn på aliaset. Öppna phpMyAdmin Apache konfigurationsfilen nu:

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

mot toppen av filen ser du två rader som ser ut så här:

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

dessa två rader är våra Alias, vilket innebär att om vi kommer åt vår webbplats domännamn eller IP-adress, följt av antingen /phpMyAdmin eller /phpmyadmin, kommer vi att serveras innehållet på /usr/share/phpMyAdmin.

vi vill inaktivera dessa specifika Alias eftersom de är starkt riktade mot bots och skadliga användare. Istället bör vi bestämma oss för vårt eget alias. Det ska vara lätt att komma ihåg, men inte lätt att gissa. Det bör inte ange syftet med URL-platsen. I vårt fall går vi med /nothingtosee.

för att tillämpa våra avsedda ändringar bör vi ta bort eller kommentera de befintliga raderna och lägga till våra egna:

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

när du är klar sparar du och stänger filen.

för att genomföra ändringarna, starta om webbtjänsten:

sudo systemctl restart httpd.service

om du nu går till den tidigare platsen för din phpMyAdmin-installation får du ett 404-fel:

http://server_domain_or_IP/phpMyAdmin

phpMyAdmin 404-fel

men ditt phpMyAdmin-gränssnitt kommer att finnas tillgängligt på den nya platsen vi valde:

http://server_domain_or_IP/nothingtosee

phpMyAdmin inloggningsskärm

ställa in en webbserver Autentiseringsgrind

nästa funktion vi ville ha för vår installation var en autentiseringsprompt som en användare skulle behöva passera innan han någonsin ser phpMyAdmin inloggningsskärmen.

lyckligtvis tillhandahåller de flesta webbservrar, inklusive Apache, denna förmåga naturligt. Vi behöver bara ändra vår Apache-konfigurationsfil för att använda en auktoriseringsfil.

öppna konfigurationsfilen phpMyAdmin Apache i din textredigerare igen:

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

inom katalogblocket /usr/share/phpMyAdmin, men utanför något av blocken inuti, måste vi lägga till ett åsidosättningsdirektiv. Det kommer att se ut så här:

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

detta gör att vi kan ange ytterligare konfigurationsdetaljer i en fil som heter .htaccess som finns i själva phpMyAdmin-katalogen. Vi kommer att använda den här filen för att ställa in vår lösenordsautentisering.

spara och stäng filen när du är klar.

starta om webbtjänsten för att genomföra denna ändring:

sudo systemctl restart httpd.service

skapa en .htaccess-fil

nu när vi har åsidosättningsdirektivet i vår konfiguration kommer Apache att leta efter en fil som heter .htaccess i katalogen /usr/share/phpMyAdmin. Om den hittar en, kommer den att använda direktiven i för att komplettera sina tidigare konfigurationsdata.

vårt nästa steg är att skapa .htaccess – filen i den katalogen. Använd din textredigerare för att göra det nu:

sudo nano /usr/share/phpMyAdmin/.htaccess

i den här filen måste vi ange följande information:

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

Låt oss gå igenom vad var och en av dessa linjer betyder:

  • AuthType Basic: Den här raden anger den autentiseringstyp som vi implementerar. Denna typ kommer att implementera lösenordsautentisering med en lösenordsfil.
  • AuthName: detta anger meddelandet för dialogrutan autentisering. Du bör behålla denna generiska så att obehöriga användare inte får kunskap om vad som skyddas.
  • AuthUserFile: detta anger platsen för den faktiska lösenordsfilen som ska användas för autentisering. Detta bör vara utanför de kataloger som serveras. Vi kommer att skapa den här filen på ett ögonblick.
  • Kräv giltig-användare: Detta anger att endast autentiserade användare ska få åtkomst till den här resursen. Detta är vad som faktiskt hindrar obehöriga användare från att komma in.

när du är klar med att ange denna information, Spara och stäng filen.

skapa lösenordsfilen för autentisering

nu när vi har angett platsen för vår lösenordsfil genom att använda AuthUserFile – direktivet i vår .htaccess – fil måste vi skapa och fylla i lösenordsfilen.

detta kan åstadkommas genom användning av ett Apache-verktyg som heter htpasswd. Vi åberopar kommandot genom att skicka det till platsen där vi vill skapa filen och användarnamnet vi vill ange autentiseringsuppgifter för:

sudo htpasswd -c /etc/httpd/pma_pass username

flaggan -c indikerar att detta kommer att skapa en initial fil. Katalogplatsen är sökvägen och filnamnet som ska användas för filen. Användarnamnet är den första användaren vi vill lägga till. Du kommer att uppmanas att ange och bekräfta ett lösenord för användaren.

om du vill lägga till ytterligare användare för att autentisera kan du ringa samma kommando igen utan -c – flaggan och med ett nytt användarnamn:

sudo htpasswd /etc/httpd/pma_pass seconduser

med vår lösenordsfil skapad har en autentiseringsgateway implementerats och vi bör nu se en lösenordsprompt nästa gång vi besöker vår webbplats:

http://server_domain_or_IP/nothingtosee

Apache-autentiseringssida

när du har angett dina referenser kommer du till den normala phpMyAdmin-inloggningssidan. Detta extra lager av skydd hjälper till att hålla dina MySQL-loggar rena för autentiseringsförsök utöver den extra säkerhetsfördelen.

slutsats

du kan nu hantera dina MySQL-databaser från ett rimligt säkert webbgränssnitt. Detta användargränssnitt exponerar det mesta av funktionaliteten som är tillgänglig från MySQL-kommandotolken. Du kan visa databaser och schema, köra frågor och skapa nya datamängder och strukturer.

You might also like

Lämna ett svar

Din e-postadress kommer inte publiceras.