Weboldal keresés

A phpMyAdmin telepítése és biztonságossá tétele Ubuntun


Bevezetés

Bár sok felhasználónak szüksége van egy adatbázis-kezelő rendszer, például a MySQL funkcióira, előfordulhat, hogy nem érzik jól magukat, ha pusztán a MySQL parancssorból kommunikálhatnak a rendszerrel.

A phpMyAdmin azért jött létre, hogy a felhasználók webes felületen keresztül kommunikálhassanak a MySQL-lel. Ebben az útmutatóban megvitatjuk a phpMyAdmin telepítését és biztonságossá tételét, hogy biztonságosan kezelhesse adatbázisait egy Ubuntu rendszeren.

A phpMyAdmin telepítése és biztonságossá tétele Ubuntun

  1. A phpMyAdmin telepítése
  2. Felhasználói hitelesítés és jogosultságok beállítása
  3. A phpMyAdmin példány védelme

Előfeltételek

Az útmutató kitöltéséhez a következőkre lesz szüksége:

  • Ubuntu szerver. Ennek a szervernek egy nem root felhasználóval kell rendelkeznie rendszergazdai jogosultságokkal, és tűzfallal kell rendelkeznie az ufw paraméterrel. Ennek beállításához kövesse az Ubuntu kezdeti szerverbeállítási útmutatóját.
  • Egy LAMP (Linux, Apache, MySQL és PHP) verem telepítve az Ubuntu szerverére. Ha ez még nem fejeződött be, kövesse ezt az útmutatót a LAMP-verem Ubuntu-ra történő telepítéséhez.

Ezenkívül fontos biztonsági szempontok is vannak a phpMyAdmin-hoz hasonló szoftverek használatakor, mivel:

  • Közvetlenül kommunikál a MySQL telepítésével
  • Kezeli a hitelesítést MySQL hitelesítő adatok használatával
  • Tetszőleges SQL-lekérdezéseket hajt végre és eredményeket ad vissza

Ezen okok miatt, és mivel ez egy széles körben elterjedt PHP-alkalmazás, amely gyakran célzott támadásokra, soha ne futtassa a phpMyAdmin programot távoli rendszereken egyszerű HTTP-kapcsolaton keresztül.

Ha nincs SSL/TLS-tanúsítvánnyal konfigurált meglévő tartománya, kövesse ezt az útmutatót az Apache védelméről az Ubuntu Let’s Encrypt segítségével. Ehhez tartománynevet kell regisztrálnia, DNS-rekordokat kell létrehoznia a kiszolgálóhoz, és be kell állítania egy Apache Virtual Host-ot.

1. lépés – A phpMyAdmin telepítése

Használhatja az APT-t a phpMyAdmin telepítéséhez az alapértelmezett Ubuntu-tárolókból.

Nem root sudo felhasználóként frissítse a szerver csomagindexét, ha mostanában nem tette meg:

sudo apt update

Ezt követően telepítheti a phpmyadmin csomagot. Ezzel a csomaggal együtt a hivatalos dokumentáció azt is javasolja, hogy telepítsen néhány PHP-bővítményt a szerverére bizonyos funkciók engedélyezése és a teljesítmény javítása érdekében.

Ha követte az előfeltétel LAMP verem oktatóanyagot, több ilyen modul is telepítve lesz a php csomaggal együtt. Javasoljuk azonban, hogy ezeket a csomagokat is telepítse:

  • php-mbstring: A nem ASCII karakterláncok kezelésére és a karakterláncok különböző kódolásúvá alakítására szolgáló modul
  • php-zip: Ez a kiterjesztés támogatja a .zip fájlok feltöltését a phpMyAdminba
  • php-gd: Lehetővé teszi a GD Graphics Library támogatását
  • php-json: Támogatja a PHP-t a JSON szerializáláshoz
  • php-curl: Lehetővé teszi a PHP számára, hogy különböző protokollokat használó különféle szerverekkel kommunikáljon

