Jak zainstalować i zabezpieczyć phpMyAdmin z Apache na serwerze CentOS 7

wprowadzenie

relacyjne systemy zarządzania bazami danych, takie jak MySQL i MariaDB, są potrzebne dla znacznej części stron internetowych i aplikacji. Jednak nie wszyscy użytkownicy czują się komfortowo administrując swoimi danymi z wiersza poleceń.

aby rozwiązać ten problem, powstał projekt o nazwie phpMyAdmin, aby zaoferować alternatywę w postaci internetowego interfejsu zarządzania. W tym przewodniku pokażemy, jak zainstalować i zabezpieczyć konfigurację phpMyAdmin na serwerze CentOS 7. Zbudujemy tę konfigurację na serwerze internetowym Apache, najpopularniejszym serwerze internetowym na świecie.

wymagania wstępne

zanim zaczniemy, istnieje kilka wymagań, które muszą zostać uregulowane.

aby mieć pewność, że masz solidną podstawę do zbudowania tego systemu, powinieneś uruchomić nasz początkowy Przewodnik Konfiguracji serwera dla CentOS 7. Między innymi przeprowadzi cię to przez Konfigurowanie użytkownika niebędącego rootem z dostępem sudo dla poleceń administracyjnych.

drugim warunkiem, który musi być spełniony, aby rozpocząć korzystanie z tego przewodnika, jest zainstalowanie stosu LAMP (Linux, Apache, MariaDB i PHP) na serwerze CentOS 7. Jest to platforma, której będziemy używać do obsługi naszego interfejsu phpMyAdmin (MariaDB jest również oprogramowaniem do zarządzania bazami danych, którym chcemy zarządzać). Jeśli nie masz jeszcze instalacji lampy na swoim serwerze, postępuj zgodnie z naszym samouczkiem dotyczącym instalacji lampy na CentOS 7.

gdy serwer jest w prawidłowo działającym stanie po wykonaniu tych przewodników, możesz kontynuować z resztą tej strony.

Krok pierwszy — zainstaluj phpMyAdmin

dzięki naszej platformie LAMP już na miejscu, możemy od razu rozpocząć instalację oprogramowania phpMyAdmin. Niestety, phpMyAdmin nie jest dostępny w domyślnym repozytorium CentOS 7.

aby otrzymać pakiety, których potrzebujemy, będziemy musieli dodać dodatkowe repo do naszego systemu. EPEL repo (Extra Packages for Enterprise Linux) zawiera wiele dodatkowych pakietów, w tym pakiet phpMyAdmin, którego szukamy.

repozytorium EPEL może zostać udostępnione serwerowi poprzez zainstalowanie specjalnego Pakietu o nazwie epel-release. Spowoduje to ponowną konfigurację listy repozytoriów i zapewni dostęp do pakietów EPEL.

aby zainstalować, wystarczy wpisać:

sudo yum install epel-release

teraz, gdy repo EPEL jest skonfigurowane, możesz zainstalować pakiet phpMyAdmin za pomocą systemu yum, wpisując:

sudo yum install phpmyadmin

instalacja zostanie zakończona. Instalacja zawierała plik konfiguracyjny Apache, który został już zainstalowany. Będziemy musieli to nieco zmodyfikować, aby działało poprawnie w naszej instalacji.

Otwórz plik w edytorze tekstu, abyśmy mogli wprowadzić kilka zmian:

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

wewnątrz widzimy bloki katalogów z pewną logiką warunkową wyjaśniającą zasady dostępu do naszego katalogu. Istnieją dwa różne katalogi, które są zdefiniowane, a wewnątrz nich, konfiguracje, które będą ważne zarówno dla Apache 2.2 i Apache 2.4 (który jest uruchomiony).

obecnie Ta konfiguracja jest skonfigurowana tak, aby odmawiać dostępu do dowolnego połączenia, które nie jest nawiązywane z samego serwera. Ponieważ pracujemy zdalnie na naszym serwerze, musimy zmodyfikować niektóre linie, aby określić adres IP Twojego połączenia domowego.

zmień wszystkie linie, które czytają Require ip 127.0.0.1 lub Allow from 127.0.0.1, aby odnieść się do adresu IP Twojego połączenia domowego. Jeśli potrzebujesz pomocy w znalezieniu adresu IP połączenia domowego, sprawdź następną sekcję. W pliku powinny znajdować się cztery lokalizacje, które należy zmienić:

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

po zakończeniu uruchom ponownie serwer WWW Apache, aby zaimplementować modyfikacje, wpisując:

sudo systemctl restart httpd.service

