Установите phpMyAdmin со стеком LEMP в Ubuntu 20.04 LTS
Мы уже знаем, как установить phpMyAdmin со стеком LAMP в Ubuntu 20.04. Сегодня давайте посмотрим, как установить phpMyAdmin со стеком LEMP в версии Ubuntu 20.04 LTS. А затем мы также обсудим несколько мер безопасности, которые помогут защитить phpmyadmin от распространенных угроз. Сначала убедитесь, что у вас настроен стек LEMP в Ubuntu 20.04, как описано в следующей ссылке.
- Установить Nginx, MySQL, PHP (стек LEMP) в Ubuntu 20.04 LTS
После установки стека LEMP установите и защитите phpMyAdmin, как описано в следующих разделах.
Установите phpMyAdmin со стеком LEMP в Ubuntu 20.04 LTS
Запустите следующую команду, чтобы установить phpMyAdmin из терминала:
sudo apt install phpmyadmin
В следующем окне вам будет предложено выбрать веб-сервер, который должен быть автоматически настроен для запуска phpMyAdmin. Как вы можете видеть на снимке экрана ниже, Nginx недоступен в списке веб-серверов. Здесь перечислены только Apache и Lighthttpd. Поэтому не выбирайте какой-либо веб-сервер и просто оставьте его пустым. Выберите «ОК» и нажмите «ENTER», чтобы продолжить:
PhpMyAdmin требует, чтобы база данных была установлена и настроена, прежде чем ее можно будет использовать. Вы можете сделать это с помощью команды dbconfig.
Выберите Да, чтобы настроить базу данных для phpmyadmin с помощью dbconfig-common:
Вам необходимо предоставить пароль для phpmyadmin для регистрации на сервере базы данных MySQL. Если пароль не указан, будет сгенерирован случайный пароль.
Введите надежный пароль и нажмите ENTER, чтобы продолжить:
Повторно введите пароль:
На момент написания этого руководства, когда я пытался установить пароль для phpmyadmin, выдавалась следующая ошибка:
An error occurred while installing the database:
mysql said: ERROR 1819 (HY000) at line 1: Your password does not satisfy
the current policy requirements . Your options are:
* abort - Causes the operation to fail; you will need to downgrade,
reinstall, reconfigure this package, or otherwise manually intervene
to continue using it. This will usually also impact your ability to
install other packages until the installation failure is resolved.
* retry - Prompts once more with all the configuration questions
(including ones you may have missed due to the debconf priority
setting) and makes another attempt at performing the operation.
* retry (skip questions) - Immediately attempts the operation again,
skipping all questions. This is normally useful only if you have
solved the underlying problem since the time the error occurred.
* ignore - Continues the operation ignoring dbconfig-common errors.
This will usually leave this package without a functional database.
Эта ошибка возникает из-за того, что мы включили компонент ПОДТВЕРДИТЬ ПАРОЛЬ, как описано в разделе "2.2 Изменение метода аутентификации для root-пользователя MySQL" в прилагаемом выше руководстве по установке стека LEMP.
Чтобы решить эту проблему, вам необходимо временно отключить компонент «Проверка пароля» и снова включить его после установки пароля для phymyadmin. Нажмите «ОК», чтобы закрыть приведенное выше сообщение об ошибке, и выберите «Прервать», чтобы отменить установку phpmyadmin.
Теперь войдите в командную строку Mysql, выполнив следующую команду:
mysql -u root -p
В командной строке MySQL введите следующую команду, чтобы отключить плагин проверки пароля:
mysql> UNINSTALL COMPONENT "file://component_validate_password";
Обратите внимание, что приведенная выше команда только отключит плагин, но не удалит его. Вы можете включить его позже. Затем введите «exit», чтобы выйти из командной строки Mysql.
mysql> exit
Теперь попробуйте снова установить phpmyadmin, используя команду:
sudo apt install phpmyadmin
Выберите «Да» и нажмите ENTER, чтобы настроить базу данных для phpmyadmin с помощью dbconfig-common. На этот раз установка phpmyadmin пройдет без проблем.
После установки phpmyadmin повторно включите плагин проверки пароля. Для этого войдите в командную строку Mysql:
mysql -u root -p
В командной строке MySQL введите следующую команду, чтобы отключить плагин проверки пароля:
mysql> INSTALL COMPONENT "file://component_validate_password";
Введите exit, чтобы выйти из командной строки MySQL.
mysql> exit
Теперь создайте символическую ссылку для настройки веб-сервера Nginx для запуска phpmyadmin с помощью команды:
sudo ln -s /usr/share/phpmyadmin/ /var/www/html/phpmyadmin
Эта команда создаст символическую ссылку с именем «phpmyadmin» в корневом каталоге Nginx. Эта символическая ссылка фактически указывает на каталог /usr/share/phpmyadmin, где хранятся файлы.
Сделанный! Мы успешно установили PhpMyAdmin со стеком LEMP.
Доступ к панели управления phpMyAdmin
Откройте веб-браузер и перейдите по адресу "http://IP-Address/phpmyadmin" в адресной строке.
Вы должны увидеть страницу входа в phpmyadmin. Введите пользователя базы данных и его пароль:
Вы будете довольны панелью управления phpMyAdmin.
Отсюда вы можете создавать, удалять базы данных и управлять ими.
Создайте выделенного пользователя для доступа к панели управления phpMyAdmin.
После установки phpMyAdmin будет автоматически создан пользователь базы данных с именем 'phpmyadmin' и паролем администратора, который вы установили во время установки. Вы можете войти в панель управления phpmyAdmin, используя пользователя «phpmyadmin» или пользователя root mysql, как показано выше. Однако рекомендуется создать выделенного пользователя для управления базами данных через веб-интерфейс phpMyAdmin.
Для этого войдите в оболочку MySQL с помощью команды:
mysql -u root -p
Введите свой root-пароль MySQL. Теперь вы будете в оболочке MySQL.
Введите следующую команду, чтобы создать нового выделенного пользователя для phpmyadmin:
mysql> CREATE USER 'phpmyadminuser'@'localhost' IDENTIFIED BY 'Password123#@!';
Здесь phpmyadmin — новый пользователь для доступа к панели управления phpmyadmin. Пароль для phpmyadminuser: Password123#@!. Замените эти значения своими.
Затем дайте соответствующие привилегии пользователю «phpmyadminuser», используя команду:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'phpmyadminuser'@'localhost' WITH GRANT OPTION;
Наконец выйдите из оболочки MySQL:
mysql> exit
Теперь мы создали выделенного пользователя для управления базами данных через веб-интерфейс phpmyadmin. Давайте продолжим и получим доступ к панели управления phpmyadmin.
Откройте веб-браузер и перейдите по адресу «http://IP-адрес/phpayadmin». Введите вновь созданного пользователя базы данных и его пароль. Поздравляем! Вы вошли в систему как выделенный пользователь на веб-панели phpMyAdmin.
Безопасный phpMyAdmin
В этом разделе приведены несколько советов по обеспечению безопасности установки PhpMyAdmin. Обратите внимание, что следующие шаги сами по себе не смогут защитить phpMyAdmin на 100%. Однако они, по крайней мере, замедлят любые попытки злоумышленника проникнуть в вашу панель управления phpmyadmin.
Отключить root-вход MySQL на панель управления phpmyadmin
Разрешение пользователю root mysql доступа к панели управления phpMyAdmin небезопасно, особенно при управлении базами данных по сети. Вот почему в предыдущем разделе мы создали выделенного пользователя. Поскольку у нас уже есть выделенный пользователь, мы можем безопасно отключить root-вход в MySQL для доступа к панели управления phpmyadmin, чтобы минимизировать атаки.
Обычно phpmyadmin устанавливается в каталог /usr/share/phpmyadmin/, а его файлы конфигурации хранятся в каталоге /etc/phpmyadmin.
Отредактируйте файл конфигурации phpmyadmin:
sudo nano /etc/phpmyadmin/config.inc.php
Добавьте/измените следующие параметры:
[...]
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['AllowRoot'] = FALSE;
[...]
Сохраните и закройте файл.
Перезапустите веб-сервер Nginx с помощью команды:
sudo systemctl restart nginx
Теперь попробуйте войти в phpmyadmin как пользователь root. Вы получите сообщение об ошибке Доступ запрещен:
Изменить URL-адрес веб-интерфейса phpmyadmin
Это наиболее распространенная тактика, которую используют боты для получения доступа к phpmyadmin. Вы можете предотвратить это, изменив URL-адрес на что-то, что трудно угадать. Изменение URL-адреса phpmyadmin позволит избежать использования ботов или автоматических сценариев для сканирования URL-адресов и атак методом перебора.
Помните, мы создали символическую ссылку под названием «phpmyadmin» в корневом каталоге Nginx?
$ ls -l /var/www/html/
total 8
-rw-r--r-- 1 root root 612 Jun 2 07:15 index.nginx-debian.html
-rw-r--r-- 1 root root 20 Jun 2 07:35 info.php
lrwxrwxrwx 1 root root 22 Jun 2 08:14 phpmyadmin -> /usr/share/phpmyadmin/
Здесь phpmyadmin — это символическая ссылка, указывающая на каталог /usr/share/phpmyadmin.
Мы собираемся изменить имя символической ссылки с помощью команды:
sudo mv /var/www/html/phpmyadmin /var/www/html/ostechnix
Убедитесь, что имя содержит случайные символы и его очень сложно угадать.
С этого момента всякий раз, когда кто-то пытается получить доступ к странице phpmyadmin, перейдя по URL-адресу http://IP-адрес/phpmyadmin, он/она получит следующее сообщение об ошибке:
Потому что мы изменили URL. Новый URL-адрес phpmyadmin — http://IP-адрес/ostechnix.
Защищенная паролем страница входа в phpMyAdmin
Мы можем добавить дополнительный уровень безопасности, ограничив доступ к странице входа в phpmyadmin с помощью базового метода аутентификации HTTP. Это означает, что мы включаем защиту паролем для страницы входа в phpmyadmin, поэтому пользователям придется вводить дополнительное имя пользователя/пароль перед доступом к фактической странице входа в phpMyAdmin.
Сначала нам нужно сгенерировать файл паролей с помощью утилиты htpasswd. Утилита htpasswd является частью пакета apache2-utils. Итак, давайте установим его с помощью команды:
sudo apt install apache2-utils
Теперь создайте зашифрованный файл паролей с помощью команды:
sudo htpasswd -c /etc/nginx/.htpasswd ostechnix
Замените «ostechnix» на имя пользователя по вашему выбору. Введите надежный пароль дважды, чтобы создать файл паролей.
Чтобы просмотреть содержимое вновь созданного файла, введите команду «cat», как показано ниже:
cat /etc/nginx/.htpasswd
Вы увидите результат, как показано ниже:
ostechnix:$apr1$Us9YABHL$CMPDIuHaOB2lK/DVIzA2C/
Далее нам нужно указать путь к указанному выше файлу паролей в нашем файле конфигурации Nginx по умолчанию. Если вы следовали нашему руководству по установке LEMP, приложенному выше, конфигурация Nginx по умолчанию должна быть /etc/nginx/sites-available/default.
Отредактируйте файл конфигурации Nginx по умолчанию:
sudo nano /etc/nginx/sites-available/default
Добавьте следующие строки под блоком location»:
[...]
location /ostechnix {
auth_basic "Restricted Zone";
auth_basic_user_file /etc/nginx/.htpasswd;
}
[...]
Помните, мы изменили URL-адрес phpMyAdmin (http://IP-адрес/ostechnix) на предыдущем шаге? Вот почему я упомянул имя блока «ostechnix» в приведенном выше блоке. Замените его на свой. Сохраните и закройте файл.
Проверьте файл конфигурации Nginx на наличие синтаксических ошибок с помощью команды:
sudo nginx -t
Пример вывода:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Если вы не видите ошибок, перезапустите службу nginx, чтобы изменения вступили в силу.
sudo systemctl restart nginx
Теперь попробуйте получить доступ к URL-адресу phpMyAdmin из браузера. Вам будет предложено ввести имя пользователя и пароль:
Введите правильное имя пользователя и пароль, которые будут созданы ранее с помощью утилиты «htpasword». Теперь вы будете перенаправлены на фактическую страницу входа в phpMyAdmin, где вы можете ввести пользователя базы данных и его пароль для входа в веб-панель phpMyAdmin.