Hoe phpMyAdmin veilig te installeren

0
218

phpMyAdmin is een geweldig hulpmiddel voor het beheren van een MySQL-database, maar geeft toegang tot uw database achter een webinterface is een groot beveiligingsprobleem. Hier zijn een paar manieren om de risico's van het uitvoeren van phpMyAdmin te beperken.

Waarom is phpMyAdmin een beveiligingsprobleem?

Meestal heb je een database die op je server draait en alleen verbindingen accepteert van localhost of misschien van een andere vertrouwde server. Als u ook een toepassing op die server had draaien, zou deze rechtstreeks communiceren. Een aanvaller kan op geen enkele manier toegang krijgen tot de hele server.

phpMyAdmin omzeilt dit om u een webinterface te bieden voor het beheren van uw database. Het is een zeer nuttig hulpmiddel, maar het is een ramp voor de beveiliging. phpMyAdmin heeft volledige onbeperkte toegang tot uw database, omdat het bedoeld is om directe toegang via de opdrachtregel te vervangen. Als een aanvaller toegang krijgt tot het webpaneel, heeft hij toegang tot alles. En phpMyAdmin is meestal alleen beveiligd met een eenvoudig wachtwoord.

Installeer phpMyAdmin en Secure MySQL

phpMyAdmin draait op de LAMP-stack (Linux, Apache, MySQL, PHP). Voordat u zelfs maar begint met het installeren van phpMyAdmin, moet uw exemplaar van MySQL veilig zijn. MySQL biedt een handig hulpprogramma voor het uitvoeren van een aantal basisbeveiligingstaken:

sudo mysql_secure_installation

Dit helpt u bij het wijzigen van het root-wachtwoord, het uitschakelen van inloggen op afstand en het verwijderen van de testdatabase.

Advertentie
< p>Daarna kunt u phpMyAdmin zoals gewoonlijk installeren. Tijdens de installatie wordt u gevraagd om een ​​wachtwoord van de beheerder van de database (die u tijdens mysql_secure_installation had moeten instellen) en een nieuw wachtwoord om phpMyAdmin mee te beveiligen. Zorg ervoor dat dit wachtwoord lang en veilig is, want het is het laatste verdedigingspunt voordat aanvallers toegang kunnen krijgen.

Idealiter zou geen enkele aanvaller zelfs maar de kans krijgen om uw wachtwoord te raden, dus u zult phpMyAdmin achter iets anders willen plaatsen, zodat u het verder kunt beveiligen.

Optie 1: Vergrendel Apache en gebruik SSH Port Forwarding

Dit is de veiligste optie, maar het is alleen echt geschikt voor toegang door één gebruiker, met name voor individuele gebruikers met volledige administratieve toegang tot de hele server, omdat je hiervoor verbinding moet maken via SSH.

SSH-poort doorsturen is een methode om lokale poorten door te sturen naar een systeem op afstand. Je zou bijvoorbeeld Apache op je server laten draaien, luisterend op poort 80. Als je die poort hebt getunneld, zou je er toegang toe kunnen krijgen door naar:

https://localhost:80/

… in elke webbrowser. In zekere zin is het bijna alsof Apache op uw systeem draait. Maar poort 80 hoeft niet open te zijn op uw server; al het verkeer wordt omgeleid via de standaardpoort 22 die wordt gebruikt voor SSH. U moet ervoor zorgen dat SSH is beveiligd met SSH-sleutels en idealiter niet op de standaardpoort draait, aangezien deze methode slechts zo veilig is als uw SSH-verbinding.

Om dit te doen, moet je Apache aan localhost binden en ervoor zorgen dat het niet open staat voor internet. Open /etc/apache2/ports.conf en verander de drie luisterinstructies om alleen te luisteren op localhost (ook bekend als 127.0.0.1):

Luister 127.0.0.1:80 <IfModule ssl_module> Luister 127.0.0.1:443 </IfModule> <IfModule mod_gnutls> Luister 127.0.0.1:443 </IfModule>

Herstart Apache met:

sudo service apache2 restart Advertentie

En phpMyAdmin zou ontoegankelijk moeten zijn. Dit wordt verwacht. Nadat Apache is geconfigureerd, kunt u poort 80 tunnelen met de volgende opdracht:

ssh -L 80:localhost:80 gebruiker@server

Vervolgens heeft u vanuit elke webbrowser toegang tot phpMyAdmin vanuit localhost:80. Ondertussen kan uw server worden geconfigureerd met een strikte firewall om alles behalve SSH te verbieden.

Als ssh niet kan binden aan poort 80, probeer dan de eerste poort te wijzigen in een ander nummer en vanaf daar toegang te krijgen op localhost. Het zal nog steeds tunnelen naar poort 80 op de externe machine. Deze verbinding blijft behouden totdat u ssh afsluit. Als je het op de achtergrond wilt uitvoeren, gebruik dan de vlag -f.

Als je wilt dat phpMyAdmin alleen luistert op localhost, kun je in plaats daarvan /etc/apache2/conf-enabled/phpmyadmin.conf en voeg de volgende regels toe aan het Directory-blok:

Order deny,allow Deny from all Allow from 127.0.0.1

Dit zal alles behalve localhost de toegang tot de phpMyAdmin-installatie ontzeggen, hoewel je nog steeds poort 80 in je firewall open moet hebben om regulier verkeer toe te staan.

Optie 2: Vergrendel Apache en gebruik een VPN

Als u toegang aan meerdere mensen moet toestaan ​​zonder SSH-toegang te geven, kunt u Apache instellen om te luisteren op het privé-IP van uw machine en alleen verbindingen te accepteren van dezelfde wolk. Dit werkt vooral goed met services zoals AWS VPC, waarbij elke server die u start, wordt gemaakt in een virtueel netwerk.

Advertentie

Om uw privé-IP te vinden, kunt u ifconfig uitvoeren en het inet-adres zoeken op uw primaire netwerkadapter:

Dit adres is ook zichtbaar vanaf de AWS EC2-console. Zodra je het adres hebt gekopieerd, open je /etc/apache2/ports.conf en bewerk je de drie luisterrichtlijnen om op het privé-IP te luisteren:

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

Als u phpMyAdmin alleen wilt beveiligen, kunt u ook /etc/apache2/conf-enabled/phpmyadmin.conf bewerken en alleen toestaan ​​vanaf het privé-IP:

Order weigeren, toestaan ​​Weigeren van alles Toestaan ​​vanaf 172.31. 87.118

En herstart Apache.

Om toegang te krijgen tot phpMyAdmin, moet u nu een VPN-server instellen zoals OpenVPN. Hiermee kunt u uw clientcomputer tunnelen naar de virtuele privécloud waarin uw webservers worden uitgevoerd en toegang krijgen tot de server waarop phpMyAdmin op het privé-IP wordt uitgevoerd alsof u een andere server bent. Natuurlijk moet u uw firewall-instellingen configureren om toegang van de OpenVPN-server tot de phpMyAdmin-instantie toe te staan.

Optie 3: Secure Apache met HTTPS en basisverificatie

Als u echt openbare DNS moet gebruiken en uw server toegankelijk moet hebben, kunt u basisverificatie gebruiken met Apache. Dit is gewoon een ander wachtwoord voor phpMyAdmin dat voorkomt dat buitenstaanders verzoeken indienen bij de phpMyAdmin-toepassing. Je kunt dit naast de andere opties in deze lijst gebruiken, omdat het slechts een extra verdedigingslaag is.

Maak een nieuw wachtwoordbestand aan met htpasswd, dat al naast Apache moet worden geïnstalleerd (indien niet , het staat in apache2-utils):

sudo htpasswd /etc/apache2/.htpasswd phpadmin Advertentie

Hiermee kun je een nieuw wachtwoord instellen voor de gebruiker phpadmin en dit opslaan in /etc /apache2/.htpasswd.

Open /etc/apache2/conf-enabled/phpmyadmin.conf, en configureer het om Basic auth te gebruiken met het nieuw aangemaakte wachtwoordbestand:

AuthType Basic AuthName ” Beperkte inhoud” AuthUserFile /etc/apache2/.htpasswd Valid-user vereisen

Herstart Apache met:

sudo service apache2 restart

En wanneer u probeert toegang te krijgen tot phpMyAdmin in uw browser, zult u om een ​​gebruikersnaam en wachtwoord gevraagd. Voer phpadmin en het wachtwoord in dat je hebt gemaakt, en je zou toegang moeten krijgen. Anders zie je alleen een 401 Ongeautoriseerde reactie.