Содержание:
Управление базами данных MariaDB или MySQL можно осуществлять через командную строку. Однако такой вариант подходит не для всех пользователей, особенно начинающих. Чтобы облегчить эту задачу, можно воспользоваться веб-интерфейсом phpMyAdmin для управления БД.
В данном руководстве рассмотрено, как установить phpMyAdmin на CentOS 7 с веб-сервером Nginx, а также защитить его от потенциальных злоумышленников. Данный способ также подходит для версий CentOS 6 и CentOS 8.
Подготовка к установке
Технические требования к установке PhpMyAdmin
Установка phpMyAdmin на сервер возможна в случае, если на CentOS уже установлен и настроен стек LEMP (Linux, Nginx, MariaDB и PHP). Данный комплекс программ необходим для запуска, работы и дополнительной настройки веб-интерфейса PhpMyAdmin.
Установка дополнительных репозиториев
В официальных репозиториях CentOS 7 пакет phpMyAdmin отсутствует. Проблема решается добавлением в систему дополнительного репозитория EPEL (Extra Packages for Enterprise Linux). В нем имеется огромное количество дополнительных пакетов для установки разного ПО, включая phpMyAdmin.
Установка EPEL репозитория выполняется командой:
sudo yum -y install epel-release
Установка phpMyAdmin
Инсталляция PhpMyAdmin производится командой:
sudo yum -y install phpmyadmin
После непродолжительной установки файлы PhpMyAdmin будут распакованы по пути /usr/share/phpMyAdmin/. Даже после установки пакетов, PhpMyAdmin не будет работать, так как отсутствуют необходимые параметры в настройках хоста Nginx.
Настройка Nginx
PhpMyAdmin состоит из веб-страниц, написанных на языке PHP. Чтобы они стали доступны по определённому веб-адресу, нужно в настройки хоста Nginx добавить директиву «location», указывающую на каталог с веб-интерфейсом PhpMyAdmin, а так же набор необходимых параметров для работы с PHP.
Для внесения параметров необходимо открыть конфигурационный файл Nginx с настройками хоста. По умолчанию это файл «default.conf» (/etc/nginx/conf.d/default.conf).
Открыть конфигурационный файл можно с помощью редактора Nano при помощи следующей команды:
sudo nano /etc/nginx/conf.d/default.conf
В открывшемся файле нужно найти главную директиву «server» и добавить следующий блок «location»:
location /phpmyadmin { alias /usr/share/phpMyAdmin/; location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $request_filename; include fastcgi_params; fastcgi_ignore_client_abort off; } location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ { access_log off; log_not_found off; expires 1M; } }
В приведенном выше блоке «127.0.0.1:9000» – порт TCP порта для подключения к PHP.
Примечание. В CentOS, по умолчанию, PHP-FPM слушает Nginx через TCP порт. В случае, если сервер настроен на работу с PHP через сокет PHP-FPM, нужно изменить строку «fastcgi_pass 127.0.0.1:9000;» на «fastcgi_pass unix:/run/php-fpm/php-fpm.sock;» Где «/run/php-fpm/php-fpm.sock;» – путь до UNIX сокета.
Чтобы сохранить и закрыть файл, нужно нажать «Ctrl+X», потом «Y» и подтвердить изменения нажатием «Enter».
Проверить корректность введённый параметров можно командой:
nginx -t
Должен появится следующий вывод.
Примечание. Если вывод отличается от представленного, нужно проверить правильность внесенного кода в файл конфигурации Nginx. Вполне возможно, что были допущены ошибки при введении параметров или расстановке скобок «}» в конфигурационном файле.
Для применения параметров нужно перезагрузить Nginx:
sudo systemctl restart nginx
Проверка работоспособности PhpMyAdmin
Проверить работоспособность PhpMyAdmin можно, введя в адресной строке браузера IP-адрес сервера и добавив «/phpmyadmin»:
http:// 194.61.0.6/phpmyadmin/
Вместо «194.61.0.6» нужно ввести актуальный IP-адрес сервера или домена.
После перехода по веб-адресу должна открыться приветственная страница PhpMyAdmin.
Примечание. При возникновении ошибок 403, 502 и подобных стоит проверить правильность указанного в конфиге Nginx пути до UNIX сокета PHP-FPM. Если все параметры указаны верно, можно попробовать перенастроить PHP.
Вход в PhpMyAdmin
Чтобы выполнить вход, следует воспользоваться актуальным логином и паролем пользователя системы управления базой данных MySQL.
В случае, если пользователь MySQL не создан, выполнить регистрацию можно введя пару команд из оболочки MySQL.
Войти в оболочку MySQL можно командой:
sudo mysql -u root -p
Примечание. После ввода команды программа запросит пароль root пользователя MySQL. Если пароль не задан, нужно оставить поле «Enter password» пустым и нажать «Enter».
Для создания пользователя со всеми привилегиями нужно последовательно ввести следующие команды в оболочку MySQL:
CREATE USER 'user'@'localhost' IDENTIFIED BY 'mypassword'; GRANT ALL PRIVILEGES ON *.* TO 'user'@'localhost' WITH GRANT OPTION;
- «user» – логин создаваемой учётной записи.
- «mypassword» – пароль создаваемой учётной записи.
Теперь можно выполнить вход в PhpMyAdmin от имени созданного пользователя. После входа будет открыто окно с интерфейсом PhpMyAdmin.
На этом установка на сервер phpMyAdmin будет закончена. Далее следует защитить к нему доступ от возможности входа сторонних лиц.
Защита phpMyAdmin
Сразу же после установки phpMyAdmin дает сторонним лицам без особых трудностей получить доступ к базе данных сайта. После установки окно авторизации в веб-интерфейс PhpMyAdmin не имеет защиты и представляет собой большую уязвимость в безопасности. Это позволяет злоумышленнику использовать эксплойты или подбор паролей (брутфорс) для доступа к учётной записи MySQL.
Обеспечить безопасность можно с помощью двух несложных действий:
- Изменить стандартное местоположение phpMyAdmin на другое. Так боты не смогут отследить путь к веб-интерфейсу.
- Создать еще одно окно авторизации, но уже на уровне сервера. Только после его прохождения, появится возможность открыть окно входа в phpMyAdmin.
Изменение местоположения PhpMyAdmin
При настройке Nginx задается стандартный путь до PhpMyAdmin – «/phpmyadmin». Чтобы избежать многочисленных атак ботов, рекомендуется изменить этот адрес на уникальный.
Для внесения изменений нужно открыть конфигурационный файл Nginx:
sudo nano /etc/nginx/conf.d/default.conf
В открывшемся файле нужно найти блок «location /phpmyadmin {» и изменить слово «phpmyadmin» на уникальное, например «userphp».
Примечание. Местоположение в данном примере — «/userphp». Его следует изменить на другое — соответствующее актуальному.
Остается проверить, все ли сделано правильно, для чего — перейти по старому адресу для входа:
http://IP-адрес/phpmyadmin
Вместо окна авторизации должна появиться «ошибка 404». При этом открыть phpMyAdmin теперь возможно по новому адресу:
http://IP-адрес/userphp
Двухэтапная авторизация PhpMyAdmin
Вторая мера, усиливающей безопасность phpMyAdmin — создание дополнительного требования пройти аутентификацию. Лишь после ее прохождения пользователь сможет открыть окно авторизации в веб-интерфейс PhpMyAdmin.
В Nginx такая функция доступна после установки. В данном случае, достаточно немного отредактировать конфигурационный файл Nginx. Однако, перед этим потребуется создать файл с базой паролей, где будут сохранены данные для авторизации.
Генерация зашифрованного пароля
Согласно требованиям Nginx, сохраненные пароли необходимо зашифровать функцией «crypt ()». Она включена в пакет OpenSSL, который устанавливается автоматически вместе с Nginx.
Для создания зашифрованных паролей в терминале используется команда:
openssl passwd
Программа предложит задать пароль и ввести его повторно для подтверждения. Далее она покажет, как он выглядит в зашифрованном виде. Получится примерно следующее значение:
Примечание. Введённый в программу пароль будет использоваться для входа в дополнительное окно авторизации.
Полученное, после выполнения команды значение нужно сохранить, поскольку позже его потребуется добавить в создаваемый файл авторизации.
Создание файла авторизации
Можно переходить к созданию самого файла авторизации. В последующем он будет занесён в переменную Nginx «auth_basic_user_file» для обозначения логина и зашифрованного пароля. В этом примере файл авторизации будет назван «pma_pass» и сохранен в папке настроек Nginx:
sudo nano /etc/nginx/pma_pass
В данном файле остается ввести логин пользователя, который будет использоваться. После него ставится двоеточие (:) и уже затем добавляется зашифрованный пароль, сгенерированный пакетом openssl passwd.
admin:8s3CCk/u7uOQ6
В приведенном выше примере:
- «admin» — логин для входа. Для повышения уровня безопасности, рекомендуется придумать собственное и уникальное имя.
- «8s3CCk/u7uOQ6» — значение зашифрованного пароля, полученное из предыдущих действий.
По завершении ввода остается сохранить и закрыть текстовый редактор.
Настройка Nginx
Можно приступать к редактированию файла настроек веб-сервера Nginx. Его следует запустить в своем текстовом редакторе (в данном примере — Nano):
sudo nano /etc/nginx/conf.d/default.conf
В блок «location /phpmyadmin {» нужно внести следующие две строки:
auth_basic "Admin Login"; auth_basic_user_file /etc/nginx/pma_pass;
В приведенном выше примере:
- «auth_basic «Admin Login»;» — параметр, отвечающий за показ пользователям окна авторизации. Значение «Admin Login» отвечает за показ дополнительного информационного сообщения пользователям (можно изменить по желанию).
- «auth_basic_user_file /etc/nginx/pma_pass;» — параметр, указывающий на путь до файла с логином и зашифрованным паролем.
Остается сохранить изменения и закрыть этот файл.
Чтобы дополнительный шлюз был запущен, потребуется выполнить перезагрузку веб-сервера командой:
sudo systemctl restart nginx
Проверка работы двухэтапной аутентификации
При попытке перехода по веб-адресу phpMyAdmin, браузер покажет окно с запросом ввести логин и пароль, добавленные в файле «pma_pass».
При попытке авторизоваться с помощью несуществующего логина и пароля, сервер выдаст ошибку «403 Forbidden».