Установите и защитите phpMyAdmin на CentOS 8
На этой странице
- Требования
- Установить сервер LAMP
- Настройка MariaDB
- Установите phpMyAdmin
- Настройка Apache для phpMyAdmin
- Настройка SELinux и брандмауэра
- Защита phpMyAdmin
- Разрешить phpMyAdmin с определенного IP-адреса
- Настроить дополнительный уровень аутентификации
phpMyAdmin — это бесплатный инструмент с открытым исходным кодом для управления серверами MySQL и MariaDB через веб-интерфейс. С помощью phpMyAdmin вы можете создавать и управлять базами данных и пользователями, выполнять операторы SQL, импортировать и экспортировать данные, а также выполнять действия с базами данных, такие как создание, удаление таблиц, столбцов, индексов, разрешений и многое другое. phpMyAdmin — один из самых популярных и широко используемых инструментов администрирования, особенно для веб-хостинга.
Функции
- Обеспечивает простой и удобный веб-интерфейс.
- Импорт данных из CSV и SQL.
- Поддерживает большинство функций MySQL, включая создание, копирование, удаление, переименование, удаление и изменение баз данных, таблиц, полей и индексов.
- Позволяет экспортировать данные в различные форматы, такие как PDF, CSV, SQL, XML и многие другие.
- Управление несколькими серверами.
- Создание сложных запросов с использованием Query-by-example (QBE).
В этом руководстве мы покажем вам, как установить и защитить phpMyAdmin на сервере CentOS 8.
Требования
- Сервер под управлением CentOS 8.
- На сервере настроен пароль root.
Установить LAMP-сервер
Во-первых, вам нужно будет установить Apache, MariaDB, PHP и другие библиотеки PHP на ваш сервер. Вы можете установить их все с помощью следующей команды:
dnf install httpd mariadb-server php php-pdo php-pecl-zip php-json php-common php-fpm php-mbstring php-cli php-mysqlnd php-json php-mbstring wget unzip
После установки всех пакетов запустите службу Apache и MariaDB и включите их после перезагрузки системы с помощью следующей команды:
systemctl start httpd
systemctl start mariadb
systemctl enable httpd
systemctl enable mariadbНастроить MariaDB
По умолчанию MariaDB не защищена. Так что вам нужно будет обеспечить его в первую очередь. Вы можете сделать это, запустив скрипт mysql_secure_installation:
mysql_secure_installation
Ответьте на все вопросы, как показано ниже:
Set root password? [Y/n] Y New password: Remove anonymous users? [Y/n] Y Disallow root login remotely? [Y/n] Y Remove test database and access to it? [Y/n] Y Reload privilege tables now? [Y/n] Y
После того, как вы закончите, вы должны увидеть следующий вывод:
... Success! Cleaning up... All done! If you've completed all of the above steps, your MariaDB installation should now be secure. Thanks for using MariaDB!
На этом этапе ваша установка MariaDB защищена.
Установите phpMyAdmin
По умолчанию phpMyAdmin недоступен в стандартном репозитории CentOS 8. Итак, вам нужно будет загрузить последнюю версию phpMyAdmin с их официального сайта. Вы можете скачать его с помощью следующей команды:
wget https://files.phpmyadmin.net/phpMyAdmin/4.9.2/phpMyAdmin-4.9.2-all-languages.zip
После загрузки разархивируйте загруженный файл с помощью следующей команды:
unzip phpMyAdmin-4.9.2-all-languages.zip
Затем переместите извлеченный контент в каталог /usr/share, как показано ниже:
mv phpMyAdmin-4.9.2-all-languages /usr/share/phpmyadmin
Затем измените каталог на /usr/share/phpmyadmin и переименуйте файл config.sample.inc.php:
cd /usr/share/phpmyadmin
mv config.sample.inc.php config.inc.phpЗатем откройте файл в своем любимом текстовом редакторе, как показано ниже:
nano config.inc.php
Измените следующую строку:
$cfg['blowfish_secret'] = 'your-secret-password';
Сохраните и закройте файл, когда закончите. Затем импортируйте create_tables.sql с помощью следующей команды:
mysql < /usr/share/phpmyadmin/sql/create_tables.sql -u root -p
Укажите свой пароль root, когда будет предложено импортировать таблицу.
Затем создайте каталог tmp для phpmyadmin и предоставьте соответствующие разрешения:
mkdir /usr/share/phpmyadmin/tmp
chown -R apache:apache /usr/share/phpmyadmin
chmod 777 /usr/share/phpmyadmin/tmpНастроить Apache для phpMyAdmin
Далее вам нужно будет создать файл конфигурации виртуального хоста Apache для phpMyAdmin. Вы можете создать его с помощью следующей команды:
nano /etc/httpd/conf.d/phpmyadmin.conf
Добавьте следующие строки:
Alias /phpmyadmin /usr/share/phpmyadmin <Directory /usr/share/phpmyadmin/> AddDefaultCharset UTF-8 <IfModule mod_authz_core.c> # Apache 2.4 <RequireAny> Require all granted </RequireAny> </IfModule> <IfModule !mod_authz_core.c> # Apache 2.2 Order Deny,Allow Deny from All Allow from 127.0.0.1 Allow from ::1 </IfModule> </Directory> <Directory /usr/share/phpmyadmin/setup/> <IfModule mod_authz_core.c> # Apache 2.4 <RequireAny> Require all granted </RequireAny> </IfModule> <IfModule !mod_authz_core.c> # Apache 2.2 Order Deny,Allow Deny from All Allow from 127.0.0.1 Allow from ::1 </IfModule> </Directory>
Сохраните и закройте файл, когда закончите. Затем перезапустите службу Apache с помощью следующей команды:
systemctl restart httpd
Вы можете проверить статус Apache с помощью следующей команды:
systemctl status httpd
Вы должны увидеть следующий вывод:
? httpd.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled) Drop-In: /usr/lib/systemd/system/httpd.service.d ??php-fpm.conf Active: active (running) since Wed 2019-12-18 01:07:52 EST; 6s ago Docs: man:httpd.service(8) Main PID: 5636 (httpd) Status: "Started, listening on: port 80" Tasks: 213 (limit: 25044) Memory: 28.7M CGroup: /system.slice/httpd.service ??5636 /usr/sbin/httpd -DFOREGROUND ??5639 /usr/sbin/httpd -DFOREGROUND ??5640 /usr/sbin/httpd -DFOREGROUND ??5641 /usr/sbin/httpd -DFOREGROUND ??5642 /usr/sbin/httpd -DFOREGROUND Dec 18 01:07:52 centos8 systemd[1]: Stopped The Apache HTTP Server. Dec 18 01:07:52 centos8 systemd[1]: Starting The Apache HTTP Server... Dec 18 01:07:52 centos8 httpd[5636]: AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::200:d0> Dec 18 01:07:52 centos8 httpd[5636]: Server configured, listening on: port 80 Dec 18 01:07:52 centos8 systemd[1]: Started The Apache HTTP Server.
Настройте SELinux и брандмауэр
По умолчанию SELinux включен в CentOS 8. Поэтому вам нужно будет настроить SELinux для правильной работы phpMyAdmin.
Сначала установите пакет policycoreutils-python-utils для управления средой SELinux с помощью следующей команды:
dnf install policycoreutils-python-utils
Затем включите доступ к каталогу /usr/share/phpmyadmin с помощью следующей команды:
semanage fcontext -a -t httpd_sys_rw_content_t '/usr/share/phpmyadmin/'
semanage fcontext -a -t httpd_sys_rw_content_t "/usr/share/phpmyadmin/tmp(/.*)?"Теперь просмотрите все файлы в вашем каталоге phpmyadmin, выполнив следующую команду:
restorecon -Rv '/usr/share/phpmyadmin/'
Затем вам нужно будет создать правило брандмауэра, чтобы разрешить службу HTTP из внешних сетей. Вы можете разрешить это с помощью следующей команды:
firewall-cmd --permanent --add-service=http
firewall-cmd --reloadТеперь phpMyAdmin установлен и настроен. Теперь пришло время проверить, работает он или нет.
Откройте веб-браузер и введите URL-адрес http://your-server-ip/phpmyadmin. Вы будете перенаправлены на следующую страницу:
Безопасный phpMyAdmin
На данный момент экземпляр phpMyAdmin работает правильно. Однако защита вашего экземпляра phpMyAdmin от внешнего мира является для вас важной задачей. В этом разделе мы покажем вам, как защитить ваш экземпляр phpMyAdmin.
Разрешить phpMyAdmin с определенного IP
Во-первых, вам нужно настроить phpMyAdmin так, чтобы он был доступен только с IP-адреса вашего домашнего подключения.
Вы можете настроить его, отредактировав файл /etc/httpd/conf.d/phpmyadmin.conf:
nano /etc/httpd/conf.d/phpmyadmin.conf
Найдите следующие строки:
<RequireAny> Require all granted </RequireAny>
И замените их следующими:
<RequireAny> Require ip your-home--connection-ip-address Require ip ::1 </RequireAny>
Сохраните и закройте файл, когда закончите.
Настройка дополнительного уровня аутентификации
Рекомендуется защитить паролем каталог phpmyadmin, настроив базовую аутентификацию.
Для этого создайте новый файл аутентификации с помощью инструмента htpasswd, как показано ниже:
mkdir /etc/phpmyadmin
htpasswd -c /etc/phpmyadmin/.htpasswd adminВам будет предложено ввести пароль администратора, как показано ниже:
New password: Re-type new password: Adding password for user admin
Далее вам нужно будет настроить Apache для использования файла .htpasswd. Вы можете сделать это, отредактировав файл /etc/httpd/conf.d/phpmyadmin.conf.
nano /etc/httpd/conf.d/phpmyadmin.conf
Добавьте следующие строки ниже строки «AddDefaultCharset UTF-8»:
Options +FollowSymLinks +Multiviews +Indexes AllowOverride None AuthType basic AuthName "Authentication Required" AuthUserFile /etc/phpmyadmin/.htpasswd Require valid-user
Сохраните файл и перезапустите службу Apache, чтобы изменения вступили в силу:
systemctl restart httpd
Доступ к phpMyAdmin
Теперь ваш экземпляр phpMyAdmin защищен дополнительным уровнем безопасности. Откройте веб-браузер и введите URL-адрес http://your-server-ip/phpmyadmin. Вам будет предложено ввести учетные данные пользователя, которого вы ранее создали, как показано ниже:
Укажите имя пользователя и пароль администратора, затем нажмите кнопку ОК. Вы будете перенаправлены на страницу входа в phpMyAdmin:
Теперь предоставьте свои учетные данные для входа в систему с правами администратора MySQL и нажмите кнопку «Перейти». Вы должны увидеть следующую страницу:
Заключение
Поздравляем! вы успешно установили и защитили phpMyAdmin на сервере CentOS 8. Теперь вы можете создавать базы данных, пользователей, таблицы и управлять ими через веб-интерфейс. Не стесняйтесь спрашивать меня, если у вас есть какие-либо вопросы.