Введение
Основные операции, при которых вам понадобится этот скрипт в качестве повседневного инструмента такие:
- Создание новой, чистой БД для сайта.
- Создание определенных таблиц с полями внутри БД.
- Импорт и конечно же экспорт баз данных.
- Бэкап БД.
- Оптимизация таблиц БД.
- Разовое внесение сотен изменений в базу данных при помощи SQL-запроса.
На самом деле, возможностей у этого скрипта сильно больше, но я перечислил основные, которыми наиболее часто пользуюсь сам.
Вообще-то, phpMyAdmin установлен на любом уважающем себя хостинге и является стандартом для предоставления вебмастерам и блоггерам интерфейса для работы со своими БД. Новички часто путаются, потому что создается БД в интерфейсе cPanel, а чтобы изменить БД приходится заходить в другую панель.
На бесплатных хостингах бывает и так, что эта программа не стоит по умолчанию, поэтому для вас я подготовил инструкцию по самостоятельной установке. Она краткая, не волнуйтесь, ошибаться там негде.
Защита phpMyAdmin
Сначала мы создадим файл паролей с пользователями, используя инструмент, который поставляется с пакетом Apache. Мы будем хранить файл в каталоге:
В этом примере мы создаем пользователя с именем . Вы можете выбрать любое имя пользователя, оно не обязательно должно совпадать с именем администратора MySQL.
Приведенная выше команда предложит вам ввести и подтвердить пароль пользователя.
Если вы хотите добавить дополнительного пользователя, вы можете использовать ту же команду без флага:
Следующим шагом является настройка Apache для защиты паролем каталога phpMyAdmin и использования файла.
Для этого откройте файл, который был автоматически создан при установке phpMyAdmin:
И отредактируйте / вставьте следующие строки, выделенные желтым:
/etc/apache2/conf-available/phpmyadmin.conf
Сохраните и закройте файл и перезапустите Apache, чтобы изменения вступили в силу:
Теперь при доступе к вашему phpMyAdmin вам будет предложено ввести учетные данные для входа ранее созданного пользователя:
После входа в базовую аутентификацию вы попадете на страницу входа в phpMyAdmin, где вам нужно будет ввести свои учетные данные администратора MySQL.
Также рекомендуется изменить псевдоним на более уникальный и безопасный.
Шаг 3 — Обеспечение безопасности phpMyAdmin
Из-за своей вездесущности phpMyAdmin часто становится мишенью для атак, поэтому вам нужно дополнительно позаботиться о предотвращении несанкционированного доступа. Один из самых простых способов – поместить шлюз перед всем приложением, используя встроенный в Apache метод аутентификации и функции авторизации.
Чтобы сделать это, вы должны сначала активировать перезапись файла , изменив файл конфигурации Apache.
Отредактируйте связанный файл, помещенный в каталог конфигурации Apache:
Добавьте директиву в раздел файла конфигурации , например:
/etc/apache2/conf-available/phpmyadmin.conf
После добавления этой строки сохраните и закройте файл.
Перезапустите Apache, чтобы изменения вступили в силу.
Теперь, когда вы активировали использование для вашего приложения, вам нужно создать этот файл для реализации этого уровня защиты.
Чтобы этот файл мог использоваться, он должен находиться в каталоге приложения. Вы можете создать необходимый файл и открыть его в текстовом редакторе с помощью следующей команды:
В этом файле введите следующую информацию:
/usr/share/phpmyadmin/.htaccess
Вот что означает каждая из этих строк:
- : эта строка указывает тип аутентификации, используемый вами. Данный тип подразумевает использование аутентификации по паролю с помощью файла пароля.
- : данная строка устанавливает сообщение для диалогового окна аутентификации. Вы должны указывать только общую информацию, чтобы неавторизованные пользователи не получили никакой информации о том, что вы защищаете.
- : указывает местоположение файла пароля, который будет использоваться для аутентификации. Он должен находиться вне обслуживаемых каталогов. Скоро мы создадим этот файл.
- : указывает, что только выполнившие аутентификацию пользователи должны иметь доступ к этому ресурсу. Благодаря этому параметру неавторизованные пользователи не смогут выполнить вход.
После завершения редактирования сохраните и закройте файл.
Вы использовали следующее местонахождение для вашего файла пароля . Теперь вы можете создать этот файл и передать его для первоначального пользователя с помощью утилиты :
Вам будет предложено выбрать и подтвердить пароль для пользователя, которого вы создаете. В результате будет создан файл с хэшированным паролем, который вы добавили.
Если вы хотите ввести дополнительного пользователя, вам нужно сделать это без флага , например:
Теперь, когда вы можете получить доступ к подкаталогу phpMyAdmin, вам будет предложено указать дополнительное имя учетной записи и пароль, которые вы только что задали:
После выполнения аутентификации в Apache вы перейдете на стандартную страницу аутентификации phpMyAdmin для ввода ваших учетных данных MySQL. Эта настройка добавляет дополнительный уровень безопасности, который желательно использовать, поскольку phpMyAdmin ранее страдал от уязвимостей.
3: Отключение root-логина
В MySQL, как и в обычных системах Linux, root является специальной учетной записью администратора с неограниченным доступом к системе. Этот пользователь является очевидной целью для brute-force атак. Чтобы минимизировать риски, нужно заблокировать в phpMyAdmin любые попытки входа в систему с помощью этого пользователя. То есть даже если вы предоставите действительные учетные данные пользователя root, вы все равно получите ошибку «access denied» и не сможете войти в систему.
Поскольку ранее мы решили использовать dbconfig-common для настройки и хранения параметров phpMyAdmin, конфигурация по умолчанию в настоящее время хранится в базе данных. Сейчас нужно будет создать новый файл config.inc.php для определения пользовательских настроек.
Хотя файлы PHP для phpMyAdmin находятся в /usr/share/phpmyadmin, приложение использует конфигурационные файлы, расположенные в /etc/phpmyadmin. Создайте новый файл пользовательских настроек в /etc/phpmyadmin/conf.d и назовите его pma_secure.php:
Этот файл содержит все необходимые параметры, которые отключают беспарольный вход (AllowNoPassword имеет значение false) и root-логин (AllowRoot со значением false):
Сохраните файл, когда вы закончите редактирование: нажмите Ctrl+X, затем y, чтобы подтвердить изменения, и Enter. Изменения вступят в силу автоматически. Если вы сейчас перезагрузите страницу входа и попытаетесь войти в систему как пользователь root, вы получите ошибку «Access Denied».
Теперь в вашей установке phpMyAdmin пользователю root запрещен вход в систему. Эта мера безопасности блокирует попытки brute-force сценариев угадать пароль root на вашем сервере
Более того, теперь для доступа к веб-интерфейсу phpMyAdmin можно использовать только учетные записи MySQL с пониженными привилегиями, что само по себе является важной мерой безопасности
Шаг 2 — Установка MySQL
Мы запустили веб-сервер, и теперь нам нужно установить СУБД, которая может хранить данные вашего сайта и управлять ими. MySQL — популярная СУБД, используемая в средах PHP.
Используйте для получения и установки этого программного обеспечения:
Для подтверждения установки введите , а затем нажмите .
После завершения установки рекомендуется запустить скрипт безопасности, предустановленный в MySQL. Этот скрипт будет удалять некоторые небезопасные настройки по умолчанию и блокировать доступ к системе управления базы данных. Для запуска интерактивного скрипта введите следующую команду:
Скрипт предложит настроить плагин .
Примечание. Эту функцию следует активировать при наличии разумных оснований. Если она активирована, MySQL будет отклонять пароли, не соответствующие определенным критериям, и выводить сообщение об ошибке. Оставить проверку отключенной достаточно безопасно, но для входа в базу данных всегда нужно использовать надежные уникальные пароли.
Выберите для активации или любой другой вариант, чтобы продолжить без активации этой функции.
Если вы ответите утвердительно, вам будет предложено выбрать уровень проверки пароля. Если вы укажете самый высокий уровень , система будет выводить сообщения об ошибке при попытке установки пароля, который не будет содержать цифры, буквы в верхнем и нижнем регистре и специальные символы или будет содержать распространенные словарные слова.
Вне зависимости от того, будете ли вы использовать плагин , ваш сервер предложит вам выбрать и подтвердить пароль для пользователя root в MySQL. Не нужно путать его с системным пользователем root. Пользователь root базы данных — это пользователь с правами администратора, который имеет все права для работы с системой управления базы данных. Хотя в MySQL метод аутентификации пользователя root по умолчанию не требует использования пароля даже при его наличии, задайте надежный пароль для обеспечения дополнительной безопасности. Чуть дальше мы расскажем об этом подробнее.
Если вы включили использование паролей, вы увидите уровень надежности введенного пароля root, и ваш сервер запросит у вас подтверждение дальнейшего использования этого пароля. Если вас устраивает текущий пароль, введите в диалоге для подтверждения:
Для всех остальных вопросов нужно выбирать и нажимать в каждом диалоге. Выбрав эти ответы, вы удалите ряд анонимных пользователей и тестовую базу данных, отключите возможность удаленного входа пользователя root и загрузите новые правила, чтобы внесенные изменения немедленно активировались в MySQL.
Завершив настройку, проверьте возможность входа в консоль MySQL, набрав следующую команду:
В результате будет установлено подключение к серверу MySQL с помощью пользователя root базы данных с правами администратора, который логически выводится в результате использования при запуске данной команды. Результат должен выглядеть следующим образом:
Для выхода из консоли MySQL введите следующую команду:
Обратите внимание, что для подключения под именем пользователя root не требуется вводить пароль, хотя вы и задали его при запуске скрипта. Это происходит, поскольку используемый по умолчанию метод аутентификации для пользователя MySQL с правами администратора — , а не
Хотя это может выглядеть как возможный источник проблем с безопасностью, на самом деле эти действия делают сервер базы данных более защищенным, поскольку единственные пользователи, которые могут выполнять вход в систему с правами доступа root для MySQL — это пользователи системы с привилегиями sudo, подключенные с использованием консоли или через приложение, использующее аналогичные привилегии. На практике это означает, что вы не сможете использовать пользователя root базы данных с правами администратора для подключения из вашего приложения PHP. Настройка пароля учетной записи root MySQL работает как гарантия, если метод аутентификации по умолчанию меняется с на .
Для дополнительной безопасности рекомендуется иметь специальные учетные записи пользователей с менее обширными привилегиями, особенно если вы планируете использовать несколько баз данных на сервере.
Примечание. На момент написания этого руководства родная библиотека MySQL PHP не поддерживает , метод аутентификации MySQL 8 по умолчанию. Поэтому при создании пользователей базы данных для приложений PHP на MySQL 8 вам нужно убедиться, что вместо этого пароля они настроены на использование . Мы расскажем об этом в .
Теперь ваш сервер MySQL установлен и защищен. Далее мы выполним установку PHP, последнего компонента стека LEMP.
Изучаем системные требования к новой версии
На сайте, где мы загрузили phpMyAdmin, кликаем по его версии в левой колонке:
В открывшемся окне под описанием релиза находим информацию с требованиями к новой версии. Например, для скачанной нами версии требования «Current version compatible with PHP 5.5 to 7.2 and MySQL 5.5 and newer» — это значит, что на нашем сервере должна быть установлена PHP версии 5.5 и выше, а также MySQL 5.5. и выше.
Проверить версию php можно командой:
php -v
Проверить версию MySQL:
mysql -V
Если наш сервер не удовлетворяет требованиям веб-интерфейса управления базой данных, необходимо либо обновить PHP/MySQL, либо выбрать менее свежую версию phpMyAdmin.
Шаг 2 — Настройка аутентификации и прав пользователя
При установке phpMyAdmin на ваш сервер автоматически создал пользователь базы данных с именем , который отвечает за определенные базовые процессы программы. Вместо того, чтобы выполнять вход с помощью этого пользователя и пароля администратора, которые вы задали при установке, рекомендуется войти с использование вашего root пользователя MySQL или пользователя, предназначенного для управления базами данных через интерфейс phpMyAdmin.
Настройка доступа по паролю для учетной записи root в MySQL
В системах Ubuntu при запуске MySQL 5.7 (и более поздние версии) для root пользователя MySQL по умолчанию устанавливается аутентификация с помощью плагина , а не пароля. Это позволяет обеспечить большую безопасность и удобство во многих случаях, однако это также может осложнить ситуацию, когда вам нужно предоставить внешней программе, например, phpMyAdmin, доступ к пользователю.
Чтобы войти в phpMyAdmin с root пользователем MySQL, вам нужно переключить метод аутентификации с на , если вы еще не сделали этого. Для этого откройте командную строку MySQL через терминал:
Затем проверьте, какой метод аутентификации используют ваши аккаунты пользователей MySQL с помощью следующей команды:
В этом примере вы можете видеть, что root пользователь действительно использует метод аутентификации с помощью плагина . Чтобы настроить для учетной записи root аутентификацию с помощью пароля, выполните следующую команду . Обязательно измените значение на надежный пароль по вашему выбору:
Затем выполните команду , которая просит сервер перезагрузить предоставленные таблицы и ввести в действие изменения:
Проверьте методы аутентификации, применяемые для каждого из ваших пользователей, чтобы подтвердить, что root пользователь больше не использует для аутентификации плагин :
В этом выводе вы можете увидеть, что пользователь root будет использовать аутентификацию по паролю. Теперь вы можете выполнить вход в интерфейс phpMyAdmin с помощью root пользователя с паролем, который вы задали ранее.
Настройка доступа по паролю для выделенного пользователя MySQL
Некоторые могут посчитать, что для их рабочего процесса лучше подходит подключение к phpMyAdmin с помощью специально выделенного пользователя. Чтобы сделать это, снова откройте командную строку MySQL:
Примечание. Если вы активировали аутентификацию по паролю, как указано в предыдущем разделе, вам потребуются другие команды для доступа к командной строке MySQL. Следующая команда будет запускать ваш клиент MySQL с обычными правами пользователя, и вы получите права администратора внутри базы данных только с помощью аутентификации:
Создайте нового пользователя и придумайте для него надежный пароль:
Затем предоставьте вашему новому пользователю соответствующие права. Например, вы можете предоставить пользователю права доступа ко всем таблицам в базе данных, а также можете добавлять, изменять и удалять права пользователя с помощью этой команды:
После этого закройте командную строку MySQL:
Теперь вы можете получить доступ к веб-интерфейсу, набрав доменное имя или открытый IP-адрес вашего сервера и добавив
Выполните вход в интерфейс с помощью root пользователя или с новым именем пользователя и паролем, которые вы только что задали.
При входе вы увидите пользовательский интерфейс, который будет выглядеть следующим образом:
Теперь, когда вы можете подключаться и взаимодействовать с phpMyAdmin, осталось только установить более жесткие правила безопасности системы, чтобы защитить ее от атак.
2: Защита phpMyAdmin
Из-за своей распространённости PhpMyAdmin часто подвергается атакам злоумышленников. На данном этапе необходимо обеспечить интерфейсу достаточный уровень защиты для предотвращения вредоносного использования.
Один из самых простых способ защиты phpMyAdmin – размещение шлюза безопасности. Это делается при помощи специальных файлов Apache под названием .htaccess.
Поддержка .htaccess
Сначала нужно включить поддержку файлов .htaccess, отредактировав конфигурационный файл Apache.
В раздел <Directory /usr/share/phpmyadmin> нужно добавить параметр AllowOverride All:
Сохраните и закройте файл.
Перезапустите Apache:
Создание файла .htaccess
Теперь приложение поддерживает файлы .htaccess; нужно только создать такой файл.
Для корректной работы необходимо создать этот файл в каталоге приложения. Для этого наберите:
Добавьте в него следующий код:
Рассмотрим эти строки подробнее:
- AuthType Basic задает тип авторизации; в данном случае используется аутентификация по паролю с помощью файла паролей .htpasswd.
- AuthName содержит текст сообщения диалогового окна аутентификации. Чтобы неавторизованные пользователи не могли получить дополнительной информации о закрытом приложении, это сообщение не должно содержать подробностей, а только общие данные (например, «Restricted Files», «Restricted Stuff», «Private Zone» и т.п.).
- AuthUserFile задает расположение файла паролей htpasswd, который будет использоваться для авторизации. Он должен находиться вне обслуживаемых каталогов. Такой файл будет создан позже.
- Require valid-user указывает, что доступ к этому ресурсу могут получить только авторизованные пользователи. Именно этот параметр защищает ресурс от неавторизованных пользователей.
Сохраните и закройте файл.
Создание файла .htpasswd
Теперь в каталоге, указанном в AuthUserFile, нужно создать файл паролей .htpasswd.
Для этого понадобится дополнительный пакет, содержащий утилиту htpasswd, который можно установить из стандартного репозитория:
Файл с паролями нужно создать в каталоге, заданном в директиве AuthUserFile, в данном случае это /etc/phpmyadmin/.htpasswd.
Будет предложено выбрать и подтвердить пароль нового пользователя. После этого файл .htpasswd будет создан, а только что введённый пароль будет помещен в него в хэшированном виде.
Чтобы добавить в файл еще одного пользователя, используйте вышеприведенную команду без флага –с:
Теперь при входе в подкаталог phpMyAdmin будут запрашиваться учетные данные пользователя:
Только после аутентификации пользователь сможет получить доступ к странице авторизации phpMyAdmin. Это установит дополнительный уровень безопасности, который защитит веб-интерфейс phpMyAdmin от атак методом подбора паролей.
Доступ к phpMyAdmin
phpMyAdmin является веб-интерфейсом. Если вы работаете в системе, в которой работает phpMyAdmin, вы можете получить к ней доступ:
Если вы находитесь во внутренней сети, вы можете использовать:
Замените на сетевой IP-адрес вашего сервера. Если вы следовали моему предыдущему руководству по установке веб-сервера Apache и у вас уже есть работающий веб-сайт, вы можете использовать одну из двух команд:
или
это внешний IP-адрес вашего сервера. Если ваш сервер находится за маршрутизатором, вам придется включить переадресацию портов, чтобы последние две опции работали из Интернета.
Войдите, используя имя пользователя и пароль администратора MySQL для доступа ко всем базам данных, или вы можете использовать имя пользователя и пароль для доступа только к определенным базам данных.
phpMyAdmin Войти
Если вы видите следующее предупреждение / ошибка: дополнительные функции для работы со связанными таблицами были отключены, проверьте это сообщение для исправления. Мы также рекомендуем вам прочитать наш пост о 10 твиках phpMyAdmin, чтобы упростить администрирование базы данных.
Итак, зайдите в установку phpMyAdmin и упростите администрирование вашей базы данных!
Источник записи: https://www.smarthomebeginner.com