Установка и защита phpMyAdmin+Apache на сервере CentOS 7
Centos, PHP | Комментировать запись
Реляционные системы управления базами данных (СУБД), такие как 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: .htaccess, Apache, CentOS 7, MariaDB, phpMyAdmin