Mysql авторизация на php: Простая аутентификация на PHP / Хабр

Как обезопасить phpMyAdmin |
Linode Docs

&nbspresults match&nbsp

&nbspresults

Нет результатов

Фильтры

Фильтры (
)

Все

0, ‘текст-белый’: checkbox.checked, ‘текст-серый-400’: !checkbox.checked && checkbox.count === 0 }» style=letter-spacing:.07px x-text=checkbox.title>

Добавить теги

Все

0, ‘текст-белый’: checkbox.checked, ‘текст-серый-400’: !checkbox.checked && checkbox.count === 0 }» style=letter-spacing:.07px x-text=checkbox.title>

Добавить авторов

Все

0, ‘текст-белый’: checkbox.checked, ‘текст-серый-400’: !checkbox.checked && checkbox.count === 0 }» style=letter-spacing:.07px x-text=checkbox.title>

Обновлено
, HackerSploit Эс
posible que usted esté viendo una traducción generada
автоматический. Estamos trabajando con traductores profesionales
пункт verificar лас traducciones де нуэстро ситио сети. Эсте проект
es un trabajo en curso.

Создать учетную запись Linode
чтобы попробовать это руководство с кредитом в долларах США.

Этот кредит будет применяться к любым действительным услугам, использованным во время вашего первого
дней.

Что такое phpMyAdmin?

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

Зачем защищать phpMyAdmin?

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

Функции phpMyAdmin

Вот некоторые из основных функций phpMyAdmin:

  • Выполнение стандартных запросов SQL.
  • Создание, изменение и удаление пользователей и разрешений пользователей.
  • Создание, изменение и удаление баз данных, таблиц, строк и полей.
  • Поиск объектов в базах данных и таблицах.
  • Создайте резервную копию баз данных MySQL.

Прежде чем начать

Чтобы установить и защитить phpMyAdmin, вам необходимо иметь сервер Linux со следующими запущенными службами:

  • Apache2
  • MySQL 8 или выше
  • PHP

90 011 Три части программного обеспечения required также обычно называют стеком LAMP. Следующие шаги можно использовать в Ubuntu 20.04 для установки всего необходимого программного обеспечения:

  1. Установите Apache 2.4 из репозитория Ubuntu:

     sudo apt install apache2
     
  2. Установите пакет mysql-server :

     sudo apt install mysql-server
     
  3. Установка PHP, репозитория расширений и приложений PHP, поддержки Apache и поддержки MySQL:

     sudo apt install php libapache2-mod-php php-mysql
     

    При необходимости установите дополнительную поддержку cURL, JSON и CGI:

     sudo apt install php-curl php-json php-cgi
     

Примечание

Эти шаги в этом руководстве были протестированы только на Ubuntu 20. 04. В разных дистрибутивах могут потребоваться дополнительные шаги для успешного завершения установки.

Создание пользователя MySQL

Всегда рекомендуется создавать отдельного пользователя базы данных для каждого приложения и избегать использования учетной записи пользователя root.

  1. Чтобы создать нового пользователя MySQL, вы можете войти в MySQL с помощью следующей команды:

     sudo mysql -u root
     
  2. Создайте нового пользователя, введя следующую команду, заменив переменные пользователя и пароль своими значениями.

     СОЗДАТЬ ПОЛЬЗОВАТЕЛЯ 'user'@'localhost', ИДЕНТИФИЦИРОВАННОГО С caching_sha2_password BY 'password';
     
  3. После создания пользователя назначьте права администратора. Это можно сделать, выполнив следующую команду:

     ПРЕДОСТАВИТЬ ВСЕ ПРИВИЛЕГИИ НА *.* 'пользователю'@'localhost' С ПРЕДОСТАВЛЕНИЕМ ОПЦИИ;
     
  4. Выйдите из MySQL, выполнив следующую команду:

     выход
     

Примечание

Дополнительно рекомендуется отключать вход в систему root.

Установить phpMyAdmin

  1. phpMyAdmin можно установить, выполнив в терминале следующую команду:

     sudo apt-get install phpmyadmin php-json php-curl php-mbstring php-zip php-gd
     
  2. Укажите используемую технологию веб-сервера, убедитесь, что вы указали apache в качестве веб-сервера по умолчанию.

  1. В процессе установки вам будет предложено настроить базу данных для phpMyAdmin с помощью dbconfig-common. Выберите да , чтобы продолжить.
  1. Вам также будет предложено указать пароль приложения для phpMyAdmin. Введите надежный уникальный пароль для доступа к phpMyAdmin в качестве администратора и выберите OK .
  1. После установки phpMyAdmin вам нужно будет включить модуль PHP mbstring , это можно сделать, выполнив в терминале следующую команду:

     судо phpenmod mbstring
     
  2. После включения модуля mbstring вам потребуется перезапустить службу apache2. Чтобы перезапустить службу, выполните в терминале следующую команду:

     sudo systemctl restart apache2
     

