Introduction
relationele database management systemen zoals MySQL en MariaDB zijn nodig voor een groot deel van de websites en applicaties. Echter, niet alle gebruikers voelen zich comfortabel beheren van hun gegevens vanaf de opdrachtregel.
om dit probleem op te lossen, werd een project genaamd phpMyAdmin gemaakt om een alternatief te bieden in de vorm van een webgebaseerde beheerinterface. In deze gids laten we zien hoe je een phpMyAdmin configuratie op een CentOS 7 server kunt installeren en beveiligen. We bouwen deze setup bovenop de Apache webserver, de meest populaire webserver ter wereld.
Prerequisites
voordat we beginnen, zijn er een paar vereisten die moeten worden afgewikkeld.
om er zeker van te zijn dat u een solide basis hebt om dit systeem op te bouwen, moet u onze eerste server setup guide voor CentOS 7 doorlopen. Dit zal u onder andere helpen bij het opzetten van een niet-root gebruiker met sudo
toegang voor administratieve commando ‘ s.
de tweede voorwaarde waaraan moet worden voldaan om te beginnen met deze gids is het installeren van een LAMP (Linux, Apache, MariaDB, en PHP) stack op uw CentOS 7 server. Dit is het platform dat we zullen gebruiken om onze phpMyAdmin interface te bedienen (MariaDB is ook de database management software die we willen beheren). Als je nog geen LAMP installatie op je server hebt, volg dan onze tutorial over het installeren van LAMP op CentOS 7.
wanneer uw server in een goede staat is na het volgen van deze hulplijnen, kunt u doorgaan met de rest van deze pagina.
stap één – installeer phpMyAdmin
met ons LAMP platform al op zijn plaats, kunnen we meteen beginnen met het installeren van de phpMyAdmin software. Helaas is phpMyAdmin niet beschikbaar in de standaard repository van CentOS 7.
om de pakketten te krijgen die we nodig hebben, moeten we een extra repo aan ons systeem toevoegen. De EPEL repo (Extra pakketten voor Enterprise Linux) bevat veel extra pakketten, waaronder het phpMyAdmin pakket dat we zoeken.
de EPEL repository kan beschikbaar worden gesteld aan uw server door een speciaal pakket genaamd epel-release
te installeren. Dit zal je repository lijst opnieuw configureren en je toegang geven tot de EPEL pakketten.
om te installeren, typ gewoon:
sudo yum install epel-release
nu de EPEL repo is geconfigureerd, kunt u het phpMyAdmin-pakket installeren met behulp van het yum
verpakkingssysteem door te typen:
sudo yum install phpmyadmin
de installatie is nu voltooid. De installatie bevatte een Apache configuratiebestand dat al is geïnstalleerd. We zullen dit een beetje moeten aanpassen om het correct te laten werken voor onze installatie.
Open het bestand nu in uw teksteditor zodat we enkele wijzigingen kunnen aanbrengen:
sudo nano /etc/httpd/conf.d/phpMyAdmin.conf
binnenin zien we een aantal directory blokken met een aantal voorwaardelijke logica om het toegangsbeleid voor onze directory uit te leggen. Er zijn twee verschillende mappen die gedefinieerd zijn, en binnen deze, configuraties die geldig zijn voor zowel Apache 2.2 en Apache 2.4 (die we draaien).
momenteel is deze instelling geconfigureerd om toegang te weigeren tot elke verbinding die niet wordt gemaakt vanaf de server zelf. Omdat we op afstand aan onze server werken, moeten we enkele regels aanpassen om het IP-adres van uw thuisverbinding op te geven.
Wijzig alle regels die Require ip 127.0.0.1
of Allow from 127.0.0.1
lezen naar het IP-adres van uw thuisverbinding. Als je hulp nodig hebt bij het vinden van het IP-adres van je thuisverbinding, ga dan naar de volgende sectie. Er moeten vier locaties in het bestand die moeten worden gewijzigd:
. . .Require ip your_workstation_IP_address. . .Allow from your_workstation_IP_address. . .Require ip your_workstation_IP_address. . .Allow from your_workstation_IP_address. . .
als u klaar bent, herstart dan de Apache webserver om uw wijzigingen door te typen:
sudo systemctl restart httpd.service
daarmee is onze phpMyAdmin installatie nu operationeel. Om toegang te krijgen tot de interface, gaat u naar de domeinnaam van uw server of het openbare IP-adres gevolgd door /phpMyAdmin
, in uw webbrowser:
http://server_domain_or_IP/phpMyAdmin
om in te loggen, gebruik een gebruikersnaam/wachtwoord paar van een geldige MariaDB gebruiker. De root
gebruiker en het beheerderswachtwoord MariaDB zijn een goede keuze om aan de slag te gaan. U zult dan in staat zijn om toegang te krijgen tot de administratieve interface:
Zoek uw IP-adres
u moet het IP-adres weten van de computer die u gebruikt om toegang te krijgen tot uw databases om de bovenstaande stap te voltooien. Dit is een veiligheidsmaatregel zodat onbevoegde mensen geen verbinding kunnen maken met uw server.
Opmerking: Dit is niet het IP-adres van uw VPS, het is het IP-adres van uw thuis-of werkcomputer.
u kunt zien hoe het grotere web uw IP-adres ziet door een van deze sites in uw webbrowser te bezoeken:
- Wat is mijn IP-adres?
- Wat is mijn IP-adres?
- mijn IP-adres
Vergelijk een paar verschillende sites en zorg ervoor dat ze allemaal dezelfde waarde geven. Gebruik deze waarde in het bovenstaande configuratiebestand.
stap twee-Beveilig uw phpMyAdmin Instance
de phpMyAdmin instance geà nstalleerd op onze server moet volledig bruikbaar zijn op dit punt. Echter, door het installeren van een webinterface, hebben we ons MySQL systeem blootgesteld aan de buitenwereld.
zelfs met het meegeleverde authenticatiescherm is dit een groot probleem. Vanwege de populariteit van phpMyAdmin in combinatie met de grote hoeveelheid gegevens die het biedt toegang tot, installaties als deze zijn gemeenschappelijke doelen voor aanvallers.
we zullen twee eenvoudige strategieën implementeren om de kans te verkleinen dat onze installatie gericht en gecompromitteerd wordt. We zullen de locatie van de interface veranderen van /phpMyAdmin
naar iets anders om enkele van de geautomatiseerde bot brute-force pogingen te omzeilen. We zullen ook een extra, web server-level authenticatie gateway die moet worden doorgegeven voordat zelfs maar naar het phpMyAdmin login scherm.
de Toegangslocatie van de applicatie wijzigen
om ervoor te zorgen dat onze Apache webserver werkt met phpMyAdmin, gebruikt ons phpMyAdmin Apache configuratiebestand een alias om naar de directorylocatie van de bestanden te verwijzen.
om de URL te wijzigen waar onze phpMyAdmin interface toegankelijk is, hoeven we alleen de alias te hernoemen. Open het phpMyAdmin Apache configuratiebestand nu:
sudo nano /etc/httpd/conf.d/phpMyAdmin.conf
naar de bovenkant van het bestand, zie je twee regels die er zo uitzien:
Alias /phpMyAdmin /usr/share/phpMyAdminAlias /phpmyadmin /usr/share/phpMyAdmin
deze twee regels zijn onze aliassen, wat betekent dat als we toegang krijgen tot de domeinnaam of het IP-adres van onze site, gevolgd door /phpMyAdmin
of /phpmyadmin
, we de inhoud zullen krijgen op /usr/share/phpMyAdmin
.
we willen deze specifieke aliassen uitschakelen omdat ze zwaar worden aangevallen door bots en kwaadaardige gebruikers. In plaats daarvan moeten we onze eigen alias kiezen. Het moet makkelijk te onthouden zijn, maar niet makkelijk te raden. Het zou niet het doel van de URL-locatie moeten aangeven. In ons geval gaan we voor /nothingtosee
.
om onze beoogde wijzigingen toe te passen, moeten we de bestaande regels verwijderen of commentaar geven en onze eigen regels toevoegen:
# Alias /phpMyAdmin /usr/share/phpMyAdmin# Alias /phpmyadmin /usr/share/phpMyAdminAlias /nothingtosee /usr/share/phpMyAdmin
als u klaar bent, sla het bestand op en sluit het.
om de wijzigingen door te voeren, herstart u de webservice:
sudo systemctl restart httpd.service
Als u nu naar de vorige locatie van uw phpMyAdmin-installatie gaat, krijgt u een 404-fout:
http://server_domain_or_IP/phpMyAdmin
uw phpMyAdmin interface zal echter beschikbaar zijn op de nieuwe locatie die we hebben geselecteerd:
http://server_domain_or_IP/nothingtosee
het opzetten van een Web Server Authentication Gate
de volgende functie die we wilden voor onze installatie was een authenticatieprompt die een gebruiker zou moeten doorgeven voordat hij het aanmeldscherm van phpMyAdmin ooit zou zien.
Gelukkig Bieden de meeste webservers, inclusief Apache, deze mogelijkheid native. We hoeven alleen maar ons Apache configuratiebestand aan te passen om een autorisatiebestand te gebruiken.
Open het phpMyAdmin Apache configuratiebestand opnieuw in uw teksteditor:
sudo nano /etc/httpd/conf.d/phpMyAdmin.conf
binnen het /usr/share/phpMyAdmin
mapblok, maar buiten elk van de blokken binnen, moeten we een override directive toevoegen. Het zal er zo uitzien:
. . .<Directory /usr/share/phpMyAdmin/> AllowOverride All <IfModule mod_authz_core.c> . . .</Directory>. . .
dit stelt ons in staat om extra configuratiedetails op te geven in een bestand met de naam .htaccess
dat zich in de phpMyAdmin-map zelf bevindt. We zullen dit bestand gebruiken om onze wachtwoordverificatie in te stellen.
sla het bestand op en sluit het als u klaar bent.
Herstart de webservice om deze wijziging te implementeren:
sudo systemctl restart httpd.service
Maak een .htaccess bestand
nu we de override directive in onze configuratie hebben, zal Apache zoeken naar een bestand met de naam .htaccess
in de /usr/share/phpMyAdmin
map. Als het er een vindt, zal het gebruik maken van de richtlijnen die erin zijn opgenomen om zijn vorige configuratiegegevens aan te vullen.
onze volgende stap is om het .htaccess
bestand in die map aan te maken. Gebruik uw teksteditor om dit nu te doen:
sudo nano /usr/share/phpMyAdmin/.htaccess
in dit bestand moeten we de volgende informatie invoeren:
AuthType BasicAuthName "Admin Login"AuthUserFile /etc/httpd/pma_passRequire valid-user
laten we gaan over wat elk van deze lijnen betekenen:
- AuthType Basic: Deze regel specificeert het verificatietype dat we implementeren. Dit type implementeert wachtwoordverificatie met behulp van een wachtwoordbestand.
- AuthName: Hiermee stelt u het bericht in voor het dialoogvenster authenticatie. U moet deze generieke houden, zodat onbevoegde gebruikers geen kennis krijgen over wat wordt beschermd.
- AuthUserFile: Hiermee stelt u de locatie in van het werkelijke wachtwoordbestand dat zal worden gebruikt voor authenticatie. Dit moet buiten de directory ‘ s staan die worden geserveerd. We maken dit bestand zo aan.
- vereisen valid-user: Hiermee geeft u op dat alleen geverifieerde gebruikers toegang tot deze bron mogen krijgen. Dit is wat eigenlijk stopt onbevoegde gebruikers van het invoeren.
als u klaar bent met het invoeren van deze informatie, slaat u het bestand op en sluit het.
Maak het wachtwoordbestand voor authenticatie
nu we de locatie voor ons wachtwoordbestand hebben opgegeven door het gebruik van de AuthUserFile
richtlijn in ons .htaccess
bestand, moeten we het wachtwoordbestand aanmaken en invullen.
dit kan worden bereikt door het gebruik van een Apache utility genaamd htpasswd
. We roepen het commando aan door de locatie door te geven waar we het bestand willen aanmaken en de gebruikersnaam waar we de authenticatiedetails voor willen invoeren:
sudo htpasswd -c /etc/httpd/pma_pass username
de vlag -c
geeft aan dat hiermee een initieel bestand wordt aangemaakt. De directory locatie is het pad en de bestandsnaam die gebruikt zullen worden voor het bestand. De gebruikersnaam is de eerste gebruiker die we willen toevoegen. U wordt gevraagd om een wachtwoord voor de gebruiker in te voeren en te bevestigen.
Als u extra gebruikers wilt toevoegen om te authenticeren, kunt u hetzelfde commando opnieuw aanroepen zonder de -c
vlag, en met een nieuwe gebruikersnaam:
sudo htpasswd /etc/httpd/pma_pass seconduser
met ons wachtwoordbestand is een authenticatiegateway geà mplementeerd en we zouden nu een wachtwoordprompt moeten zien de volgende keer dat we onze site bezoeken:
http://server_domain_or_IP/nothingtosee
zodra u uw referenties invoert, wordt u naar de normale phpMyAdmin login pagina gebracht. Deze toegevoegde laag van bescherming zal helpen houden uw MySQL logs schoon van authenticatie pogingen in aanvulling op de toegevoegde veiligheid voordeel.
conclusie
u kunt nu uw MySQL databases beheren vanaf een redelijk veilige webinterface. Deze gebruikersinterface onthult de meeste functionaliteit die beschikbaar is vanaf de MySQL opdrachtprompt. U kunt databases en schema ’s bekijken, query’ s uitvoeren en nieuwe datasets en-structuren maken.