Futtassa a következő parancsot, hogy telepítse ezeket a csomagokat a rendszerére. Ne feledje azonban, hogy a telepítési folyamat megköveteli bizonyos döntések meghozatalát a phpMyAdmin megfelelő beállításához. Hamarosan áttekintjük ezeket a lehetőségeket:

sudo apt install phpmyadmin php-mbstring php-zip php-gd php-json php-curl

A telepítés megfelelő konfigurálásához az alábbi lehetőségeket kell választania, amikor a rendszer kéri:

  • A szerver kiválasztásához válassza az apache2 lehetőséget

Figyelmeztetés: Amikor megjelenik a felszólítás, az „apache2 ” ki van jelölve, de nincs kijelölve. Ha nem nyomja meg a SPACE billentyűt az Apache kiválasztásához, a telepítő nem mozgatja át a szükséges fájlokat a telepítés során. Nyomja meg a SPACE, TAB, majd az ENTER billentyűt az Apache kiválasztásához.

  • Válassza az Igen lehetőséget, amikor megkérdezi, hogy használja-e a dbconfig-common elemet az adatbázis beállításához
  • Ezután meg kell választania és meg kell erősítenie a MySQL-alkalmazás jelszavát a phpMyAdmin számára

Megjegyzés: Feltételezve, hogy a MySQL-t az előfeltétel LAMP verem oktatóanyagának 2. lépésével telepítette, előfordulhat, hogy úgy döntött, hogy engedélyezi a Jelszó érvényesítése beépülő modult. Az írás pillanatában ennek az összetevőnek az engedélyezése hibaüzenetet vált ki, amikor megpróbál jelszót beállítani a phpmyadmin felhasználó számára:

A probléma megoldásához válassza a megszakítás lehetőséget a telepítési folyamat leállításához. Ezután nyissa meg a MySQL parancssort:

sudo mysql

Vagy ha engedélyezte a jelszavas hitelesítést a root MySQL-felhasználó számára, futtassa ezt a parancsot, majd írja be jelszavát, amikor a rendszer kéri:

mysql -u root -p

A promptból futtassa a következő parancsot a Jelszó érvényesítése összetevő letiltásához. Vegye figyelembe, hogy ez valójában nem távolítja el, hanem csak leállítja az összetevő betöltését a MySQL-kiszolgálóra:

UNINSTALL COMPONENT "file://component_validate_password";

Ezt követően bezárhatja a MySQL klienst:

exit

Ezután próbálja meg újra telepíteni a phpmyadmin csomagot, és a várt módon fog működni:

sudo apt install phpmyadmin

A phpMyAdmin telepítése után ismét megnyithatja a MySQL parancssort a sudo mysql vagy a mysql -u root -p paranccsal, majd futtassa a következő parancsot a Jelszó érvényesítése újraengedélyezéséhez. összetevő:

INSTALL COMPONENT "file://component_validate_password";

A telepítési folyamat hozzáadja a phpMyAdmin Apache konfigurációs fájlt az /etc/apache2/conf-enabled/ könyvtárba, ahol a rendszer automatikusan beolvassa. Az Apache és a PHP phpMyAdminnal való együttműködésének befejezéséhez az oktatóanyag ezen részében az egyetlen hátralévő feladat az mbstring PHP kiterjesztés explicit engedélyezése, amit a következő beírással tehet meg:

sudo phpenmod mbstring

Ezután indítsa újra az Apache-t, hogy felismerje a változtatásokat:

sudo systemctl restart apache2

A phpMyAdmin most telepítve van, és be van állítva, hogy működjön az Apache-val. Mielőtt azonban bejelentkezhetne, és megkezdhetné a MySQL-adatbázisokkal való interakciót, meg kell győződnie arról, hogy MySQL-felhasználói rendelkeznek a programmal való interakcióhoz szükséges jogosultságokkal.