Настройка phpMyAdmin для работы с Apache2

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

 sudo ln -s /etc/phpmyadmin/apache.conf /etc/apache2/conf-available/phpmyadmin.conf
 

После создания символических ссылок в phpMyAdmin должны быть включены файлы конфигурации, а apache2 необходимо перезапустить:

 sudo a2enconf phpmyadmin
sudo systemctl перезагрузить apache2
 

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

 http:///phpmyadmin
 

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

Примечание Хотя это не включено в это руководство или в базовую установку phpMyAdmin, настоятельно рекомендуется установить SSL/TLS перед вводом каких-либо учетных данных через http , вместо этого используя только https на порту 443 .

Изменение псевдонима phpMyAdmin

Первым шагом в обеспечении безопасности phpMyAdmin является изменение псевдонима каталога по умолчанию, который используется для доступа к phpMyAdmin. По умолчанию любой пользователь может получить доступ к phpMyAdmin, обратившись к URL-адресу сервера: https:///phpmyadmin.

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

  1. Откройте файл /etc/phpmyadmin/apache.conf и используйте текстовый редактор по вашему выбору, чтобы найдите раздел Alias ​​, который по умолчанию выглядит следующим образом:

    Файл: /etc/phpmyadmin/apache. conf
     1
    2
    3
    4
    5
    6
    7
     
     # Конфигурация Apache по умолчанию для phpMyAdmin
    Псевдоним /phpmyadmin /usr/share/phpmyadmin
    <Каталог /usr/share/phpmyadmin>
        Параметры SymLinksIfOwnerMatch
        DirectoryIndex index.php 
  2. Рекомендуется добавить к первой записи phpmyadmin Alias ​​ символы, сгенерированные генератором случайных строк, для редактирования и создания суффикса для псевдонима, как показано в следующем файле:

    Файл: /etc/phpmyadmin/apache.conf
     1
    2
    3
    4
    5
    6
    7
     
     Конфигурация Apache по умолчанию для phpMyAdmin
    Псевдоним /phpmyadmin-jwef82r68662b /usr/share/phpmyadmin
    <Каталог /usr/share/phpmyadmin>
        Параметры SymLinksIfOwnerMatch
        DirectoryIndex index. php 
  3. После создания псевдонима перезапустите apache:

     sudo systemctl reload apache2
     

Псевдоним теперь будет использоваться в качестве каталога для доступа к домашней странице phpMyAdmin.

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

В качестве дополнительного уровня безопасности вы также можете использовать функцию аутентификации apache2 для интеграции формы аутентификации имени пользователя и пароля, которая будет настроена для обеспечения дополнительного уровня защиты каталога/URL phpMyAdmin.

  1. Сначала добавьте параметр AllowOverride в конфигурацию каталога в файле конфигурации apache2 phpMyAdmin, найденном в /etc/phpmyadmin/apache.conf . Это позволит вам переопределить любые конфигурации apache2, указанные в файле .htaccess. Ваш файл apache.conf должен отражать следующее:

    Файл: /etc/phpmyadmin/apache. conf
     1
    2
    3
    4
    5
    6
    7
    8
    9
     
     # Конфигурация Apache по умолчанию для phpMyAdmin
    Псевдоним /phpmyadmin-jwef82r68662b /usr/share/phpmyadmin
    <Каталог /usr/share/phpmyadmin>
        Параметры SymLinksIfOwnerMatch
        DirectoryIndex index.php
        Разрешить переопределить все
       
  2. Теперь вы можете настроить аутентификацию apache2, создав файл конфигурации .htaccess в каталоге phpMyAdmin по умолчанию. Необходимо создать файл /usr/share/phpmyadmin/.htaccess . После создания файла вы можете создать конфигурацию аутентификации, как указано ниже:

    Файл: /usr/share/phpmyadmin/.htaccess
     1
    2
    3
    4
     
     Тип аутентификации Базовый
    AuthName "Держись подальше"
    AuthUserFile /etc/phpmyadmin/. htpasswd
    Требовать действительного пользователя 
  3. После создания конфигурации вам необходимо создать пользователя и пароль для формы аутентификации. Как указано в файле /usr/share/phpmyadmin/.htaccess , файл .htaccess, содержащий учетные данные, будет храниться в папке /etc/phpmyadmin/.htpasswd . Для создания пользователя и пароля можно использовать утилиту htpasswd следующим образом, заменив на имя пользователя по вашему выбору:

     sudo htpasswd -c /etc/phpmyadmin/.htpasswd <пользователь>
     

    Вам будет предложено указать новый безопасный пароль. Рекомендуется, чтобы этот пароль отличался от пароля phpMyAdmin.

  4. Теперь вы можете перезапустить apache2, чтобы применить конфигурацию и активировать дополнительный уровень аутентификации.

     sudo systemctl перезагрузить apache2
     

