Како да инсталирате и да го обезбедите phpMyAdmin на Ubuntu 18.04
Вовед
Додека на многу корисници им е потребна функционалноста на системот за управување со бази на податоци како MySQL, тие можеби нема да се чувствуваат удобно во интеракција со системот исклучиво од клиентот на командната линија MySQL.
phpMyAdmin е создаден за корисниците да можат да комуницираат со MySQL преку веб-интерфејс. Во ова упатство, ќе разговараме како да инсталирате и да го заштитите phpMyAdmin за да можете безбедно да го користите за да управувате со вашите бази на податоци на системот Ubuntu 18.04.
Предуслови
За да го завршите ова упатство, ќе ви треба следново:
- Сервер кој работи на Ubuntu 18.04. Овој сервер треба да има неroot административен корисник со привилегии
sudo
, како и заштитен ѕид конфигуриран со UFW. За да го поставите ова, следете го нашиот првичен водич за поставување сервер за Ubuntu 18.04. - Инсталиран стек LAMP на вашиот сервер. Можете да го следите ова упатство за инсталирање на стек LAMP на Ubuntu 18.04 за да го поставите ова.
Конечно, постојат важни безбедносни размислувања при користење на софтвер како phpMyAdmin, бидејќи тоа:
- Комуницира директно со вашата инсталација на MySQL
- Се справува со автентикација користејќи MySQL ингеренциите
- Извршува и враќа резултати за произволни SQL барања
Од овие причини, и бидејќи е широко распространета PHP апликација која често е цел на напади, никогаш не треба да го стартувате phpMyAdmin на оддалечени системи преку обична HTTP врска. Ако немате постоечки домен конфигуриран со SSL/TLS сертификат, можете да го следите ова упатство за поставување виртуелен хост на Apache.
Откако ќе завршите со овие чекори, подготвени сте да започнете со овој водич.
Чекор 1 - Инсталирање на phpMyAdmin
За да започнеме, ќе инсталираме phpMyAdmin од стандардните складишта на Ubuntu.
Прво, ажурирајте го индексот на пакети на вашиот сервер:
- sudo apt update
Потоа користете apt
за да ги повлечете датотеките и да ги инсталирате на вашиот систем:
- sudo apt install phpmyadmin php-mbstring php-gettext
Ова ќе ви постави неколку прашања за правилно да ја конфигурирате инсталацијата.
Предупредување: кога ќе се појави барањето, \apache2 е означено, но не избрано. За да изберете Apache, притиснете SPACE
, TAB
, потоа ENTER
.
Ако не притиснете SPACE
за да изберете Apache, инсталаторот не ќе ги премести потребните датотеки за време на инсталацијата.
- За изборот на серверот, изберете
apache2
- Изберете
Да
кога ќе ве прашаат дали да се користиdbconfig-common
за поставување на базата на податоци - Потоа ќе биде побарано да изберете и потврдите лозинка за апликацијата MySQL за phpMyAdmin
Процесот на инсталација ја додава конфигурациската датотека phpMyAdmin Apache во директориумот /etc/apache2/conf-enabled/
, каде што се чита автоматски. Единственото нешто што треба да направите е експлицитно да ја овозможите наставката mbstring
PHP, што можете да го направите со пишување:
- sudo phpenmod mbstring
Потоа, рестартирајте го Apache за вашите промени да бидат препознаени:
- sudo systemctl restart apache2
phpMyAdmin сега е инсталиран и конфигуриран. Меѓутоа, пред да можете да се најавите и да започнете да комуницирате со вашите бази на податоци на MySQL, ќе треба да се осигурате дека вашите корисници на MySQL ги имаат привилегиите потребни за интеракција со програмата.
Чекор 2 - Прилагодување на автентикацијата и привилегиите на корисникот
Кога го инсталиравте phpMyAdmin на вашиот сервер, тој автоматски создаде корисник на база на податоци наречена phpmyadmin
кој извршува одредени основни процеси за програмата. Наместо да се најавувате како овој корисник со административната лозинка што сте ја поставиле при инсталацијата, се препорачува да се најавите или како ваш root корисник на MySQL или како корисник посветен на управување со бази на податоци преку интерфејсот phpMyAdmin.
Конфигурирање на пристап до лозинка за MySQL Root сметка
Во Ubuntu системите што работат на MySQL 5.7 (и подоцнежните верзии), корисникот на root MySQL е поставен да се автентицира со користење на приклучокот auth_socket
стандардно наместо со лозинка. Ова овозможува поголема безбедност и употребливост во многу случаи, но исто така може да ги комплицира работите кога треба да дозволите надворешна програма - како phpMyAdmin - да пристапи до корисникот.
За да се најавите на phpMyAdmin како ваш root корисник на MySQL, ќе треба да го префрлите неговиот метод за автентикација од auth_socket
во mysql_native_password
ако не сте' веќе не го направив тоа. За да го направите ова, отворете го барањето за MySQL од вашиот терминал:
- sudo mysql
Следно, проверете кој метод за автентикација го користи секоја од вашите кориснички сметки на MySQL со следнава команда:
- SELECT user,authentication_string,plugin,host FROM mysql.user;
Output+------------------+-------------------------------------------+-----------------------+-----------+
| user | authentication_string | plugin | host |
+------------------+-------------------------------------------+-----------------------+-----------+
| root | | auth_socket | localhost |
| mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *8486437DE5F65ADC4A4B001CA591363B64746D4C | mysql_native_password | localhost |
| phpmyadmin | *5FD2B7524254B7F81B32873B1EA6D681503A5CA9 | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
5 rows in set (0.00 sec)
Во овој пример, корисникот root всушност се автентицира со помош на приклучокот auth_socket
. За да ја конфигурирате сметката root да се автентицира со лозинка, извршете ја следнава команда ALTER USER
. Променете ја лозинка
на силна лозинка по ваш избор:
- ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
Потоа, извршете FLUSH PRIVILEGES
што му кажува на серверот повторно да ги вчита табелите за грантови и да ги стави на сила вашите нови промени:
- FLUSH PRIVILEGES;
Повторно проверете ги методите за автентикација што ги користи секој од вашите корисници за да потврдите дека root повеќе не се автентицира со помош на приклучокот auth_socket
:
- SELECT user,authentication_string,plugin,host FROM mysql.user;
Output+------------------+-------------------------------------------+-----------------------+-----------+
| user | authentication_string | plugin | host |
+------------------+-------------------------------------------+-----------------------+-----------+
| root | *DE06E242B88EFB1FE4B5083587C260BACB2A6158 | mysql_native_password | localhost |
| mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *8486437DE5F65ADC4A4B001CA591363B64746D4C | mysql_native_password | localhost |
| phpmyadmin | *5FD2B7524254B7F81B32873B1EA6D681503A5CA9 | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
5 rows in set (0.00 sec)
Овој излез покажува дека корисникот на root ќе се автентицира со помош на лозинка. Сега можете да се најавите на интерфејсот phpMyAdmin како ваш root корисник со лозинката што сте му ја поставиле овде.
Конфигурирање на пристап до лозинка за посветен MySQL корисник
Алтернативно, некои може да откријат дека подобро одговара на нивниот работен тек да се поврзат со phpMyAdmin со посветен корисник. За да го направите ова, отворете ја школката MySQL уште еднаш:
- sudo mysql
Забелешка: Ако имате овозможено автентикација на лозинка, како што е опишано во претходниот дел, ќе треба да користите друга команда за да пристапите до школката на MySQL. Следното ќе го изврши вашиот MySQL клиент со редовни кориснички привилегии, а вие ќе стекнете администраторски привилегии во базата на податоци само со автентикација:
- mysql -u root -p
Оттаму, креирајте нов корисник и дајте му силна лозинка:
- CREATE USER 'sammy'@'localhost' IDENTIFIED BY 'password';
Потоа, дајте му соодветни привилегии на вашиот нов корисник. На пример, можете да му дадете на корисничките привилегии на сите табели во базата на податоци, како и моќ за додавање, менување и отстранување на кориснички привилегии, со оваа команда:
- GRANT ALL PRIVILEGES ON *.* TO 'sammy'@'localhost' WITH GRANT OPTION;
После тоа, излезете од школката MySQL:
- exit
Сега можете да пристапите до веб-интерфејсот со посета на името на доменот на вашиот сервер или јавната IP адреса, проследено со /phpmyadmin
:
http://your_domain_or_IP/phpmyadmin
Најавете се на интерфејсот, или како root или со новото корисничко име и лозинка што штотуку ги конфигуриравте.
Кога ќе се најавите, ќе бидете префрлени на корисничкиот интерфејс phpMyAdmin:
Сега кога сте во можност да се поврзете и да комуницирате со phpMyAdmin, сè што треба да направите е да ја зацврстите безбедноста на вашиот систем за да го заштитите од напаѓачи.
Чекор 3 - Обезбедување на вашиот phpMyAdmin пример
Поради својата сеприсутност, phpMyAdmin е популарна цел за напаѓачите и треба да внимавате да спречите неовластен пристап. Еден од најлесните начини да го направите ова е да поставите порта пред целата апликација со користење на вградените функционалности за автентикација и авторизација .htaccess
на Apache.
За да го направите ова, прво мора да ја овозможите употребата на отфрлања на датотеката .htaccess
со уредување на вашата конфигурациска датотека Apache.
Користете го омилениот уредувач на текст за да ја уредите поврзаната датотека што е сместена во директориумот за конфигурација на Apache. Овој пример користи nano
:
- sudo nano /etc/apache2/conf-available/phpmyadmin.conf
Додадете директива Allow Override All
во делот
од конфигурациската датотека, вака:
<Directory /usr/share/phpmyadmin>
Options FollowSymLinks
DirectoryIndex index.php
AllowOverride All
. . .
Кога ќе ја додадете оваа линија, зачувајте ја и затворете ја датотеката. Ако сте користеле nano
за уредување на датотеката, направете го тоа со притискање CTRL + X
, Y
и потоа ENTER
.
За да ги имплементирате промените што ги направивте, рестартирајте го Apache:
- sudo systemctl restart apache2
Сега кога ја овозможивте употребата на .htaccess
за вашата апликација, треба да креирате датотека .htaccess
за навистина да имплементирате одредена безбедност.
За да може ова да биде успешно, датотеката мора да биде креирана во директориумот на апликацијата. Можете да ја креирате потребната датотека и да ја отворите во вашиот уредувач на текст со права на root со внесување:
- sudo nano /usr/share/phpmyadmin/.htaccess
Во оваа датотека, внесете ги следните информации:
AuthType Basic
AuthName "Restricted Files"
AuthUserFile /etc/phpmyadmin/.htpasswd
Require valid-user
Еве што значи секоја од овие редови:
AuthType Basic
: оваа линија го одредува типот на автентикација што ја спроведувате. Овој тип ќе имплементира автентикација на лозинка со помош на датотека со лозинка.AuthName
: Ова ја поставува пораката за дијалог прозорецот за автентикација. Треба да го задржите ова генеричко за неовластени корисници да не добијат никакви информации за тоа што е заштитено.AuthUserFile
: Ова ја поставува локацијата на датотеката со лозинка што ќе се користи за автентикација. Ова треба да биде надвор од директориумите што се опслужуваат. Ќе ја создадеме оваа датотека наскоро.Потребен е валиден корисник
: Ова одредува дека само автентицираните корисници треба да имаат пристап до овој ресурс. Ова е она што всушност ги спречува неовластените корисници да влезат.
Кога ќе завршите, зачувајте ја и затворете ја датотеката.
Локацијата што ја избравте за датотеката со лозинка беше /etc/phpmyadmin/.htpasswd
. Сега можете да ја креирате оваа датотека и да ја предадете на почетен корисник со помошната алатка htpasswd
:
- sudo htpasswd -c /etc/phpmyadmin/.htpasswd username
Ќе ви биде побарано да изберете и потврдите лозинка за корисникот што го креирате. Потоа, датотеката се креира со хашираната лозинка што сте ја внеле.
Ако сакате да внесете дополнителен корисник, треба да го сторите тоа без знамето -c
, вака:
- sudo htpasswd /etc/phpmyadmin/.htpasswd additionaluser
Сега, кога ќе пристапите до вашиот поддиректориум phpMyAdmin, ќе ви биде побарано дополнителното име и лозинка на сметката што штотуку ги конфигуриравте:
https://domain_name_or_IP/phpmyadmin
Откако ќе ја внесете автентикацијата на Apache, ќе бидете префрлени на редовната страница за автентикација на phpMyAdmin за да ги внесете вашите акредитиви на MySQL. Ова поставување додава дополнителен слој на безбедност, што е пожелно бидејќи phpMyAdmin страдаше од ранливости во минатото.
Заклучок
Сега треба да имате конфигуриран phpMyAdmin и подготвен за употреба на вашиот Ubuntu 18.04 сервер. Користејќи го овој интерфејс, можете лесно да креирате бази на податоци, корисници, табели итн., и да ги извршувате вообичаените операции како што се бришење и менување структури и податоци.