LXF162:Пароли
|
|
|
Пароли. Реализуем эффективную стратегию аутентификации пользователей
Содержание |
Пароли: Есть стратегия лучше
Вы когда-нибудь думали о стратегии выбора идентификатора пользователя и пароля? Джеймс Литтон подбросит вам пищи для размышлений.
С момента появления первых многопользовательских систем в аутентификации пользователей мало что изменилось. У нас все еще есть идентификатор пользователя (ID) и пароль – и если они верны, мы предоставляем доступ (т. е. авторизацию), и пользователь берется за дело.
Кажется, каждую неделю нам сообщают о дешевых и общедоступных вычислительных ресурсах современных процессоров и графических сопроцессоров, способных выполнять столько операций в секунду, что всего пару лет назад это казалось немыслимым. Когда такие ресурсы направляются на взлом паролей, это часто позволяет «плохим парням» добраться до ваших данных.
Защитимся
Предположим, вы администрируете сервер, доступный через Интернет, и на нем запущено несколько сервисов. Что, спросите вы, можно сделать для снижения моих шансов стать жертвой атаки? Рассмотрим же некоторые простые стратегии и готовые утилиты, которые помогут уменьшить ваши риски! Первое и главнейшее – подумайте об основах. Имена пользователей и пароли – ключи для входа в систему; вот с них и начнем. Так как аутентификация в системе основана на идентификаторах пользователей и паролях, очевидно, что даже имя пользователя – важная часть схемы безопасности организации. В большинстве организаций идентификатор пользователя определить легко – например, это может быть первая буква и фамилия пользователя (vivanov) или имя и фамилия (vasyavanov). Если мы хотим создать препятствия для «плохих парней», то такой подход – не лучшая практика. Технологии социальной инженерии, публикации и другие источники и методы позволяют легко узнать имена лиц, которых стоит атаковать. Лучше иметь такие идентификаторы пользователей, по которым пользователей нельзя определить.
В некоторых организациях за идентификаторы пользователей берутся табельные номера сотрудников или студентов. Это гораздо лучше методов, основанных на персональной информации, но прежде чем применять такой подход, хорошенько подумайте. Ответьте на следующие вопросы:
» Напечатаны ли эти номера на бейджиках?
» Используются ли они для другой идентификации?
» Идут ли они подряд?
Еще один метод – генерировать идентификаторы для всех пользователей случайным образом. Тогда два лица, поступившие на работу в одном месте в один и тот же день, получат совершенно разные и неузнаваемые идентификаторы.
Джо Смит 947G25
Ким Джонс 21003H
При использовании этого метода единственное, что связывает идентификаторы с лицами – сам процесс назначения идентификаторов. Это дает нам фору перед «плохими парнями», раз мы не даем им способа получить один из двух компонентов, необходимых для аутентификации.
Есть несколько способов генерации случайных идентификаторов, но я люблю простоту, так что мы здесь воспользуемся скриптом Bash.
Для начала создадим файл, где будут записаны команды, и сделаем его исполняемым:
cd ~
touch genid.sh
chmod +x genid.sh
Теперь откройте genid.sh в любимом текстовом редакторе и добавьте следующие команды:
- !/bin/bash
l=$1
[ “$l” == “” ] && l=6
tr -dc A-Z0-9 < /dev/urandom | head -c ${l} | xargs
Для проверки скрипта просто наберите ./genid.sh в командной строке, и вы получите случайную строку из шести символов, скажем, P3NVUE.
При каждом запуске скрипт формирует новую случайную строку. Длину выходной строки можно менять, передав ее как параметр. Например, команда ./genid.sh 10 выдаст случайную строку из десяти символов.
Первая строка кода говорит оболочке, что последующие строки должны интерпретироваться Bash. Во второй строке первый параметр, переданный скрипту, сохраняется в переменной l для дальнейшего употребления. В третьей строке l устанавливается в 6, если параметра передано не было. Наконец, в четвертой строке с помощью генератора случайных чисел Linux создается случайный поток символов, а затем команда транслитерации заменяет эти символы на буквы верхнего регистра и цифры. Затем команда head выделяет количество символов, заданное переменной l, и, наконец, xargs дает нам символ конца строки.
В третьей строке можно задать длину выходной строки по умолчанию, присвоив значение параметру l. По моему опыту, идентификатор из шести символов очень легко запомнить.
Пароли
За последние 15 – 20 лет написана тьма статей о паролях, с советами оставлять их как очень простыми, так и очень сложными. Большинству из нас знакомы сложные требования организаций к паролям, которые пугают пользователей и заставляют их записывать пароли на бумаге, чтобы не забыть.
Основной целью политики выбора паролей должно стать сохранение их достаточной сложности, чтобы создать реальный барьер злоумышленникам и в то же время не отпугнуть пользователей.
В качестве аналогии попробуем представить себе входную дверь. Она может быть в одном из двух состояний: заперта или незаперта. Если совсем убрать пароли – верите вы или нет, желающие воспользоваться этой возможностью найдутся. Кто-то сможет получить доступ к учетной записи, просто введя идентификатор пользователя. Это аналогично незапертой двери. Продолжая аналогию, все мы знаем, что замки бывают разные – в дверной ручке с кнопкой, засовы с ключом или замки, применяемые в банковских ячейках (ну, это чересчур, но вы поняли идею).
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
Требование задать пароль, не оговоренное правилами, даст нам слишком простые пароли, которые легко подобрать. Примеры – имя человека, его ребенка или котенка и классика вроде password или abc123. Это аналогично простейшему замку в дверной ручке: дверь заперта, но не особо надежно. Другая крайность – попытка достичь уровня защиты банковской ячейки, задавая сложные правила. Но это приводит к чрезмерному усложнению паролей – и из-за невозможности их запоминания пользователи примутся их записывать, создавая дополнительный риск. Нужна золотая середина.
Я бы сказал, что наша цель – сделать пароль достаточно сложным для взлома и не слишком сложным для запоминания пользователем, и одновременно применить другие средства для предотвращения атак методом перебора и других вредоносных действий.
Сила пароля: факт или фикция?
Измерение надежности пароля по количеству бит его энтропии, согласно описанию Национального института стандартов и технологии, говорит нам, что пароль из трех или четырех несвязанных слов обладает той же степенью надежности, что и более короткий пароль из необычных символов.
Возьмем слова «яблоко», «айфон», «нога» и «поезд» и объединим их – мы получим «яблокоайфонногапоезд». Такой пароль неплохо поддается запоминанию, а «плохие парни» вряд ли легко его разгадают. Сравним это со сложными политиками паролей, заставляющими пользователей придумывать экзотику вроде Ff %#ht!4-2. Этот пароль не только не упомнить, но и с точки зрения энтропии он менее надежен, чем наш.
Чтобы представить себе это более наглядно, наш второй пароль, который так сложен и вроде бы надежен, имеет 27 бит энтропии, и теоретически его можно взломать всего за 37 часов при скорости перебора 1000 вариантов в секунду. Наш первый пароль, который гораздо проще запомнить и который, на первый взгляд, менее надежен, имеет 34.5 бита энтропии, и на его взлом с той же скоростью перебора ушло бы около 281 дня. Добавим к нему символ в другом регистре и спецсимвол, получив что-то вроде «яблокоайфонНога#поезд», и мы увеличим энтропию до 42 бит. На взлом такого пароля потребуется уже 139 лет.
Итак, сложнее не всегда значит лучше. Пароля длиной 8 – 15 символов верхнего и нижнего регистра более чем достаточно, чтобы запереть входную дверь системы на надежный засов.
Создадим еще один скрипт Bash – пусть предлагает нам слова для паролей. Сначала создадим файл скрипта и сделаем его исполняемым:
cd~
touch genpwd.sh
chmod +x genpwd.sh
Теперь нам нужен файл словаря, откуда будут браться слова. Скорее всего, такой файл в вашей системе уже есть. Это файл words в каталоге /usr/dict/ или /usr/share/dict/. Если его нет, список доступных словарей в Ubuntu можно просмотреть, набрав apt-get install wordlist в командной строке. Например, большой словарь американского английского можно установить командой sudo apt-get install wamerican-large.
Для примера я воспользуюсь файлом с 1000 самых ходовых английских слов.
cd ~
wget www.rupert.id.au/resources/1-1000.txt
Создайте файл genpwd.sh в своем любимом текстовом редакторе и введите в него следующие строки:
- !/bin/bash
shuf ~/1-1000.txt | head –n4
Для проверки скрипта просто наберите ./genpwd.sh в командной строки, и вы получите четыре случайных слова, например:
» fell
» wife
» substance
» excite
Неплохое начало! Теперь соединим слова и получим легкий для запоминания пароль.
Как видите, скрипт очень прост. Как и в первом скрипте, первая строка означает, что следующие строки должны обрабатываться оболочкой Bash. Во второй строке указана команда shuf, которая перемешивает строки в файле словаря. В команде head мы указываем количество слов из файла, которые нужно получить.
Идем дальше
Возможно, вы захотите пойти дальше и ограничить длину слова, чтобы в нем было от трех до пяти символов. Для этого измените вторую строку:
shuf ~/1-1000.txt | grep “^[^’]\{3,5\}$” | head –n4
Здесь мы дополнили команду grep строкой regex, которая выбирает только слова заданной длины.
Я бы предпочел не ограничивать длину слова, но хочу, чтобы слова выводились в одной строке вместе и каждое слово начиналось с заглавной буквы. Для этого измените вторую строку:
shuf ~/1-1000.txt | head –n4 | sed ‘s/[^ ]\+/\L\u&/g’ | tr –d ‘\n’ | xargs
Эта команда выдает строки вроде SkyLoveStartBy (33-битный легкий для запоминания пароль).
В этом примере мы берем код первого скрипта, делаем первую букву каждого слова заглавной командой sed и удаляем переносы строк командой tr, поэтому все слова теперь будут в одной строке. Затем с помощью xargs мы приписываем к этой строке символ конца строки.
Мониторинг неудачных попыток
Лучший способ ограничить риск ущерба от атак методом перебора – отслеживать неудачные попытки входа в систему и принимать меры при их обнаружении. Эти меры принимаются во многих системах и могут включать различные действия от временной или постоянной блокировки атакуемой учетной записи до блокирования доступа для источника атак.
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
Простейший способ отслеживать неудачные попытки входа в систему – воспользоваться модулем pam_tally Linux-PAM (Pluggable Authentication Modules – Подключаемые модули аутентификации). В моей Ubuntu 11.10 Server я подключил pam_tally, открыв файл /etc/pam.d/common-auth и добавив в его начало две следующие строки:
auth required pam_tally.so onerr=fail deny=3 unlock_time=3600
account required pam_tally.so reset
С помощью команды faillog можно управлять счетчиками, просматривать информацию о неудачных попытках входа в систему с момента последнего входа в систему, о блокировках и о продолжительности текущих блокировок. Чтобы faillog отображала время блокировки, настройте ее в соответствии с параметром unlock_time, заданным в файле /etc/pam.d/common-auth. Для этого скомандуйте
faillog –l 3600
Теперь, если набрать faillog в командной строке, для всех заблокированных учетных записей выведется время, оставшееся до разблокирования модулем pam_tally, в секундах. Этот метод мониторинга распространяется на вход в систему через консоль, а также по ssh.
Еще одна утилита, которая навсегда блокирует попытки входа в систему с заданного хоста, называется fail2ban; это фреймворк для предотвращения вторжений, написанный на Python.
Описание работы с fail2ban выходит за рамки этой статьи, но соответствующая информация имеется на сайте help.ubuntu.com/community/Fail2ban.
Лучший способ достичь максимальной уверенности в том, что человек действительно тот, за кого себя выдает – выполнить проверку личности в какой-либо форме. Если у вас когда-либо просили предъявить водительские права, студенческий билет, ввести номер социального страхования или еще какую-то персональную информацию для завершения транзакции, то вы уже проходили проверку личности. Проверка личности – просто просьба по отношению к кому-либо идентифицировать себя, доказав, что он – и вправду он. В мире аутентификации это часто называется двухфакторной аутентификацией.
Пассивные системы
Для проверки лучше всего пользоваться пассивной системой, которая не требует от пользователя лишних действий или применения дополнительных устройств. Одна из таких систем – динамика нажатия клавиш – использует алгоритмический подход для оценки вероятности того, что вы – тот, кто вы есть. В ней измеряется ритм нажатия клавиш при вводе пароля. Таким образом составляется уникальный биометрический шаблон для каждого пользователя, и эти данные применяются для сравнения при следующих попытках аутентификации.
На практике эти системы работают в фоновом режиме: проверяют, как вводятся пароли, и разрешают или запрещают вход по результату сравнения. Этот подход – прекрасный способ отражения атак компьютера и человека.
Еще одна форма проверки, набравшая некоторую популярность в последние годы – биометрическая: сканируется радужная оболочка глаза или отпечаток пальца и результат сравнивается с хранящимся в базе данных. Эти системы больше вторгаются в частную жизнь, но их преимущество в том, что для них не требуется дополнительных устройств, таких как USB-брелок, карта или телефон.
Самые популярные и, пожалуй, самые практичные системы проверки личности – генераторы одноразовых паролей, которые требуют от пользователя указывать уникальную строку символов при каждом входе в систему. Но тогда пользователи обычно должны носить с собой дополнительные устройства. В более новых системах используются приложения на мобильных устройствах (телефонах) и подтверждение при посредстве SMS, для максимальной надежности.
Я не рассказал об этом в нашей статье, но в качестве двухфакторной аутентификации в Linux вы можете попробовать программу Google Authenticator.
Полная безопасность
Безопасность – это не только имя пользователя и пароль. Если ваш сервер открыт для доступа через Интернет, защитите его надежным брандмауэром, дающим доступ лишь к минимально необходимому набору сервисов. Также имеет смысл запустить брандмауэр на других серверах и отключить ненужные сервисы. Наконец, если вы работаете системным администратором и вам необходимо регулярно подключаться по ssh ко внутренним серверам, подумайте о применении аутентификации на базе сертификатов, взамен традиционной парольной аутентификации.|