Поиск по сайту:

Как установить и защитить phpMyAdmin с помощью Apache на сервере CentOS 7


Введение

Системы управления реляционными базами данных, такие как MySQL и MariaDB, необходимы для значительной части веб-сайтов и приложений. Однако не все пользователи чувствуют себя комфортно, управляя своими данными из командной строки.

Для решения этой проблемы был создан проект под названием phpMyAdmin, предлагающий альтернативу в виде веб-интерфейса управления. В этом руководстве мы покажем, как установить и защитить конфигурацию phpMyAdmin на сервере CentOS 7. Мы построим эту установку поверх веб-сервера Apache, самого популярного веб-сервера в мире.

Предпосылки

Прежде чем мы начнем, необходимо выполнить несколько требований.

Чтобы убедиться, что у вас есть прочная основа для создания этой системы, вам следует ознакомиться с нашим руководством по начальной настройке сервера для CentOS 7. Среди прочего, оно поможет вам настроить пользователя без полномочий root с помощью sudo доступ для административных команд.

Вторым предварительным условием, которое необходимо выполнить, чтобы начать работу с этим руководством, является установка стека LAMP (Linux, Apache, MariaDB и PHP) на ваш сервер CentOS 7. Это платформа, которую мы будем использовать для обслуживания нашего интерфейса phpMyAdmin (MariaDB также является программным обеспечением для управления базами данных, которым мы хотим управлять). Если на вашем сервере еще не установлена LAMP, следуйте нашему руководству по установке LAMP на CentOS 7.

Когда ваш сервер находится в правильном рабочем состоянии после выполнения этих руководств, вы можете продолжить работу с остальной частью этой страницы.

Шаг первый — установите phpMyAdmin

Поскольку наша платформа LAMP уже установлена, мы можем сразу приступить к установке программного обеспечения phpMyAdmin. К сожалению, phpMyAdmin недоступен в стандартном репозитории CentOS 7.

Чтобы получить нужные нам пакеты, нам нужно будет добавить дополнительный репозиторий в нашу систему. Репозиторий EPEL (Дополнительные пакеты для Enterprise Linux) содержит множество дополнительных пакетов, в том числе искомый пакет phpMyAdmin.

Репозиторий EPEL можно сделать доступным для вашего сервера, установив специальный пакет под названием epel-release. Это перенастроит ваш список репозиториев и даст вам доступ к пакетам EPEL.

Для установки просто введите:

sudo yum install epel-release

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

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-адреса вашего домашнего соединения, ознакомьтесь со следующим разделом. В файле должно быть четыре места, которые необходимо изменить:

. . .
Require ip your_workstation_IP_address
. . .
Allow from your_workstation_IP_address
. . .
Require ip your_workstation_IP_address
. . .
Allow from your_workstation_IP_address
. . .

Когда вы закончите, перезапустите веб-сервер Apache, чтобы применить ваши изменения, набрав:

sudo systemctl restart httpd.service

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

http://server_domain_or_IP/phpMyAdmin

Чтобы войти, используйте пару имени пользователя и пароля действительного пользователя MariaDB. Пользователь root и пароль администратора MariaDB — хороший выбор для начала. После этого вы сможете получить доступ к административному интерфейсу:

Найдите свой IP-адрес

Вам нужно будет знать IP-адрес компьютера, который вы используете для доступа к своим базам данных, чтобы выполнить описанный выше шаг. Это мера безопасности, чтобы неавторизованные люди не могли подключиться к вашему серверу.

Примечание. Это не IP-адрес вашего VPS, это IP-адрес вашего домашнего или рабочего компьютера.

Вы можете узнать, как большая сеть видит ваш IP-адрес, посетив один из этих сайтов в своем веб-браузере:

  • Какой у меня IP-адрес?
  • Какой у меня IP?
  • Мой IP-адрес

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

Шаг второй — защитите свой экземпляр phpMyAdmin

На этом этапе экземпляр phpMyAdmin, установленный на нашем сервере, должен быть полностью пригоден для использования. Однако, установив веб-интерфейс, мы открыли нашу систему MySQL внешнему миру.

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

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

Изменение места доступа к приложению

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

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

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

В верхней части файла вы увидите две строки, которые выглядят следующим образом:

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

Эти две строки являются нашими псевдонимами, что означает, что если мы получим доступ к доменному имени или IP-адресу нашего сайта, за которым следует либо /phpMyAdmin, либо /phpmyadmin, нам будет предоставлен контент в /usr/share/phpMyAdmin.

Мы хотим отключить эти конкретные псевдонимы, поскольку они активно используются ботами и злоумышленниками. Вместо этого мы должны выбрать свой собственный псевдоним. Это должно быть легко запомнить, но не легко угадать. Он не должен указывать на цель URL-адреса. В нашем случае мы выберем /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

Однако ваш интерфейс phpMyAdmin будет доступен в новом месте, которое мы выбрали:

http://server_domain_or_IP/nothingtosee

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

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

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

Снова откройте файл конфигурации phpMyAdmin Apache в текстовом редакторе:

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

Внутри блока каталога /usr/share/phpMyAdmin, но вне любого из внутренних блоков, нам нужно добавить директиву override. Это будет выглядеть так:

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

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

Сохраните и закройте файл, когда закончите.

Перезапустите веб-службу, чтобы применить это изменение:

sudo systemctl restart httpd.service

Создайте файл .htaccess

Теперь, когда у нас есть директива override в нашей конфигурации, Apache будет искать файл с именем .htaccess в каталоге /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: в этой строке указывается тип аутентификации, который мы реализуем. Этот тип реализует аутентификацию по паролю с использованием файла паролей.
  • AuthName: устанавливает сообщение для диалогового окна аутентификации. Вы должны оставить это общее, чтобы неавторизованные пользователи не узнали о том, что защищается.
  • AuthUserFile: устанавливает местоположение фактического файла паролей, который будет использоваться для аутентификации. Это должно быть за пределами каталогов, которые обслуживаются. Мы создадим этот файл через минуту.
  • Требовать действительного пользователя. Указывает, что доступ к этому ресурсу должен быть предоставлен только пользователям, прошедшим проверку подлинности. Это то, что на самом деле предотвращает вход неавторизованных пользователей.

Когда вы закончите вводить эту информацию, сохраните и закройте файл.

Создайте файл паролей для аутентификации

Теперь, когда мы указали расположение нашего файла паролей с помощью директивы AuthUserFile в нашем файле .htaccess, нам нужно создать и заполнить файл паролей.

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

sudo htpasswd -c /etc/httpd/pma_pass username

Флаг -c указывает, что будет создан начальный файл. Расположение каталога — это путь и имя файла, которые будут использоваться для файла. Имя пользователя — это первый пользователь, которого мы хотели бы добавить. Вам будет предложено ввести и подтвердить пароль пользователя.

Если вы хотите добавить дополнительных пользователей для аутентификации, вы можете снова вызвать ту же команду без флага -c и с новым именем пользователя:

sudo htpasswd /etc/httpd/pma_pass seconduser

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

http://server_domain_or_IP/nothingtosee

Как только вы введете свои учетные данные, вы попадете на обычную страницу входа в phpMyAdmin. Этот дополнительный уровень защиты поможет очистить ваши журналы MySQL от попыток аутентификации в дополнение к дополнительным преимуществам безопасности.

Заключение

Теперь вы можете управлять своими базами данных MySQL из достаточно безопасного веб-интерфейса. Этот пользовательский интерфейс предоставляет большую часть функций, доступных из командной строки MySQL. Вы можете просматривать базы данных и схемы, выполнять запросы и создавать новые наборы данных и структуры.