dzięki temu nasza instalacja phpMyAdmin jest już uruchomiona. Aby uzyskać dostęp do interfejsu, przejdź do nazwy domeny serwera lub publicznego adresu IP, a następnie do /phpMyAdmin w przeglądarce internetowej:

http://server_domain_or_IP/phpMyAdmin

ekran logowania phpMyAdmin

aby się zalogować, użyj pary nazwa użytkownika / hasło ważnego użytkownika MariaDB. Użytkownik root i hasło administracyjne MariaDB to dobry wybór, aby zacząć. Następnie będziesz mógł uzyskać dostęp do interfejsu administracyjnego:

phpMyAdmin admin interface

Znajdź swój adres IP

aby wykonać powyższy krok, musisz znać adres IP komputera, którego używasz do uzyskiwania dostępu do baz danych. Jest to środek ostrożności, aby nieupoważnione osoby nie mogły połączyć się z Twoim serwerem.

uwaga: to nie jest adres IP Twojego VPS, to jest adres IP twojego komputera domowego lub służbowego.

możesz dowiedzieć się, jak większa sieć widzi twój adres IP, odwiedzając jedną z tych stron w przeglądarce internetowej:

  • jaki jest mój adres IP?
  • Jakie jest moje IP?
  • mój adres IP

Porównaj kilka różnych stron i upewnij się, że wszystkie dają taką samą wartość. Użyj tej wartości w powyższym pliku konfiguracyjnym.

Krok drugi-Zabezpiecz swoją instancję phpMyAdmin

instancja phpMyAdmin zainstalowana na naszym serwerze powinna być w tym momencie całkowicie użyteczna. Jednak instalując interfejs internetowy, wystawiliśmy nasz system MySQL na świat zewnętrzny.

nawet przy dołączonym ekranie uwierzytelniania jest to spory problem. Ze względu na popularność phpMyAdmin w połączeniu z dużą ilością danych, do których zapewnia dostęp, instalacje takie jak te są częstymi celami dla atakujących.

wdrożymy dwie proste strategie, aby zmniejszyć szanse na to, że nasza instalacja zostanie ukierunkowana i zagrożona. Zmienimy lokalizację interfejsu z /phpMyAdmin na coś innego, aby ominąć niektóre z automatycznych prób botów brute-force. Stworzymy również dodatkową bramę uwierzytelniania na poziomie serwera www, która musi zostać przekazana przed przejściem do ekranu logowania phpMyAdmin.

Zmiana lokalizacji dostępu do aplikacji

aby nasz serwer Apache działał z phpMyAdmin, nasz plik konfiguracyjny Apache phpMyAdmin używa aliasu do wskazywania lokalizacji katalogu plików.

aby zmienić adres URL, z którego można uzyskać dostęp do naszego interfejsu phpMyAdmin, wystarczy zmienić nazwę aliasu. Otwórz plik konfiguracyjny Apache phpMyAdmin teraz:

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

w górnej części pliku zobaczysz dwie linie, które wyglądają tak:

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

te dwie linie to nasze aliasy, co oznacza, że jeśli uzyskamy dostęp do nazwy domeny lub adresu IP naszej witryny, a następnie /phpMyAdmin lub /phpmyadmin, otrzymamy zawartość pod adresem /usr/share/phpMyAdmin.

chcemy wyłączyć te konkretne aliasy, ponieważ są one silnie atakowane przez boty i złośliwych użytkowników. Zamiast tego powinniśmy zdecydować się na własny pseudonim. Powinno być łatwe do zapamiętania, ale nie łatwe do odgadnięcia. Nie powinno wskazywać celu lokalizacji URL. W naszym przypadku wybierzemy /nothingtosee.

aby zastosować zamierzone zmiany, powinniśmy usunąć lub skomentować istniejące linie i dodać własne:

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

po zakończeniu zapisz i zamknij plik.

aby wdrożyć zmiany, uruchom ponownie serwis internetowy:

sudo systemctl restart httpd.service

teraz, jeśli przejdziesz do poprzedniej lokalizacji instalacji phpMyAdmin, otrzymasz błąd 404:

http://server_domain_or_IP/phpMyAdmin

błąd phpMyAdmin 404

jednak twój interfejs phpMyAdmin będzie dostępny w nowej lokalizacji, którą wybraliśmy:

http://server_domain_or_IP/nothingtosee

ekran logowania phpMyAdmin

Konfigurowanie bramki uwierzytelniania serwera www

kolejną funkcją, której chcieliśmy dokonać podczas naszej instalacji, był monit uwierzytelniania, który użytkownik musiałby przejść, zanim zobaczy ekran logowania phpMyAdmin.

