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

Вступление

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

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

Предпосылки

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

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

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

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

[[step-one -—- install-phpmyadmin]] == Шаг первый - установите phpMyAdmin

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

Чтобы получить нужные нам пакеты, нам нужно добавить дополнительное репо в нашу систему. Репозиторий EPEL (пакетыExtraPдляEnterpriseLinux) содержит множество дополнительных пакетов, включая пакет 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-адрес вашего соединенияhome.

Измените любые строки, которые читают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

phpMyAdmin login screen

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

phpMyAdmin admin interface

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

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

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

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

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

[[step-two -—- secure-your-phpmyadmin-instance]] == Шаг второй - защитите свой экземпляр phpMyAdmin

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

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

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

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

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

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

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 404 error

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

http://server_domain_or_IP/nothingtosee

phpMyAdmin login screen

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

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

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

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

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

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

. . .

   AllowOverride All
   
   . . .

. . .

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

  • Require valid-user: указывает, что только аутентифицированные пользователи должны иметь доступ к этому ресурсу. Это то, что на самом деле мешает неавторизованным пользователям войти.

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

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

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

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

sudo htpasswd -c /etc/httpd/pma_pass username

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

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

sudo htpasswd /etc/httpd/pma_pass seconduser

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

http://server_domain_or_IP/nothingtosee

Apache authentication page

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

Заключение

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

Related