2. lépés – A felhasználói hitelesítés és jogosultságok beállítása

Amikor telepíti a phpMyAdmin programot a szerverére, az automatikusan létrehoz egy phpmyadmin nevű adatbázis-felhasználót, amely bizonyos mögöttes folyamatokat hajt végre a program számára. Ahelyett, hogy ilyen felhasználóként jelentkezne be a telepítés során beállított adminisztrátori jelszóval, javasoljuk, hogy a MySQL root-felhasználójaként, vagy a phpMyAdmin felületen keresztül az adatbázisok kezelésével foglalkozó felhasználóként jelentkezzen be.

Jelszavas hozzáférés konfigurálása a MySQL Root fiókhoz

A MySQL 5.7-et (és újabb verzióit) futtató Ubuntu rendszerekben a root MySQL-felhasználó alapértelmezés szerint az auth_socket beépülő modul használatával hitelesít, nem pedig jelszót. Ez sok esetben nagyobb biztonságot és használhatóságot tesz lehetővé, de bonyolíthatja is a dolgokat, ha engedélyezni kell egy külső programnak – például a phpMyAdminnak – a felhasználó elérését.

Ha root MySQL-felhasználóként szeretne bejelentkezni a phpMyAdminba, át kell állítania a hitelesítési módszerét auth_socket-ról jelszót használóra, ha már megtette. Ehhez nyissa meg a MySQL promptot a terminálról:

sudo mysql

Ezután ellenőrizze, hogy az egyes MySQL felhasználói fiókok melyik hitelesítési módszert használják a következő paranccsal:

SELECT user,authentication_string,plugin,host FROM mysql.user;

+------------------+------------------------------------------------------------------------+-----------------------+-----------+
| user             | authentication_string                                                  | plugin                | host      |
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
| debian-sys-maint | $A$005$I:jOry?]Sy<|qhQRj3fBRQ43i4UJxrpm.IaT6lOHkgveJjmeIjJrRe6         | caching_sha2_password | localhost |
| mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.session    | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.sys        | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| phpmyadmin       | $A$005$?#{Z?`gN!c2az)}V-INCWXSuVdqB9zWteH1IkZfTe/rOLgVhSzEMM9R3G6K9    | caching_sha2_password | localhost |
| root             |                                                                        | auth_socket           | localhost |
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
6 rows in set (0.00 sec)

Ez a példakimenet azt jelzi, hogy a root felhasználó valójában az auth_socket beépülő modul használatával hitelesít. A root fiók jelszóval történő hitelesítésre való beállításához futtassa a következő ALTER USER parancsot. Ügyeljen arra, hogy a jelszót egy Ön által választott erős jelszóra cserélje:

ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'password';

Megjegyzés: Az előző ALTER USER utasítás a root MySQL-felhasználót a caching_sha2_password beépülő modullal történő hitelesítésre állítja be. A hivatalos MySQL-dokumentáció szerint a caching_sha2_password a MySQL által preferált hitelesítési bővítmény, mivel biztonságosabb jelszótitkosítást biztosít, mint a régebbi, de még mindig széles körben használt mysql_native_password.

A PHP egyes verziói azonban nem működnek megbízhatóan a caching_sha2_password használatával. A PHP arról számolt be, hogy ezt a problémát a PHP 7.4-es verziója javította, de ha később hibát észlel a phpMyAdminba való bejelentkezéshez, érdemes lehet a root beállítást beállítani, hogy a mysql_native_password segítségével hitelesítsen. helyett:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

Ezután ellenőrizze újra az egyes felhasználók által használt hitelesítési módszereket, hogy megbizonyosodjon arról, hogy a root már nem hitelesít az auth_socket beépülő modul használatával:

SELECT user,authentication_string,plugin,host FROM mysql.user;