Ограничение доступа к определенному IP-адресу

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

Чтобы настроить ограничение на основе IP, выполните процедуры, описанные ниже:

  1. Доступ и ограничение на основе IP можно настроить в файле /etc/phpmyadmin/apache.conf в разделе /usr/share/phpmyadmin . конфигурация каталога. Чтобы запретить доступ ко всем IP-адресам и предоставить доступ к определенному IP-адресу или подсети, добавьте в файл следующую конфигурацию, показанную ниже, при этом заменяя IP-адрес своим собственным IP-адресом или IP-адресами:

    Файл: /etc/phpmyadmin/apache.conf
     1
    2
    3
    4
     
     Запретить заказ, Разрешить
        Запретить от всех
        Разрешить с 192. 168.1.1
         

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

    Файл: /etc/phpmyadmin/apache.conf
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
     Псевдоним /phpmyadmin-jwef82r68662b /usr/share/phpmyadmin
    <Каталог /usr/share/phpmyadmin>
        Параметры SymLinksIfOwnerMatch
        DirectoryIndex index.php
        Разрешить переопределить все
        Разрешить переопределить все
        # ограничить libapache2-mod-php файлами и каталогами, необходимыми pma
        
            php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
            php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/php/php-php-gettext/: /usr/share/javascript/:/usr/share/php/tcpdf/:/usr/share/doc/phpmyadmin/:/usr/share/php/phpseclib/:/usr/share/php/PhpMyAdmin/:/usr /share/php/Symfony/:/usr/share/php/Twig/:/usr/share/php/Twig-Extensions/:/usr/share/php/ReCaptcha/:/usr/share/php/Psr/Container /:/usr/share/php/Psr/Cache/:/usr/share/php/Psr/Log/:/usr/share/php/Psr/SimpleCache/
        
        Порядок Запретить, Разрешить
        Запретить от всех
        Разрешить с 192. 168.1.1
    
    # Запретить веб-доступ к каталогам, которым это не нужно
    <Каталог /usr/share/phpmyadmin/templates>
        Требовать все отказано
    
    <Каталог /usr/share/phpmyadmin/libraries>
        Требовать все отказано
    
         
  2. После добавления конфигурации IP-адреса перезапустите apache2, чтобы применить ее:

     sudo systemctl reload apache2
     

Эта конфигурация запретит доступ всем, кроме тех, которые имеют указанный вами IP-адрес или совпадают с ним. Если неуказанный IP-адрес попытается получить доступ к phpMyAdmin, он получит Запрещено ответ.

Пользовательская конфигурация PHP

Вы также можете добавить определенные конфигурации PHP, чтобы сделать phpMyAdmin намного более безопасным, удалив всю информацию о сервере или системе и изменив параметры аутентификации cookie.

  1. Чтобы добавить наши пользовательские параметры PHP, вам необходимо изменить файл /etc/phpmyadmin/config. inc.php . В файле вам нужно будет создать раздел для пользовательской конфигурации, который содержит следующее:

    Файл: /etc/phpmyadmin/config.inc.php
     1
    2
    3
    4
    5
    6
    7
    8
     
     /* Пользовательская конфигурация безопасности */
    $cfg['LoginCookieValidity'] = 14400;
    $cfg['LoginCookieRecall'] = ложь;
    $cfg['AllowUserDropDatabase'] = ложь;
    $cfg['ShowServerInfo'] = ложь;
    $cfg['RestrictPaths'] = да;
        
     

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

  1. После добавления конфигураций перезапустите apache2, чтобы применить изменения:

     sudo systemctl перезагрузить apache2
     

Эта страница была первоначально опубликована на

безопасность
веб сервер
апач
php



Присоединяйтесь к беседе.

Прочитайте другие комментарии или разместите свои ниже. Комментарии должны быть уважительными,
конструктивны и соответствуют теме руководства. Не публиковать
внешние ссылки или реклама. Прежде чем публиковать, подумайте,
комментарий будет лучше адресован, связавшись с нашим
Служба поддержки или запрос на
наш
Сайт сообщества.

