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

Установите и защитите phpMyAdmin на CentOS 8


На этой странице

  1. Требования
  2. Установить сервер LAMP
  3. Настройка MariaDB
  4. Установите phpMyAdmin
  5. Настройка Apache для phpMyAdmin
  6. Настройка SELinux и брандмауэра
  7. Защита phpMyAdmin
    1. Разрешить phpMyAdmin с определенного IP-адреса
    2. Настроить дополнительный уровень аутентификации

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

    Функции

    • Обеспечивает простой и удобный веб-интерфейс.
    • Импорт данных из CSV и SQL.
    • Поддерживает большинство функций MySQL, включая создание, копирование, удаление, переименование, удаление и изменение баз данных, таблиц, полей и индексов.
    • Позволяет экспортировать данные в различные форматы, такие как PDF, CSV, SQL, XML и многие другие.
    • Управление несколькими серверами.
    • Создание сложных запросов с использованием Query-by-example (QBE).

    В этом руководстве мы покажем вам, как установить и защитить phpMyAdmin на сервере CentOS 8.

    Требования

    • Сервер под управлением CentOS 8.
    • На сервере настроен пароль root.

    Установить LAMP-сервер

    Во-первых, вам нужно будет установить Apache, MariaDB, PHP и другие библиотеки PHP на ваш сервер. Вы можете установить их все с помощью следующей команды:

    dnf install httpd mariadb-server php php-pdo php-pecl-zip php-json php-common php-fpm php-mbstring php-cli php-mysqlnd php-json php-mbstring wget unzip

    После установки всех пакетов запустите службу Apache и MariaDB и включите их после перезагрузки системы с помощью следующей команды:

    systemctl start httpd
    systemctl start mariadb
    systemctl enable httpd
    systemctl enable mariadb

    Настроить MariaDB

    По умолчанию MariaDB не защищена. Так что вам нужно будет обеспечить его в первую очередь. Вы можете сделать это, запустив скрипт mysql_secure_installation:

    mysql_secure_installation

    Ответьте на все вопросы, как показано ниже:

    Set root password? [Y/n] Y
    New password: 
    Remove anonymous users? [Y/n] Y
    Disallow root login remotely? [Y/n] Y
    Remove test database and access to it? [Y/n] Y
    Reload privilege tables now? [Y/n] Y
    

    После того, как вы закончите, вы должны увидеть следующий вывод:

     ... Success!
    
    Cleaning up...
    
    All done!  If you've completed all of the above steps, your MariaDB
    installation should now be secure.
    
    Thanks for using MariaDB!
    

    На этом этапе ваша установка MariaDB защищена.

    Установите phpMyAdmin

    По умолчанию phpMyAdmin недоступен в стандартном репозитории CentOS 8. Итак, вам нужно будет загрузить последнюю версию phpMyAdmin с их официального сайта. Вы можете скачать его с помощью следующей команды:

    wget https://files.phpmyadmin.net/phpMyAdmin/4.9.2/phpMyAdmin-4.9.2-all-languages.zip

    После загрузки разархивируйте загруженный файл с помощью следующей команды:

    unzip phpMyAdmin-4.9.2-all-languages.zip

    Затем переместите извлеченный контент в каталог /usr/share, как показано ниже:

    mv phpMyAdmin-4.9.2-all-languages /usr/share/phpmyadmin

    Затем измените каталог на /usr/share/phpmyadmin и переименуйте файл config.sample.inc.php:

    cd /usr/share/phpmyadmin
    mv config.sample.inc.php config.inc.php

    Затем откройте файл в своем любимом текстовом редакторе, как показано ниже:

    nano config.inc.php

    Измените следующую строку:

    $cfg['blowfish_secret'] = 'your-secret-password';
    

    Сохраните и закройте файл, когда закончите. Затем импортируйте create_tables.sql с помощью следующей команды:

    mysql < /usr/share/phpmyadmin/sql/create_tables.sql -u root -p

    Укажите свой пароль root, когда будет предложено импортировать таблицу.

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

    mkdir /usr/share/phpmyadmin/tmp
    chown -R apache:apache /usr/share/phpmyadmin
    chmod 777 /usr/share/phpmyadmin/tmp

    Настроить Apache для phpMyAdmin

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

    nano /etc/httpd/conf.d/phpmyadmin.conf

    Добавьте следующие строки:

    Alias /phpmyadmin /usr/share/phpmyadmin
    
    <Directory /usr/share/phpmyadmin/>
       AddDefaultCharset UTF-8
    
       <IfModule mod_authz_core.c>
         # Apache 2.4
         <RequireAny> 
          Require all granted
         </RequireAny>
       </IfModule>
       <IfModule !mod_authz_core.c>
         # Apache 2.2
         Order Deny,Allow
         Deny from All
         Allow from 127.0.0.1
         Allow from ::1
       </IfModule>
    </Directory>
    
    <Directory /usr/share/phpmyadmin/setup/>
       <IfModule mod_authz_core.c>
         # Apache 2.4
         <RequireAny>
           Require all granted
         </RequireAny>
       </IfModule>
       <IfModule !mod_authz_core.c>
         # Apache 2.2
         Order Deny,Allow
         Deny from All
         Allow from 127.0.0.1
         Allow from ::1
       </IfModule>
    </Directory>
    

    Сохраните и закройте файл, когда закончите. Затем перезапустите службу Apache с помощью следующей команды:

    systemctl restart httpd

    Вы можете проверить статус Apache с помощью следующей команды:

    systemctl status httpd

    Вы должны увидеть следующий вывод:

    ? httpd.service - The Apache HTTP Server
       Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
      Drop-In: /usr/lib/systemd/system/httpd.service.d
               ??php-fpm.conf
       Active: active (running) since Wed 2019-12-18 01:07:52 EST; 6s ago
         Docs: man:httpd.service(8)
     Main PID: 5636 (httpd)
       Status: "Started, listening on: port 80"
        Tasks: 213 (limit: 25044)
       Memory: 28.7M
       CGroup: /system.slice/httpd.service
               ??5636 /usr/sbin/httpd -DFOREGROUND
               ??5639 /usr/sbin/httpd -DFOREGROUND
               ??5640 /usr/sbin/httpd -DFOREGROUND
               ??5641 /usr/sbin/httpd -DFOREGROUND
               ??5642 /usr/sbin/httpd -DFOREGROUND
    
    Dec 18 01:07:52 centos8 systemd[1]: Stopped The Apache HTTP Server.
    Dec 18 01:07:52 centos8 systemd[1]: Starting The Apache HTTP Server...
    Dec 18 01:07:52 centos8 httpd[5636]: AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::200:d0>
    Dec 18 01:07:52 centos8 httpd[5636]: Server configured, listening on: port 80
    Dec 18 01:07:52 centos8 systemd[1]: Started The Apache HTTP Server.
    

    Настройте SELinux и брандмауэр

    По умолчанию SELinux включен в CentOS 8. Поэтому вам нужно будет настроить SELinux для правильной работы phpMyAdmin.

    Сначала установите пакет policycoreutils-python-utils для управления средой SELinux с помощью следующей команды:

    dnf install policycoreutils-python-utils

    Затем включите доступ к каталогу /usr/share/phpmyadmin с помощью следующей команды:

    semanage fcontext -a -t httpd_sys_rw_content_t '/usr/share/phpmyadmin/'
    semanage fcontext -a -t httpd_sys_rw_content_t "/usr/share/phpmyadmin/tmp(/.*)?"

    Теперь просмотрите все файлы в вашем каталоге phpmyadmin, выполнив следующую команду:

    restorecon -Rv '/usr/share/phpmyadmin/'

    Затем вам нужно будет создать правило брандмауэра, чтобы разрешить службу HTTP из внешних сетей. Вы можете разрешить это с помощью следующей команды:

    firewall-cmd --permanent --add-service=http
    firewall-cmd --reload

    Теперь phpMyAdmin установлен и настроен. Теперь пришло время проверить, работает он или нет.

    Откройте веб-браузер и введите URL-адрес http://your-server-ip/phpmyadmin. Вы будете перенаправлены на следующую страницу:

    Безопасный phpMyAdmin

    На данный момент экземпляр phpMyAdmin работает правильно. Однако защита вашего экземпляра phpMyAdmin от внешнего мира является для вас важной задачей. В этом разделе мы покажем вам, как защитить ваш экземпляр phpMyAdmin.

    Разрешить phpMyAdmin с определенного IP

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

    Вы можете настроить его, отредактировав файл /etc/httpd/conf.d/phpmyadmin.conf:

    nano /etc/httpd/conf.d/phpmyadmin.conf

    Найдите следующие строки:

         <RequireAny>
           Require all granted
         </RequireAny>
    

    И замените их следующими:

    <RequireAny>
        Require ip your-home--connection-ip-address
        Require ip ::1
    </RequireAny>
    

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

    Настройка дополнительного уровня аутентификации

    Рекомендуется защитить паролем каталог phpmyadmin, настроив базовую аутентификацию.

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

    mkdir /etc/phpmyadmin
    htpasswd -c /etc/phpmyadmin/.htpasswd admin

    Вам будет предложено ввести пароль администратора, как показано ниже:

    New password: 
    Re-type new password: 
    Adding password for user admin
    

    Далее вам нужно будет настроить Apache для использования файла .htpasswd. Вы можете сделать это, отредактировав файл /etc/httpd/conf.d/phpmyadmin.conf.

    nano /etc/httpd/conf.d/phpmyadmin.conf

    Добавьте следующие строки ниже строки «AddDefaultCharset UTF-8»:

        Options  +FollowSymLinks +Multiviews +Indexes
        AllowOverride None
        AuthType basic
        AuthName "Authentication Required"
        AuthUserFile /etc/phpmyadmin/.htpasswd
        Require valid-user
    

    Сохраните файл и перезапустите службу Apache, чтобы изменения вступили в силу:

    systemctl restart httpd

    Доступ к phpMyAdmin

    Теперь ваш экземпляр phpMyAdmin защищен дополнительным уровнем безопасности. Откройте веб-браузер и введите URL-адрес http://your-server-ip/phpmyadmin. Вам будет предложено ввести учетные данные пользователя, которого вы ранее создали, как показано ниже:

    Укажите имя пользователя и пароль администратора, затем нажмите кнопку ОК. Вы будете перенаправлены на страницу входа в phpMyAdmin:

    Теперь предоставьте свои учетные данные для входа в систему с правами администратора MySQL и нажмите кнопку «Перейти». Вы должны увидеть следующую страницу:

    Заключение

    Поздравляем! вы успешно установили и защитили phpMyAdmin на сервере CentOS 8. Теперь вы можете создавать базы данных, пользователей, таблицы и управлять ими через веб-интерфейс. Не стесняйтесь спрашивать меня, если у вас есть какие-либо вопросы.