+------------------+------------------------------------------------------------------------+-----------------------+-----------+
| user             | authentication_string                                                  | plugin                | host      |
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
| debian-sys-maint | $A$005$I:jOry?]Sy<|qhQRj3fBRQ43i4UJxrpm.IaT6lOHkgveJjmeIjJrRe6         | caching_sha2_password | localhost |
| mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.session    | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.sys        | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| phpmyadmin       | $A$005$?#{Z?`gN!c2az)}V-INCWXSuVdqB9zWteH1IkZfTe/rOLgVhSzEMM9R3G6K9    | caching_sha2_password | localhost |
| root             | $A$005$3y�y|Z?'_[} ZyVHuESVwNmjKWOH/ndETwS.Kty0IH7UfiXjOfVvyWroy4a.   | caching_sha2_password | localhost |
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
6 rows in set (0.00 sec)

Ez a kimenet azt mutatja, hogy a root felhasználó jelszóval hitelesíti magát. Mostantól bejelentkezhet a phpMyAdmin felületre root felhasználóként az itt beállított jelszóval.

Jelszavas hozzáférés konfigurálása egy dedikált MySQL-felhasználó számára

Alternatív megoldásként egyesek úgy találhatják, hogy a munkafolyamatuknak jobban megfelel, ha egy dedikált felhasználóval csatlakoznak a phpMyAdminhoz. Ehhez nyissa meg ismét a MySQL shellt:

sudo mysql

Ha engedélyezte a jelszavas hitelesítést a root felhasználó számára, az előző részben leírtak szerint, akkor a csatlakozáshoz a következő parancsot kell futtatnia, és meg kell adnia jelszavát, amikor a rendszer kéri:

mysql -u root -p

Innentől hozzon létre egy új felhasználót, és adjon neki erős jelszót:

CREATE USER 'sammy'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'password';

Megjegyzés: Attól függően, hogy milyen PHP-verziót telepített, érdemes lehet beállítani az új felhasználót, hogy a caching_sha2_password helyett a mysql_native_password használatával hitelesítsen. :

ALTER USER 'sammy'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

Ezután adja meg új felhasználójának a megfelelő jogosultságokat. Például ezzel a paranccsal felhasználói jogosultságokat adhat az adatbázison belüli összes táblához, valamint jogosultságot adhat hozzá, módosíthat és eltávolíthat felhasználói jogosultságokat:

GRANT ALL PRIVILEGES ON *.* TO 'sammy'@'localhost' WITH GRANT OPTION;

Ezt követően lépjen ki a MySQL shellből:

exit

Mostantól elérheti a webes felületet, ha meglátogatja szervere domain nevét vagy nyilvános IP-címét, majd a /phpmyadmin parancsot:

https://your_domain_or_IP/phpmyadmin

Jelentkezzen be a felületre rootként vagy az imént konfigurált új felhasználónévvel és jelszóval.

Amikor bejelentkezik, a phpMyAdmin felhasználói felületére kerül:

Most, hogy csatlakozhat a phpMyAdminhoz, és interakcióba léphet vele, nincs más hátra, mint megerősíteni a rendszer biztonságát, hogy megvédje a támadóktól.

3. lépés – A phpMyAdmin példány biztonsága

Mindenütt elterjedtsége miatt a phpMyAdmin népszerű célpont a támadók körében, ezért fokozottan ügyeljen az illetéktelen hozzáférés megakadályozására. Ennek egyik módja az, hogy az Apache beépített .htaccess hitelesítési és engedélyezési funkcióival átjárót helyezünk el a teljes alkalmazás előtt.

Ehhez először engedélyeznie kell a .htaccess fájlfelülírások használatát a phpMyAdmin telepítés Apache konfigurációs fájljának szerkesztésével.

Használja a kívánt szövegszerkesztőt az Apache konfigurációs könyvtárában elhelyezett phpmyadmin.conf fájl szerkesztéséhez. Itt a nano-t fogjuk használni:

sudo nano /etc/apache2/conf-available/phpmyadmin.conf

Adjon hozzá egy AllowOverride All direktívát a konfigurációs fájl szakaszához, így:

