На главную Напишите нам! Напишите нам!
14-11-2012
колонтитул в word 2007, 0000002111

Обеспечение безопасности своего пароля

Не рекомендуется указывать пароль таким образом, чтобы его могли подобрать другие пользователи. Ниже приведены методы, которыми можно пользоваться при задании своего пароля при запуске указанных клиентских программ, а также степенью риска для каждого из методов:

  • Никогда не заносите пароль обычного доступа в таблицу mysql.user. Зная даже зашифрованный пароль пользователя, можно войти в систему под именем этого пользователя. Пароли шифруются только для того, чтобы нельзя было увидеть, какой именно пароль используется (если вы используете один и тот же пароль для разных приложений).

  • Использование параметров -pyour_pass или --password=your_pass в командной строке удобно, но не очень безопасно, так как ваш пароль становится видимым для системных статусных утилит (таких как ps), и другие пользователи могут просмотреть командные строки (во время запуска клиенты MySQL обычно перезаписывают аргументы командной строки нулями, но существует небольшой промежуток времени, на протяжении которого значение остается видимым).

  • Используйте параметр -p или --password (без указания значения your_pass). В этом случае программа клиента запрашивает пароль с терминала:

    shell> mysql -u user_name -p
    Enter password: ********
    

    Ваш пароль будет представлен символами *.

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

  • Храните свой файл в файле конфигурации. Например, можно записать свои пароли в разделе [client] файла .my.cnf в своем каталоге:

    [client]
    password=your_pass
    

    Если пароль хранится в .my.cnf, файл не должен быть доступен для чтения или записи для всех или для отдельных групп пользователей. Убедитесь, что права доступа к файлу установлены в 400 или 600.

  • Можно хранить свой пароль в переменной окружения MYSQL_PWD, но этот метод считается очень небезопасным и не должен использоваться. В некоторые версии ps включена возможность отображать переменные окружения работающего процесса. Поэтому если задать свой пароль при помощи MYSQL_PWD, он будет виден для всех,. Даже в системах без такой версии ps, неразумно предполагать, что не существует другого метода получить информацию по переменным окружения.

Исходя из всего сказанного выше, самыми безопасными методами указания пароля являются запрос программы клиента на ввод пароля с терминала или указание пароля в защищенном надлежащим образом файле .my.cnf.

Основные сведения

MySQL поддерживает шифрованные SSL-соединения. Для лучшего понимания того, как в MySQL используется SSL, мы приводим здесь основные сведения по SSL и X509. Пользователи, которые уже знакомы с данным протоколом и стандартом, эту часть могут пропустить.

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

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

Шифровка - это метод, позволяющий сделать прочтение любых данных невозможным. Фактически при современном положении дел для алгоритмов шифрования требуется использование дополнительных элементов безопасности. Они должны обеспечивать противодействие многим видам известных на настоящий момент атак, таких как изменение порядка зашифрованных сообщений или повторение данных.

Стандарт X509 позволяет производить идентификацию в Internet. Чаще всего он используется в приложениях электронной коммерции. Упрощенно схема его применения выглядит следующим образом: существует некая организация под названием "Certificate Authority" (можно перевести как «Сертификационное Бюро». - Прим. пер.), которая назначает электронные сертификаты всем, кому они нужны. Сертификаты основываются на асимметричных алгоритмах шифрования, содержащих два ключа - публичный и секретный. Владелец сертификата может подтвердить свою личность, предъявив свой сертификат другой стороне. Сертификат состоит из публичного ключа владельца. Любые данные, зашифрованные при помощи этого публичного ключа могут быть расшифрованы только при помощи соответствующего секретного ключа, который находится у владельца сертификата.

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

Если вы хотите получить дополнительную информацию о SSL/X509/шифровании, необходимо воспользоваться своим любимым поисковым сервером Internet и произвести поиск по словам, которые вас интересуют.

Параметры команды GRANT

В дополнение к обычной схеме имя пользователя/пароль MySQL может производить проверку атрибутов сертификата X509. Для этого необходимы также все обычные параметры (имя пользователя, пароль, маска IP-адреса, имя базы данных/таблицы).

Существует несколько возможностей ограничить соединения:

  • Если не указано никаких параметров SSL/X509, а имя пользователя и пароль указаны правильно, то разрешены все виды шифрованных и нешифрованных соединений.

  • Параметр REQUIRE SSL позволяет серверу устанавливать только зашифрованные при помощи протокола SSL соединения. Обратите внимание, что этот параметр может быть неприемлемым, если существуют записи ACL, разрешающие не-SSL соединения.

    mysql> GRANT ALL PRIVILEGES ON test.* TO root@localhost
        -> IDENTIFIED BY "goodsecret" REQUIRE SSL;
    
  • REQUIRE X509 означает, что у клиента должен быть действительный сертификат, но мы не требуем наличия определенного сертификата, сертификата определенной фирмы или темы. Единственное ограничение - подпись должна поддаваться проверке при помощи одного из сертификатов бюро сертификации.

    mysql> GRANT ALL PRIVILEGES ON test.* TO root@localhost
        -> IDENTIFIED BY "goodsecret" REQUIRE X509;
    
  • REQUIRE ISSUER "issuer" делает требования по соединению более определенными: теперь клиент должен предоставить действительный сертификат X509, выданный бюро сертификации (CA) "issuer". Использование сертификатов X509 всегда означает применение шифрования, поэтому параметр SSL больше не нужен.

    mysql> GRANT ALL PRIVILEGES ON test.* TO root@localhost
        -> IDENTIFIED BY "goodsecret"
        -> REQUIRE ISSUER "C=FI, ST=Some-State, L=Helsinki,
        "> O=MySQL Finland AB, CN=Tonu Samuel/Email=tonu@mysql.com";
    
  • REQUIRE SUBJECT "subject" требует наличия у клиента действительного сертификата X509 с содержащейся в нем темой "subject". Если у клиента есть действительный сертификат, но другой "subject", то соединение не будет установлено.

    mysql> GRANT ALL PRIVILEGES ON test.* TO root@localhost
        -> IDENTIFIED BY "goodsecret"
        -> REQUIRE SUBJECT "C=EE, ST=Some-State, L=Tallinn,
        "> O=MySQL demo client certificate,
        "> CN=Tonu Samuel/Email=tonu@mysql.com";
    
  • REQUIRE CIPHER "cipher" требуется для обеспечения достаточно сложных шифра и длины ключа. Протокол SSL сам по себе может быть ненадежным из-за использования старых алгоритмов с короткими ключами шифрования. Воспользовавшись этим параметром, мы можем указать определенный метод шифрования, разрешающий соединение.

    mysql> GRANT ALL PRIVILEGES ON test.* TO root@localhost
        -> IDENTIFIED BY "goodsecret"
        -> REQUIRE CIPHER "EDH-RSA-DES-CBC3-SHA";
    

    Разрешается также сочетать SUBJECT, ISSUER, CIPHER в REQUIRE, например, так:

    mysql> GRANT ALL PRIVILEGES ON test.* TO root@localhost
        -> IDENTIFIED BY "goodsecret"
        -> REQUIRE SUBJECT "C=EE, ST=Some-State, L=Tallinn,
        "> O=MySQL demo client certificate,
        "> CN=Tonu Samuel/Email=tonu@mysql.com"
        -> AND ISSUER "C=FI, ST=Some-State, L=Helsinki,
        "> O=MySQL Finland AB, CN=Tonu Samuel/Email=tonu@mysql.com"
        -> AND CIPHER "EDH-RSA-DES-CBC3-SHA";
    

    Начиная с MySQL 4.0.4, слово AND необязательно в опциях REQUIRE.

    Порядок опций не имеет значения, но ни одна опция не может быть указана дважды.

колонтитулы в word 2007, 000000211111
Класс!
 
Яндекс.Метрика
Копирование возможно при указании прямой индексируемой гиперссылки
0000002