APG - генератор паролей

Версия для печатиОтправить другуPDF version

Оригинал статьи находится по адресу - http://www.onlamp.com/lpt/a/4298

Взял оттуда материал и немного "подшлифовал".

 

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

APG (Automated Password Generator - автоматический генератор паролей) – инструмент для генерирования случайных паролей. Он заинтриговал меня, поскольку поддерживает протокол pwdgen, определенный RFC 972. Интересно то, что хотя этот протокол доступен с 1986, большинство людей никогда не слышали о нём и не имели возможности использовать его в сети. 

Давайте установим apg и увидим какую пользу оно может принести:

# cd /usr/ports/security/apg && make install clean

Установка произошла очень быстро, а вывод занял только три четверти экрана монитора . Но за это время порт установил три утилиты: клиент apg, сервер apgd, и менеджер Bloom-фильтра, apgbfm. Каждая утилита имеет соответствующий manpage, битком набитый примерами и полезными URL-ами для дополнительного чтения. Стоит отметить то, что один из URL ссылается на NIST, Национальный Институт Стандартов и Технологии (NIST известен своими наилучшим методами безопасности), другой на - FIPS (Федеральная Стандарт по Обработке Информации).

В самом простом своем использовании, apg сгенерирует шесть произвольных паролей, в надежде, что Вы выберете один из них как пароль. Пароли будут сложными, что означает их стойкость к атаке по словарю. Для того, чтобы сделать пароли запоминающимися, включите ключ t, который покажет Вам как лучше произносить сгенерированные пароли. Вот пример:

# apg -t
RicDeOs9 (Ric-De-Os-NINE)
geuwocDon3 (geu-woc-Don-THREE)
omfotCibta (om-fot-Cib-ta)
TamJukEd8 (Tam-Juk-Ed-EIGHT)
yelkibhos (yelk-ib-hos)
Dridoin3 (Drid-oin-THREE)
 

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

# apg -MS -t
dabafjos/ (dab-af-jos-SLASH)
geshk*swu (geshk-ASTERISK-swu)
hutyeiz' (hut-yeiz-APOSTROPHE)
wakvob)odi (wak-vob-RIGHT_PARENTHESIS-od-i)
&ovyigrikl (AMPERSAND-ov-yi-gri-kl)
lerdeljid[ (lerd-elj-id-LEFT_BRACKET)
 

Для уверенности в том, что каждый пароль будет длиной 12 символов, определите 12 минимумом (-m) и максимумом (-x) длины пароля:

# apg -MS -m12 -x12 -t
megrihyghep] (me-gri-hy-ghep-RIGHT_BRACKET)
emcujlabcat! (em-cuj-lab-cat-EXCLAMATION_POINT)
uctoldil'swy (uct-old-il-APOSTROPHE-swy)
tygopocparj: (tyg-op-oc-parj-COLON)
yedreumtutt} (ye-dreumt-utt-RIGHT_BRACE)
bagcu!gedany (bag-cu-EXCLAMATION_POINT-ged-an-y)
 

Если ваша политика паролей настаивает на действительно произвольных паролях, которые могут быть непроизносимыми, используйте -a1 вместо -МС:

# apg -a1 -m12 -x12
:L<@6TP@"Z^[
*pIsI_o!690C
:f>SH)xj#/vO
ykwL|L=2KwDp
l)Lb?q*4b}0T
?h3wR>`:jPhZ
 

Хм-м-м. Наверное я остановлюсь на произносимых паролях .

apg также поддерживает способность проверять произвольно сгенерированные пароли атакой по словарю как с помощью словарного файла, так и с помощью Bloom-фильтра. Если при создании произвольного пароля, найдётся совпадение в любом из файлов, apg отбросит это и сгенерирует другой пароль.

Ваша система FreeBSD поставляется со словарным файлом, который находится в /usr/share/dicts/words. Если этого файла нет в Вашей конкретной системе, Вы можете установить его, используя /stand/sysinstall, выбрав configure, затемdistributions и выбирая dict. Этот файл отсортирован по алфавиту и хранится в кодировке ASCII, что означает, что Вы можете добавить ваши собственные слова. В общем, слова добавляются так:

R00t
r00t
r00T

и так далее, поскольку слова чувствительны к регистру. Рекомендовано, чтобы Вы потратили некоторое время, добавляя слова, которых Вы не хотите в качестве паролей в вашей сети. Как только Вы закончите, заключите apg в двойные кавычки и сверьте с вашим словарным файлом используя ключ -r и определяя имя файла:

# apg -MS -m12 -x12 -t -r /usr/share/dict/words
plecvumpyul: (plec-vump-yul-COLON)
nenyacyisej# (nen-yac-yis-ej-CROSSHATCH)
hocs;quadepa (hocs-SEMICOLON-quad-ep-a)
dabejyegawf' (dab-ej-yeg-awf-APOSTROPHE)
neirinajaun` (neir-in-aj-aun-GRAVE)
bempusaflov` (bemp-us-a-flov-GRAVE)
 

Ещё лучше, найдите время, чтобы создавать Bloom файл. Утилита потребует от Вас определить как имя словаря, так и желаемое имя Bloom-файла:

# apgbfm -d /usr/share/dict/words -f ~/bloomfile
Counting words in dictionary. Please wait...
 

Эта команда может быть запущена обычным пользователем. В данном случае, я решил создать Bloom файл в своем домашнем каталоге. Как только файл будет сгенерирован, используйте ключ -b, чтобы сообщить apg где расположен Bloom файл:

# apg -MS -m12 -x12 -t -b ~/bloomfile
pitmurresir. (pit-murr-es-ir-PERIOD)
ryudkuavbuj= (ryud-ku-av-buj-EQUAL_SIGN)
rinlelt{abap (rin-lelt-LEFT_BRACE-ab-ap)
tykawegcerg* (tyk-aw-eg-cerg-ASTERISK)
woabfifawoc? (woab-fif-aw-oc-QUESTION_MARK)
/drujatwajsi (SLASH-dru-ja-twaj-si)
 

Если Вы попробуете оба ключа -r и -b с apg, Вы обнаружите, что Bloom файл - значительно быстрее, так как он использует алгоритм, чтобы определять может ли быть пароль обнаруженным в словарном файле.

Последний ключ, который я упомяну, будет -s, (seed) ключ. Этот ключ рекомендован, так как он дает генератору случайных чисел начальное значение:

# apg -MS -m12 -x12 -t -b ~/bloomfile -s

Please enter some random data (only first 16 are significant)
(eg. your old password):>
slebek%onton (sleb-ek-PERCENT_SIGN-ont-on)
clemvesyert$ (clem-ves-yert-DOLLAR_SIGN)
zeocneamrig- (ze-oc-neam-rig-HYPHEN)
ne*quenrynra (ne-ASTERISK-quen-ryn-ra)
rushkuncuit# (rushk-un-cu-it-CROSSHATCH)
winriwehorv/ (win-ri-we-horv-SLASH)
 

Обратите внимание на то, что эти пароли окончательно усложнены, но все еще довольно произносимы.

Вы можете создать сценарий оболочки так, чтобы не забывать заносить все ключи. Здесь я модифицировал предложение из man apg, чтобы включать свои желаемые ключи:
 

# cat /home/muff/genpasswd.sh
#!/bin/sh
apg -MS -m10 -x10 -t -b /home/muff/bloomfile -s
 

Не забываем сделать файл исполняемым:

# chmod +x /home/muff/genpasswd.sh

Теперь, чтобы сгенерировать пароли, можно просто набрать /home/muff/genpasswd.sh.

Другая альтернатива - создать псевдоним для команды apg. Поскольку я планирую использование apg на одной машине и я всегда работаю в C-shell (tcsh), я добавил такую строку в ~/.tcshrc:

alias apg       apg -MS -m12 -x12 -t -b ~/bloomfile -s

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


Вплоть до этого момента, мы концентрировались на apg клиенте, что означает, что мы пока не использовали протокол pwdgen. Подобно любому TCP/IP протоколу, pwdgen требует как компонент клиента, так и компонент сервера. Работа компонента сервера - слушать запросы клиента на своем порту.

Cервис запустим с помощью демона inetd, для чего Вам понадобится добавить следуюющие данные в файл /etc/inetd.conf:

# echo 'pwdgen  stream  tcp     nowait          root    /usr/local/sbin/apgd    apgd' >> /etc/inetd.conf

Добавим запуск супердемона inetd в rc.conf:

# echo '# INETd-service' >> /etc/rc.conf

# echo 'inetd_enable="YES"' >> /etc/rc.conf

Делее просто просто набираем inetd, чтобы запустить сервис.

# inetd

Преимущество использования apgd - то, что Вам не нужно установить порт apg на каждом пользовательском компьютере. Когда пользователям нужно генерировать произвольные пароли, они просто соединяются с портом 129 на сервере apgd. В этом примере apgd работает на сервере pwdgen.muff.kiev.ua:

# telnet pwdgen.muff.kiev.ua 129
Trying 195.3.159.250...
Connected to pwdgen.muff.kiev.ua.
Escape character is '^]'.
chroyskIts
Vuvtibewci
rudidemUn
cliukmibva
Cavgarsorc
dyWyocks
Connection closed by foreign host.
 

Давайте посмотрим поближе на сгенерированные пароли. Помните, когда я добавлял строку к /etc/inetd.conf, я не включал никаких ключей на apgd. Это означает, что я получил по умолчанию от восьми до десяти букв без символов. Также отметьте отсутствие правил произношения, поскольку я не включал -t в своем inetd.

Наверное, лучше изменить эти умолчания, чтобы включить ключи, соответствующие моим сетевым парольным политикам. В моем случае строка в inetd.conf принимает следующий вид:

pwdgen  stream  tcp     nowait          root    /usr/local/sbin/apgd    apgd -MCN -m10 -x10

Обратите внимание также на отсутствие ключа -s; к несчастью, этот выбор невозможен с apgd.

Теперь необходимо сообщить inetd о изменениях. Для этого перезапустим демон:

# killall -1 inetd

Проверим, что у нас получилось:

# telnet pwdgen.muff.kiev.ua 129
Trying 195.3.159.250...
Connected to pwdgen.muff.kiev.ua.
Escape character is '^]'.
yijLikMek3
SpazezOac2
eirdOlibr3
kaQuabBet5
LoHygjiel6
yorj1Kneir
Connection closed by foreign host.

Если Вы решите использовать сервер apgd, советую также изменить /etc/syslog.conf чтобы следить когда пользователи используют возможность генерирования паролей. Создаем лог-файл и добавляем следующие строки в /etc/syslog.conf (во второй строке не опечатка, так и должно быть):

# touch /var/log/apgd.log

# echo '\!apgd' >> /etc/syslog.conf

# echo '*.info                                          /var/log/apgd.log' >> /etc/syslog.conf

Перезапускаем syslog, чтобы он "ознакомился" с изменениями:

# killall -1 syslogd

Далее подключаюсь к серверу apgd и после этого ищу записи в лог-файле:

# less /var/log/apgd.log
Jan 28 04:10:01 server apgd[2053]: password generation request from 127.0.0.1.49762

Вот и все... Подключения логгируются.


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

Ваша оценка: Нет Средняя: 5 (6 голосов)

Re: APG - генератор паролей

Есть хороший веб-интерфейс к этой замечательной программе -не надо пугать пользователей "ужасным" видом консоли.

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".

Вставай, Україно!

Литература