<Directory /usr/share/phpmyadmin>
    Options SymLinksIfOwnerMatch
    DirectoryIndex index.php
    AllowOverride All
    . . .

Ha hozzáadta ezt a sort, mentse el és zárja be a fájlt. Ha a nano-t használta a fájl szerkesztéséhez, nyomja meg a CTRL + X, Y, majd az ENTER billentyűket. .

A változtatások végrehajtásához indítsa újra az Apache-t:

sudo systemctl restart apache2

Most, hogy engedélyezte a .htaccess fájlok használatát az alkalmazásban, létre kell hoznia egyet a biztonság megvalósításához.

Ahhoz, hogy ez sikeres legyen, a fájlt létre kell hozni az alkalmazáskönyvtárban. Létrehozhatja a szükséges fájlt, és root jogosultságokkal megnyithatja a szövegszerkesztőben, ha beírja:

sudo nano /usr/share/phpmyadmin/.htaccess

Ebben a fájlban adja meg a következő információkat:

AuthType Basic
AuthName "Restricted Files"
AuthUserFile /etc/phpmyadmin/.htpasswd
Require valid-user

Íme, mit jelentenek ezek a sorok:

  • AuthType Basic: Ez a sor határozza meg a megvalósítandó hitelesítési típust. Ez a típus jelszófájl segítségével valósítja meg a jelszó-hitelesítést.
  • AuthName: Beállítja a hitelesítési párbeszédpanel üzenetét. Ezt az általánost meg kell őriznie, hogy az illetéktelen felhasználók ne kapjanak információt arról, hogy mit védenek.
  • AuthUserFile: Beállítja a hitelesítéshez használt jelszófájl helyét. Ennek a kiszolgált könyvtárakon kívül kell lennie. Ezt a fájlt hamarosan létrehozzuk.
  • Érvényes felhasználó megkövetelése: Ez azt határozza meg, hogy csak hitelesített felhasználók kapjanak hozzáférést ehhez az erőforráshoz. Ez az, ami valójában megakadályozza az illetéktelen felhasználók belépését.

Ha végzett, mentse el és zárja be a fájlt.

A jelszófájlhoz kiválasztott hely a következő volt: /etc/phpmyadmin/.htpasswd. Most létrehozhatja ezt a fájlt, és átadhatja egy kezdeti felhasználónak a htpasswd segédprogrammal:

sudo htpasswd -c /etc/phpmyadmin/.htpasswd username

A rendszer kéri, hogy válassza ki és erősítse meg a létrehozandó felhasználó jelszavát. Ezt követően a fájl az Ön által megadott kivonatolt jelszóval jön létre.

Ha további felhasználót szeretne megadni, a -c jelző nélkül kell ezt megtennie, például:

sudo htpasswd /etc/phpmyadmin/.htpasswd additionaluser

Ezután indítsa újra az Apache-t, hogy életbe lépjen a .htaccess hitelesítés:

sudo systemctl restart apache2

Most, amikor belép a phpMyAdmin alkönyvtárába, a rendszer kérni fogja az imént konfigurált további fióknevet és jelszót:

https://domain_name_or_IP/phpmyadmin

Az Apache hitelesítés megadása után a szokásos phpMyAdmin hitelesítési oldalra kerül, ahol megadhatja MySQL hitelesítő adatait. A nem MySQL hitelesítő adatok további készletének hozzáadásával további biztonsági réteget biztosít adatbázisának. Ez kívánatos, mivel a phpMyAdmin korábban sebezhető volt a biztonsági fenyegetésekkel szemben.

Következtetés

Most már konfigurálva és használatra készen kell lennie a phpMyAdminnak az Ubuntu szerveren. Ezen a felületen adatbázisokat, felhasználókat és táblákat hozhat létre, valamint elvégezheti a szokásos műveleteket, például struktúrák és adatok törlését, módosítását.

Kapcsolódó cikkek: