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

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

Защита паролей (продолжение).

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

     Алгоритмы защиты паролей.

     В Linux используется два основных алгоритма защиты паролей: DES (Data Encryption Standard) и более безопасный MD5 (Message Digest 5). Основная проблема алгоритма DES заключается в том, что он не дает использовать пароли из восьми и более символов. Учитывая возможности современных компьютеров, взлом 8-символьного DES-пароля займет мало времени. Рекомендуется использовать алгоритм MD5, дающий возможность использовать пароли длиной до 127 символов. Определить, ка­кой метод теперь используется в системе, очень просто: нужно посмотреть на закодированные пароли в etc/passwd. Если их длина 34 символа и все они начинаются символами $1$, значит, используется MD5, если длина закодированных паролей 13 символов, то используется DES.


     Управление регистрацией в системе с помощью файла /etc/login.defs.

     Если установлен Shadow Suite (поддержка теневых паролей), включить алгоритм MD5 очень просто1. Для этого нужно открыть файл /etc/login.defs и найти строку:

MD5_CRYPT_ENAB  no

     Значение no заменяется значением yes - и все, с этого момента пароли будут кодироваться с помощью MD5.

     Описание еще нескольких важных опций из этого файла:

  • FAIL_DELAY - Задает задержку в секундах перед повторным запросом имени пользователя и пароля, если пользователь ввел неверный пароль. Использование этой опции позволит уменьшить скорость brute-force атаки. Рекомендуется использовать задержку от 3 до 8 секунд.
  • CONSOLE - Задает список консолей, с которых разрешено пользователю root входить в систему. Лучше всего предоставить пользователю root только физический доступ, например установить консоли tty01-tty04:

        CONSOLE console:ttyOl:tty02:tty03:tty04

    Если пользователю root нужно войти в систему удаленно, он должен будет войти как простой пользователь по ssh, а потом, чтобы получить права root, использовать программу su. Это создаст еще один барьер для злоумышленника - ведь ему нужно знать пароль простого пользователя.

  • ISSUE_FILE - Позволяет задать имя файла, который будет отображен перед запросом имени пользователя и пароля. Можно написать свой текст, например: Доступ в систему разрешен только авторизированным пользователем! Несанкционированный доступ в систему карается по закону!
  • SU_WHEEL_ONLY - Если установить значение yes для данной опции, то использовать команду su смогут только пользователи с GID=0.
  • PASS_MIN_LENGTH - Позволяет задать минимальную длину пароля. Рекомендуется использовать пароли не менее 5 символов.

     Стратегии парольной защиты.

     Хотя файл /etc/shadow и доступен для чтения только пользователю root, он может при определенных обстоятельствах попасть в руки крекера. В результате уязвимости какого-нибудь сервиса, злоумышленник может получить доступ к любому файлу, в том числе и к /etc/shadow. Взломав пароли файла /etc/shadow, крекер еще больше увеличит свою власть над сис­темой. 

     Не нужно использовать короткие пароли. Пароль из 5-6 символов рассматривается как необходимый мимнимум, желательно использовать пароли длиной не менее 8 символов. Ограничение на минимальную длину пароля можно задать в файле /etc/login.defs с помощью параметра PASS_MIN_LENGTH.

     Рассмотрим категории «плохих» паролей:

  • Бессмысленные пароли наподобие "qwerty", "password", "user" и т.д. Можно придумать и немного посложнее...
  • Любое словарное слово, например table или partition.
  • Названия городов, стран, улиц, имена и фамилии близких и родственников (свое имя сюда также относится).
  • Личные данные, например номер телефона, номер автомобиля, дата дня рождения и т.д. Эти данные в первую очередь будут проверяться крекером.
  • Все перечисленное выше, только в смешанном регистре, например PaSSwOrd или UsEr.
  • Крайне нежелательно использовать пароли, которые начинаются или заканчиваются цифрами, например Petr2004 или lOltable.

     Чтобы взломать «плохой» пароль, крекеру понадобится всего несколько часов. Это не говоря уже о первых двух категориях - на взлом относящегося к ним пароля уйдет не более 5 минут.

     Выбирая пароль, нужно помнить, что пароль должен быть одновременно безопасным и запоминаемым. Конечно, можно поставить пользователю пароль D*ny65$%Sn$12. Тогда этот пароль будет написан на бумажке и приклеен где-нибудь, например на монитор. Для повышения запоминаемости пароля используются следующие схемы:

  • Нужно заменять буквы числами. 1 подойдет для 1 или для l, 3 - для е, 4 - для а, 5 - для s, 7 - для t, 0 - для 0. К примеру, слово system будет выглядеть как 5y573t, а слово console - как c0ns013 или даже c0n5013.
  • Использование различных мнемонических аббревиатур.
  • Использование русскоязычных слов, написанных при включенной английской раскладке, к примеру, слово «компьютер» будет выглядеть как rjvgm.nth. Желательно после этого изменить какую-то букву или добавить между буквами цифры.

     Все эти схемы давно известны крекерам и у них уже составлены соответствующие словари.

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

  • Смешивать верхний и нижний регистр, например MeRCeDes.
  • Использовать в пароле цифры и специальные символы: "-","/", пробел,":" и т.д.
  • Не делать пароль слишком сложным для запоминания.

     Если сложно придумать непробиваемый пароль, можно использовать программу mkpasswd, которая генерирует случайные пароли. По умолчанию она генерирует восьми символьные пароли, но с помощью параметра -l длину пароля можно увеличить:

$mkpasswd

)V92sccoQ

$mkpasswd -l 10

94Cdj<ixgH

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