Персональный блог Игоря Антонова aka "spider_net"

Устанавливаем и защищаем phpMyAdmin в Debian 7


Рубрика: Linux -> Без рамки
Метки: | | | | | |
Просмотров: 50013
Устанавливаем и защищаем phpMyAdmin в Debian 7

В прошлой заметке я подробно разобрал процесс установки базовых компонентов любого хостинга – Apache, MySQL и PHP. Уже сейчас хост готов к работе, но для удобства в нем не хватает несколько полезных инструментов. Одним из таких инструментов по праву считается phpMyAdmin. Он упрощает администрирование сервера БД. Добавление пользователей, создание новых баз, выполнение запросов – эти и многие другие задачи легко и просто решать при помощи phpMyAdmin. Установка phpMyAdmin немногим отличается от того же Apache. Правда если оставить phpMyAdmin без дополнительной защиты, то рано или поздно злоумышленники смогут скомпрометировать весь сервер. О простейшем, но эффективным способе защиты phpMyAdmin пойдет речь в этой заметке.

Установка phpMyAdmin

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

apt-get install phpmyadmin

Загрузив все необходимые компоненты, запустится мастер настройки phpMyAdmin. В первом вопросе требуется определиться с установленным web-сервером. Доступно два варианта:

  • apache2
  • lighthttpd
  • Выбираем тип web-сервера

    Мы выбираем первый вариант, поскольку в предыдущей заметке устанавливали именно Apache. После ответа на вопрос начнется загрузка недостающих компонентов и их установка.

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

    Далее нас попросят ввести пароль пользователя root MySQL-сервера. Вводим и нажимаем «enter».

    Затем нас попросят придумать пароль для доступа в phpMyAdmin. Придумываем пароль посложней и нажимаем «Enter».

    Задаем пароль для phpMyAdmin

    Добавляем phpMyAdmin к конфигурации к Apache

    Установка phpMyAdmin завершена. Чтобы протестировать этот инструмент в работе, необходимо добавить phpMyAdmin к конфигурации Apache. Для этого открываем конфигурационный файл Apache:

    nano /etc/apache2/apache2.conf

    Конфигурирем Apache

    Перемещаемся в его конец и добавляем строчку для подключения phpMyAdmin:

    Include /etc/phpmyadmin/apache.conf

    Сохраняем внесенные изменения (ctrl + o) и закрываем файл (ctrl + x). Перезапускаем Apache:

    service apache2 restart

    Проверяем phpMyAdmin

    Открывай браузер и переходим по ссылке http://ip_адрес/phpmyadmin . Открытие страницы входа phpMyAdmin – подтверждение успешной установки.

    Защищаем phpMyAdmin

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

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

    phpMyAdmin готов к работе

    Конфигурируем авторизацию на уровне Apache

    Сначала откроем конфигурационный файл phpMyAdmin, который используется с Apache:

    sudo nano /etc/phpmyadmin/apache.conf

    Находим в файле блок «» и дописываем директиву «AllowOverride All». Отредактированный блок в итоге должен выглядеть так:

    <Directory /usr/share/phpmyadmin>
            Options FollowSymLinks
            DirectoryIndex index.php
            AllowOverride All
    //Остальной текст оставляем как есть

    Сохраняем изменения (ctrl + o) и закрываем файл (ctrl + x). При помощи директивы “AllowOverride” мы сообщили Apache, что все директивы могут быть переопределены через внешний файл настроек – «.htaccess».

    Подготавливаем .htaccess

    Создадим новый конфигурационный файл .htaccess в директории с phpmyadmin:

    nano /usr/share/phpmyadmin/.htaccess

    Прописываем в этом файле необходимость авторизации на уровне web-сервера:

    AuthType Basic
    AuthName "Restricted Files"
    AuthUserFile /home/.htpasswd
    Require valid-user

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

  • AuthType – директива определяет тип идентификации пользователя. В качестве значения я указываю Basic. Насколько мне известно, вариантов кроме Basic до сих пор в Apache не реализовано (поправьте, если ошибаюсь).
  • AuthName – директива используется совместно с предыдущей. В ней мы пишем текст, который будет отображаться в диалоге запроса логина/пароля. Значением директивы может быть абсолютно любой текст.
  • AuthUserFile – значением директивы выступает путь к файлу, содержащий информацию о пользователях и их паролях, которые могут получить доступ к закрытому ресурсу. На данном этапе этого файла нет, мы создадим его чуть позже.
  • Require – директива позволяет определить принцип аутентификации. Она может принимать несколько значений (например, мы можем перечислить пользователей или группы пользователей, которые могут получать доступ к закрытому ресурсу). Значение Valid-user подразумевает, что получить доступ к закрытому ресурсу могут получить все пользователи, доступные в файле AuthUserFile.
  • Создание htpasswd файла

    Необходимые настройки сделаны. Теперь создадим файл, путь к которому мы указывали в директиве AuthUserFile. Для этого вбиваем команду:

    sudo htpasswd -c /home/.htpasswd username

    Имя пользователя выбираем любое, с системными пользователями оно не переплетается. Утилита htpasswd запросит пароль для нового пользователя. Придумываем пароль и после завершения создания пользователя перезапустим apache:

    service apache2 restart

    Проверяем авторизацию на уровне web-сервера

    Попробуем обратиться к phpMyAdmin. Если все описанные выше манипуляции были проделаны правильно, то страница входа phpMyAdmin сразу будет недоступна. Вместо нее появится окно с запросом имени пользователя и пароля. Вводим данные, которые мы указали утилите htpasswd и только после этого попадаем на страницу входа в phpMyAdmin.

    Другие статьи по настройке LAMP

    Оставьте комментарий!
    comments powered by HyperComments