na szczęście większość serwerów internetowych, w tym Apache, zapewnia tę funkcję natywnie. Musimy tylko zmodyfikować nasz plik konfiguracyjny Apache, aby użyć pliku autoryzacji.

Otwórz ponownie plik konfiguracyjny Apache phpMyAdmin w edytorze tekstu:

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

wewnątrz bloku katalogów /usr/share/phpMyAdmin, ale poza którymkolwiek z bloków wewnątrz, musimy dodać dyrektywę override. Będzie to wyglądać tak:

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

pozwoli nam to określić dodatkowe szczegóły konfiguracji w pliku o nazwie .htaccess znajdującym się w samym katalogu phpMyAdmin. Użyjemy tego pliku, aby skonfigurować uwierzytelnianie hasłem.

Zapisz i zamknij plik po zakończeniu.

Uruchom ponownie serwis internetowy, aby wdrożyć tę zmianę:

sudo systemctl restart httpd.service

Utwórz .plik htaccess

teraz, gdy mamy dyrektywę override w naszej konfiguracji, Apache będzie szukał pliku o nazwie .htaccess w katalogu /usr/share/phpMyAdmin. Jeśli go znajdzie, użyje zawartych w nim dyrektyw, aby uzupełnić swoje poprzednie dane konfiguracyjne.

naszym następnym krokiem jest utworzenie pliku .htaccess w tym katalogu. Użyj edytora tekstu, aby to zrobić teraz:

sudo nano /usr/share/phpMyAdmin/.htaccess

w tym pliku musimy wprowadzić następujące informacje:

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

przyjrzyjmy się, co oznacza każda z tych linii:

  • AuthType Basic: Ta linia określa typ uwierzytelniania, który wdrażamy. Ten typ zaimplementuje uwierzytelnianie hasłem Za pomocą pliku hasła.
  • AuthName: ustawia wiadomość dla okna dialogowego uwierzytelniania. Powinieneś zachować ten rodzaj, aby nieautoryzowani użytkownicy nie zdobyli wiedzy o tym, co jest chronione.
  • AuthUserFile: ustawia lokalizację rzeczywistego pliku hasła, który będzie używany do uwierzytelniania. To powinno być poza katalogami, które są serwowane. Za chwilę stworzymy ten plik.
  • Wymagaj poprawnego użytkownika: Określa to, że dostęp do tego zasobu powinni mieć tylko uwierzytelnieni użytkownicy. To właśnie powstrzymuje nieautoryzowanych użytkowników przed wejściem.

po zakończeniu wprowadzania tych informacji Zapisz i zamknij plik.

Utwórz plik hasła do uwierzytelniania

teraz, gdy określiliśmy lokalizację naszego pliku hasła za pomocą dyrektywy AuthUserFile w naszym pliku .htaccess, musimy utworzyć i wypełnić plik hasła.

można to osiągnąć za pomocą narzędzia Apache o nazwie htpasswd. Wywołujemy polecenie przekazując mu lokalizację, w której chcemy utworzyć plik oraz Nazwę użytkownika, dla której chcemy wprowadzić dane uwierzytelniające:

sudo htpasswd -c /etc/httpd/pma_pass username

znacznik -c wskazuje, że spowoduje to utworzenie pliku początkowego. Lokalizacja katalogu to ścieżka i nazwa pliku, które będą używane do pliku. Nazwa użytkownika jest pierwszym użytkownikiem, którego chcielibyśmy dodać. Zostaniesz poproszony o wprowadzenie i potwierdzenie hasła dla użytkownika.

jeśli chcesz dodać dodatkowych użytkowników do uwierzytelniania, możesz ponownie wywołać to samo polecenie bez flagi -c i z nową nazwą użytkownika:

sudo htpasswd /etc/httpd/pma_pass seconduser

po utworzeniu pliku hasła została zaimplementowana Brama uwierzytelniania i powinniśmy teraz zobaczyć monit o hasło przy następnej wizycie na naszej stronie:

http://server_domain_or_IP/nothingtosee

strona uwierzytelniania Apache

po wprowadzeniu danych uwierzytelniających zostaniesz przeniesiony do normalnej strony logowania do phpMyAdmin. Ta dodatkowa warstwa ochrony oprócz dodatkowej korzyści w zakresie bezpieczeństwa pomoże utrzymać logi MySQL w czystości prób uwierzytelniania.

wniosek

możesz teraz zarządzać bazami danych MySQL z rozsądnie bezpiecznego interfejsu internetowego. Ten interfejs użytkownika udostępnia większość funkcji dostępnych w wierszu polecenia MySQL. Możesz przeglądać bazy danych i schematy, wykonywać zapytania oraz tworzyć nowe zestawy danych i struktury.

You might also like

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.