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
- A phpMyAdmin telepítése
- Felhasználói hitelesítés és jogosultságok beállítása
- 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
ufwparamé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ó modulphp-zip: Ez a kiterjesztés támogatja a.zipfájlok feltöltését a phpMyAdminbaphp-gd: Lehetővé teszi a GD Graphics Library támogatásátphp-json: Támogatja a PHP-t a JSON szerializáláshozphp-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
apache2lehető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
Igenlehetőséget, amikor megkérdezi, hogy használja-e adbconfig-commonelemet 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.



