Личный блог Suvan`a.

Работая и играя с Linux... И что из этого иногда получается.

Усиление парольной защиты.

Рубрика: Безопасность -> Основные меры защиты Linux
Метки: | |
Понедельник, 6 апреля 2009 г.
Просмотров: 6219

Администратор должен понимать, какой пароль является «хорошим», а какой - «плохим». Но понимают ли это пользователи? Нет. Если среди них и найдется несколько человек, то это точно не показатель. Проводить часами лекции, объясняя и показывая, как правильно создать пароль и как с ним обращаться? Это не очень хорошая мысль.

     Если выложить на внутреннем сайте список примеров - то у большинства пользователей будут установлены эти пароли. Нужно просто возложить оценку пароля на плечи системы, это и будет правильным решением.


     Программа passwd может оценить пароль, но ее оценка не больно то и строгая - она может наложить табу на слабые пароли, например 123456, словарного слова, или если длина пароля меньше значения PASS_MIN_LENGTH. Рекомендуется заменить программу passwd программой npasswd (http://www.utexas.edu/cc/unix/software/npasswd). Эта программа хорошо документирована и просто устанавливается, следовательно, с ней разобраться можно и без дополнительных объяснений.

     

Несистемные пароли.

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

     Аутентификация с помощью .htpasswd.

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

Файл .htaccess помещается в каталог, требующий защиты паролем. Последующий фрагмент файла .htaccess проиллюстрирует ситуацию:

AuthUserFile /var/www/htdocs/.htpasswd AuthGroupFile /dev/null AuthName "Employees Only" AuthType Basic

<LIMIT GET> Require valid-user </Limit>

     Этот файл содержит установки управления доступом к каталогу. Из листинга понятно, что для аутентификации будет использоваться файл /var/www/htdocs/.htpasswd, в диалоговом окне вы увидите надпись "Employees Only" (Только для персонала). Также видно, что будет использована базовая аутентификация (basic), а файл аутентификационной группы не существует - /dev/null. Последние строки дают доступ к каталогу только пользователям, прошедшим аутентификацию.

     Формат файла .htpasswd достаточно простой:

имя_пользователя:зашифрованный_пароль.

     Для шифрования может использоваться системная функция crypt() или же ее модифицированная версия, поддерживающая алгоритм MD5. Оба метода шифрования могут совмещаться в одном файле. Если для создания Apache-пароля используется программа htpasswd, выбрать тот или другой метод шифрования можно с помощью ключей программы.

     Оба метода шифрования подвержены brute-force атаке. Также нужно позаботиться, чтобы файлы .htpasswd не были доступны для чтения обычным пользователям (фактически доступ к этому файлу нужен только пользователю, от имени которого запускается Apache - www, nobody или httpd).

     Нужно учитывать, что эти файлы находятся в дереве каталогов Web-сервера. Хотя Apache блокирует попытки доступа к этим файлам, желательно вынести их за пределы дерева каталогов Web-сервера.

     MySQL.

     Многие Web-разработчики предпочитают хранить пароли пользователей, которым разрешается доступ к определенному ресурсу, не в файлах .htpasswd, а в базе данных MySQL. Ранние версии MySQL для шифрования данных использовали функцию encrypt(), которая, в свою очередь, вызывает функцию crypt(). Этот метод крайне ненадежен, поэтому последние версии MySQL поддерживают следующие методы шифрования:

  • AES реализуется функцией AES_ENCRYPT() и

    AES_DECRYPT. Длина ключа по умолчанию составляет 128 битов, ее можно увеличить до 256 битов, отредактировав исходный код.

  • MD5 - реализуется функцией MD5(). Контрольные суммы, созданные алгоритмом MD5, имеют длину 128 битов и не могут быть дешифрованы. Для взлома таких паролей используется метод brute force, то есть потенциальный пароль кодируется методом MD5, а после этого полученный результат сравнивается с зашифрованным паролем. Если они совпадают, то пароль подобран.
  • SHA — реализуется функцией SHA(). Данный метод генерирует 160-битные контрольные суммы, которые также не могут быть расшифрованы, но взломаны методом brute force.