Система комментариев Disqus для Linode Docs требует принятия
Функциональные файлы cookie, которые позволяют нам анализировать использование сайта, чтобы мы могли
измерять и улучшать производительность. Для просмотра и создания комментариев к этому
статью, пожалуйста
обновить настройки файлов cookie
на этом веб-сайте и обновите эту веб-страницу. Обратите внимание: у вас должен быть
В вашем браузере включен JavaScript.

Включите JavaScript для просмотра
комментарии от Disqus.comments от Disqus
Disqus

Как предоставить все права доступа к базе данных в MySQL

Чтобы начать редактирование привилегий в MySQL, вы должны сначала войти на свой сервер, а затем подключиться к клиенту mysql . Как правило, вам нужно подключиться с root или любой другой учетной записью, которая является вашей основной, начальной учетной записью «суперпользователя», которая имеет полный доступ на протяжении всей установки MySQL.

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

Подключение к инструменту командной строки MySQL

В этом примере мы предположим, что root является основной учетной записью MySQL. Чтобы начать использовать инструмент командной строки MySQL ( mysqlcli ), подключитесь к серверу как пользователь root , затем введите команду mysql :

 $ mysql
Добро пожаловать в монитор MySQL. Команды заканчиваются на ; или \г.
Ваш идентификатор подключения к MySQL — 112813.
Версия сервера: 5. 5.43-0ubuntu0.14.04.1 (Ubuntu)
[...]
mysql>
 

В случае успеха вы увидите некоторый вывод о вашем соединении с MySQL и увидите подсказку mysql .

Примечание. В случае, если вы не можете напрямую подключиться к серверу в качестве пользователя root до подключения к mysql , вы можете указать пользователя, которого вы хотите подключить , как , добавив -- пользователь = флаг:

 $ mysql --user=имя пользователя
 

Предоставление привилегий

Теперь, когда вы находитесь на mysqlcli , вам нужно только ввести команду GRANT с необходимыми параметрами, чтобы применить соответствующие разрешения.

Типы привилегий

Команда GRANT может применять широкий спектр привилегий, от способности СОЗДАВАТЬ таблиц и баз данных до чтения или записи ФАЙЛОВ и даже ВЫКЛЮЧЕНИЕ 9009 6 сервер. Команде доступно множество флагов и опций, поэтому вы можете ознакомиться с тем, что GRANT действительно можно сделать, просмотрев официальную документацию.

Привилегии для конкретной базы данных

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

до предоставьте все привилегии пользователю , позволяя пользователю полное управление по сравнению с конкретной базой данных , используйте следующий синтаксис:

 MySQL> Предоставление всех привилегий на базе данных.  ;
 

С помощью этой команды мы сказали MySQL:

  • ПРЕДОСТАВИТЬ ПРИВИЛЕГИИ типа ВСЕ (таким образом, все, конечно). Примечание. Для большинства современных установок MySQL не требуется дополнительный ПРИВИЛЕГИИ ключевое слово.
  • Эти привилегии предназначены для имя_базы_данных и применяются ко всем таблицам этой базы данных, на что указывает .* последующий код.
  • Эти привилегии назначаются имени пользователя , когда это имя пользователя подключено локально, как указано @'localhost' . Чтобы указать любой действительный хост, замените 'localhost' на '%' .

Вместо предоставления всех привилегий всей базе данных, возможно, вы хотите предоставить пользователю tolkien только возможность читать данные ( SELECT ) из таблицы авторов базы данных books . Это легко сделать следующим образом:

 mysql> ПРЕДОСТАВИТЬ ВСЕ ПРИВИЛЕГИИ НА books.authors TO 'tolkien'@'localhost';
 

Создание другого суперпользователя

Хотя это и не особенно безопасно, в некоторых случаях вы можете захотеть создать еще одного «суперпользователя», который имеет ВСЕ привилегии во ВСЕХ базах данных на сервере. Это можно сделать аналогично предыдущему, но заменив имя_базы_данных со звездочкой подстановочного знака:

 mysql> ПРЕДОСТАВИТЬ ВСЕ ПРИВИЛЕГИИ НА *.* 'tolkien'@'%';
 

Теперь tolkien имеет те же привилегии, что и стандартная учетная запись root , будьте осторожны!

Сохранение изменений

В качестве последнего шага после любых обновлений прав пользователя обязательно сохраните изменения, введя команду FLUSH PRIVILEGES из командной строки mysql :

 mysql> FLUSH PRIVILEGES;
Запрос выполнен успешно, затронуто 0 строк (0,01 сек.