Установка и защита phpMyAdmin+Apache на сервере CentOS 7

Реляционные системы управления базами данных (СУБД), такие как MySQL и MariaDB, нужны для работы большинства сайтов и приложений. Однако не все пользователи умеют управлять такими СУБД при помощи командной строки.

Чтобы устранить эту проблему, был разработан phpMyAdmin – это альтернативный веб-интерфейс для работы с СУБД. В данном руководстве речь пойдёт об установке и защите phpMyAdmin на сервере CentOS 7. В качестве веб-сервера используется Apache – самый популярный веб-сервер в мире.

Требования

Чтобы создать надёжную основу для установки phpMyAdmin+Apache, нужно выполнить начальную настройку сервера CentOS 7 и добавить не-рутового пользователя с доступом к sudo.

Кроме того, нужно предварительно установить стек LAMP (Linux, Apache, MariaDB, PHP). Эта платформа необходима для обслуживания интерфейса phpMyAdmin; MariaDB – ответвление MySQL, СУБД, которой можно также управлять при помощи phpMyAdmin. Чтобы получить инструкции по установке этого стека, читайте это руководство.

1: Установка phpMyAdmin

К сожалению, стандартные репозитории CentOS 7 не содержат пакетов phpMyAdmin, потому нужно добавить репозиторий EPEL. EPEL (ExtraPackages for Enterprise Linux) предоставляет большое количество дополнительных пакетов, в том числе и phpMyAdmin.

Процесс добавления репозитория EPEL теперь очень прост. Для этого нужно установить пакет epel-release, который перенастраивает менеджер пакетов для использования EPEL.

Для этого введите:

sudo yum install epel-release

Итак, теперь репозиторий EPEL добавлен в текущую систему. Используйте менеджер пакетов yum, чтобы установить phpMyAdmin:

sudo yum install phpmyadmin

Обратите внимание: во время установки был добавлен конфигурационный файл Apache, содержащий все необходимые настройки. Его нужно немного отредактировать, чтобы подогнать под текущую систему.

Откройте файл в текстовом редакторе:

sudo nano /etc/httpd/conf.d/phpMyAdmin.conf

В нём находятся блоки каталогов с условной логикой, объясняющей политику доступа к каталогам. В целом, в файле определены два каталога, содержащие конфигурации, которые будут действительны как для Apache 2.2, так и для Apache 2.4 (который используется в этом руководстве).

В настоящее время эта установка запрещает все подключения, кроме подключений самого сервера. Для настройки удалённого доступа нужно  указать IP-адрес локального компьютера.

Измените строку Require ip 127.0.0.1 (или Allow from 127.0.0.1), указав в ней IP-адрес локального компьютера.

Примечание: Чтобы узнать этот IP-адрес, читайте следующий раздел.

В целом, файл содержит 4 строки, которые нужно отредактировать:

. . .
Require ip your_IP_address
. . .
Allow from your_IP_address
. . .
Require ip your_IP_address
. . .
Allow from your_IP_address
. . .

Отредактировав файл, перезапустите Apache, чтобы обновить настройки.

sudo systemctl restart httpd.service

Теперь phpMyAdmin готов к работе. Чтобы открыть интерфейс, введите в браузер доменное имя или внешний IP-адрес, а затем /phpmyadmin:

http://server_domain_or_IP/phpMyAdmin

На экране появится стандартная страница авторизации phpMyAdmin.

Чтобы войти, используйте учётные данные пользователя MariaDB. К примеру, можно использовать root-пользователя MariaDB и его пароль. Получив валидные учётные данные, phpMyAdmin откроет интерфейс администратора.

Как узнать свой IP-адрес?

Чтобы настроить удалённые подключения, нужно знать IP-адрес компьютера. Это мера предосторожности, запрещающая доступ к серверу посторонним пользователям.

Внимание: Это IP-адрес не виртуального сервера, а локальной машины!

Чтобы узнать IP-адрес, посетите один из этих сайтов в веб-браузере:

Сравните полученные результаты и убедитесь, что все они возвращают один и тот же адрес. Используйте полученный IP в конфигурационном файле.

2: Защита phpMyAdmin

На данном этапе phpMyAdmin полностью готов к использованию. Но установка веб-интерфейса открыла доступ к базе данных MariaDB, что представляет серьёзный риск для безопасности сервера.

Даже страница авторизации не может восстановить безопасность. Из-за своей популярности и доступа к большим объёмам данных phpMyAdmin часто подвергается хакерским атакам.

Мы применим две основные стратегии для снижения риска взлома. Во-первых, нужно изменить местонахождение установки (сейчас это /phpmyadmin), чтобы исключить ботов, которые пытаются взломать сервер методом автоматизированного подбора пароля. Во-вторых, нужно создать дополнительный шлюз аутентификации на уровне веб-сервера Apache, который необходимо пройти, чтобы получить доступ к странице входа PhpMyAdmin.

Изменение адреса phpMyAdmin

Чтобы веб-сервер Apache мог корректно взаимодействовать с phpMyAdmin, в конфигурационном файле используется директива alias, задающая местонахождение файлов.

Чтобы изменить URL, по которому доступен phpMyAdmin, нужно просто изменить значение этой директивы. Откройте конфигурационный файл Apache для phpMyAdmin:

sudo nano /etc/httpd/conf.d/phpMyAdmin.conf

В конце файла находятся следующие строки:

Alias /phpMyAdmin /usr/share/phpMyAdmin
Alias /phpmyadmin /usr/share/phpMyAdmin

Эти строки задают местонахождение файлов phpMyAdmin. То есть, если в браузере открыть доменное имя или IP-адрес, а затем добавить /phpMyAdmin или /phpmyadmin, на экране появится контент /usr/share/phpMyAdmin.

Эти директивы очень часто становятся мишенью ботов и злоумышленников. Потому нужно их нужно закомменитровать и добавить свою директиву другим значением. Выберите нестандартное значение, которое не отображает цели; для примера в руководстве используется /nothingtosee.

Итак, закомментируйте или удалите существующие строки и добавьте в файл новую:

# Alias /phpMyAdmin /usr/share/phpMyAdmin
# Alias /phpmyadmin /usr/share/phpMyAdmin
Alias /nothingtosee /usr/share/phpMyAdmin

Сохраните и закройте файл.

Чтобы активировать изменения, перезапустите веб-сервис.

sudo systemctl restart httpd.service

Убедитесь, что всё выполнено верно. Попробуйте посетить предыдущее местонахождение установки phpMyAdmin; на экране должна появиться ошибка 404.

http://server_domain_or_IP/phpMyAdmin
Not Found
The requested URL /phpMyAdmin is not found on this server.

Теперь интерфейс phpMyAdmin доступен по новой ссылке:

http://server_domain_or_IP/nothingtosee

Настройка шлюза авторизации веб-сервера

Теперь нужно создать страницу авторизации сервера, которая будет защищать страницу входа PhpMyAdmin.

К счастью, многие веб-серверы, – и Apache в том числе, – поставляются с этой функцией. Нужно просто настроить Apache для поддержки файла авторизации.

Откройте конфигурационный файл Apache для phpMyAdmin:

sudo nano /etc/httpd/conf.d/phpMyAdmin.conf

В блок настроек каталога /usr/share/phpMyAdmin (но вне других внутренних блоков) нужно добавить директиву AllowOverride:

. . .
<Directory /usr/share/phpMyAdmin/>
AllowOverride All
<IfModule mod_authz_core.c>
. . .
</Directory>
. . .

Сохраните и закройте файл.Это позволит внести дополнительные настройки в файл .htaccess, который находится в каталоге phpMyAdmin. Используйте этот файл, чтобы настроить дополнительную авторизацию.

Перезапустите сервис, чтобы активировать обновления:

sudo systemctl restart httpd.service

Создание файла .htaccess

Теперь директива AllowOverride будет направлять Apache в файл .htaccess в каталоге /usr/share/phpMyAdmin. Если веб-сервер находит такой файл, он выполняет указанные в нём директивы.

Создайте в каталоге /usr/share/phpMyAdmin файл htaccess.

sudo nano /usr/share/phpMyAdmin/.htaccess

Внесите в этот файл следующие данные:

AuthType Basic
AuthName "Admin Login"
AuthUserFile /etc/httpd/pma_pass
Require valid-user

Теперь файл содержит следующие директивы:

  • AuthType Basic: определяет тип авторизации (тип Basic осуществляет авторизацию на основе пароля с помощью файла паролей).
  • AuthName: задаёт сообщение для окна, которое будет появляться при запросе учётных данных. Можно оставить стандартное значение, чтобы не сообщать злоумышленникам о том, какая именно программа защищается этой страницей.
  • AuthUserFile: задаёт текущий файл паролей (будет создан немного позже). Он не должен находиться в обслуживаемых каталогах.
  • Require valid-user: указывает, что только авторизованные пользователи могут получить доступ к ресурсу. Именно этот параметр предотвращает доступ неавторизованных пользователей.

Сохраните и закройте файл.

Создание файла паролей

Теперь нужно создать файл паролей, указанный в настройках .htaccess, и внести в него пароли пользователей, у которых должен быть доступ к phpMyAdmin.

Для этого используется утилита htpasswd. Запустите команду, передав местонахождение файла и его имя:

sudo htpasswd -c /etc/httpd/pma_pass username

Флаг –с указывает, что это исходный файл. Кроме того, команда содержит местоположение каталога (путь и имя файла). Username нужно заменить именем пользователя, которого нужно добавить в файл первым. После запуска команды будет предложено ввести и подтвердить пароль этого пользователя.

Чтобы добавить в файл других пользователей, запустите эту команду без флага –с и укажите имя другого пользователя:

sudo htpasswd /etc/httpd/pma_pass seconduser

Создав файл паролей, можно протестировать шлюз авторизации. Попробуйте открыть страницу входа phpMyAdmin:

http://server_domain_or_IP/nothingtosee

На экране появится промежуточная страница авторизации. Введите валидные учётные данные, и только после этого вы сможете получить доступ к странице входа phpMyAdmin. Этот дополнительный уровень безопасности сохранит логи СУБД в чистоте (в них не будет данных о неудачных попытках входа).

Заключение

Теперь можно управлять системой баз данных MariaDB при помощи надёжного и относительно безопасного веб-интерфейса. Он предоставляет основные функции, доступные в командной строке MariaDB: просмотр баз данных, схем, создание запросов и новых наборов и структур данных.

Tags: , , , ,

Добавить комментарий