Безопасно ли «find/var/log -type f -delete» на Debian 9?

Как указано в списке рассылки , мы обновили инструкции по загрузке последней версии Firefox. Если это по-прежнему не удается с последней версией Amazon Linux AMI и Firefox, сообщите нам об этом.

Благодарим вас за использование пакетов Lambda Linux Project.

42
21.09.2018, 08:45
10 ответов

Прежде всего, установите словарь знакомого вам языка, используя:

sudo apt-get install <language-package>

Чтобы увидеть все доступные пакеты:

apt-cache search wordlist | grep ^w

Примечание:все инструкции по установке предполагают, что вы используете ОС на основе Debian -.

После установки словаря запустите:

WORDS=5; LC_ALL=C grep -x '[a-z]*' /usr/share/dict/words | shuf --random-source=/dev/urandom -n ${WORDS} | paste -sd "-"

Что выведет ex:

blasphemous-commandos-vasts-suitability-arbor

Разбить:

  • WORDS=5;— выберите, сколько слов вы хотите в своем пароле.
  • LC_ALL=C grep -x '[a-z]*' /usr/share/dict/words— выбирать только слова, содержащие строчные буквы алфавита (исключаются слова, в которых есть 'или забавные символы, как вéclair). LC_ALL=Cгарантирует, что [a-z]в регулярном выражении не будет соответствовать букве -, например символам, отличным от строчных букв без диакритических знаков.
  • shuf --random-source=/dev/urandom -n ${WORDS}— выберите столько СЛОВ , сколько вы запросили. --random-source=/dev/urandomгарантирует, что shufнадежно запустит генератор случайных чисел; без него shufпо умолчанию является безопасным начальным числом, но может вернуться к небезопасному начальному числу -в некоторых системах, таких как некоторые уровни эмуляции Unix в Windows.
  • paste -sd "-"— объединить все слова с помощью-(не стесняйтесь менять символ на что-то другое ).

В качестве альтернативы вы можете обернуть его в функцию:

#!/bin/bash

function memorable_password() {
  words="${1:-5}"
  sep="${2:--}"

  LC_ALL=C grep -x '[a-z]*' /usr/share/dict/words | shuf --random-source=/dev/urandom -n ${words} | paste -sd "$sep"
}

или

#!/bin/sh

memorable_password() {
  words="$1"
  if [ -z "${words}" ]; then
    words=5
  fi

  sep="$2"
  if [ -z "${sep}" ]; then
    sep="-"
  fi

  LC_ALL=C grep -x '[a-z]*' /usr/share/dict/words | shuf --random-source=/dev/urandom -n ${words} | paste -sd "$sep"
}

И то, и другое можно назвать таковым:

memorable_password 7 _
memorable_password 4
memorable_password

Возвращение:

skipped_cavity_entertainments_gangway_seaports_spread_communique
evaporated-clashes-bold-presuming
excelling-thoughtless-pardonable-promulgated-forbearing

Бонус

Для занудного и забавного, но не очень безопасного пароля, который не требует установки словаря, вы можете использовать (любезно предоставленный @jpa):

WORDS=5; man git | \
  tr ' ' '\n' | \
  egrep '^[a-z]{4,}$' | \
  sort | uniq | \
  shuf --random-source=/dev/urandom -n ${WORDS} | \
  paste -sd "-"
42
27.01.2020, 19:35

У меня есть это:

xkcd_password () { 
    command grep "^[[:alpha:]]\{5,8\}$" "${1-/usr/share/dict/words}" | sort --random-source=/dev/urandom -R | head -4
}
10
27.01.2020, 19:35

Попробуйте это,

shuf --random-source=/dev/urandom -n5 /usr/share/dict/words | sed 's/[^[:alnum:]]//g' | paste -sd_

Выход:

Quayles_knockwursts_scrotums_Barrie_hauler

Пояснение:

  • shuf --random-source=/dev/urandom -n5 /usr/share/dict/wordsПолучить 5 случайных слов из файла dict
  • sed 's/[^[:alnum:]]//g'Удалить не -буквенно-цифровые символы
  • paste -sd_, соедините слова символом подчеркивания(_)

Вы можете использовать любой файл списка слов из Интернета вместо /usr/share/dict/words.

Установите список слов, если у вас его нет. Это может быть в вашем репозитории дистрибутивов, например.https://packages.debian.org/sid/wordlist:

sudo apt install wamerican
8
27.01.2020, 19:35

Вам нужен словарь со списком слов, поскольку вы упоминаете биткойн, скорее всего, вам нужен этот словарь:

https://github.com/bitcoin/bips/blob/master/bip-0039/english.txt

Если ваш родной язык не английский, в том же репозитории доступны списки слов для других языков.

Учитывая этот файл english.txt, вы можете сделать случайный выбор с помощьюshuf:

$ shuf -n 4 english.txt 
anchor
neck
trumpet
response

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

Также в этом примере каждое слово может встречаться только один раз. Если вы хотите разрешить повторяющиеся слова, добавьте опцию --repeat:

.
$ shuf -n 4 -r english.txt

Это позволило бы каждому слову появляться более одного раза.

Если вам нужен вывод в одну строку, вы можете просто добавитьxargs echo:

$ shuf -n 4 english.txt | xargs echo
math easily cube daughter

Или, если вы предпочитаете подстановку команд:

$ echo $(shuf -n 4 -r english.txt)
photo milk roast ozone

Кстати, я не считаю этот стиль пароля легко запоминающимся.

Ну, на самом деле мне очень повезло с math easily cube daughter, так как это просто помогает придумать сказку, в которой ваша дочь может легко решать математические задачи с кубиками или что-то в этом роде. Это то, к чему люди могут относиться, как лошадь в примере XKCD.

Но что, черт возьми, такое anchor neck trumpet response? Я не автор комиксов, у меня есть творческий потенциал, чтобы придумать мнемонику для этого. Так забудется в мгновение ока.

Даже если вы помните слова, сложно запомнить их правильный порядок. Было ли это math easily cube daughterили daugher easily math cubeили что-то еще?

И пароль должен быть случайным, вы не можете его выбрать и изменить.


Что касается сидов биткойнов, вы не должны их запоминать.Это просто способ легко записать это. Любой может написать 16 слов на листе бумаги и правильно прочитать их; со случайными буквами гораздо больше шансов сделать ошибки.


Если вас беспокоит случайность shuf, добавьте параметр --random-source=/dev/urandomко всем командам shuf.

См. такжеhttps://www.gnu.org/software/coreutils/manual/html_node/Random-sources.html#Random-sources

13
27.01.2020, 19:35

Я не делаю этого со стандартными утилитами, которые не предназначены для использования в криптографии. Нет никаких оснований полагать, что они используют csPRNG или что они правильно его раздают, и кто-то, кто знает ваш метод, сможет воспроизвести ваши парольные фразы. Точно так же поступайте с многоцелевыми -утилитами, если вы не знаете, как правильно их использовать.

pwqgenиз passwdqc.

38
27.01.2020, 19:35

Как предложил @R..но для машин RHEL/CentOS (доступно в репозитории EPEL):

pwgen

Обратите внимание на этот отрывок из man-страницы pwgen (акцент мой):

The pwgen program generates passwords which are designed to be easily memorized by humans, while being as secure as possible. Human-memorable passwords are never going to be as secure as completely completely random passwords.

4
27.01.2020, 19:35

Если вы хотите, чтобы его было еще легче запомнить, вы также можете использовать метод хеширования пароля (запомнить одну фразу-пароль для генерации множества других фраз-паролей из ). Вместо того, чтобы запоминать сотни фраз-паролей, вы просто запоминаете метод их генерации.

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

В следующем примере случайное начальное число зависит от

  • ваш пароль (очевидно)
  • обозначенная цель (user@site, wallet#number, любая)
  • словарь использовал(его хэш)
  • количество запрошенных слов

Измените любой из них, и вы получите другой результат.

get_seeded_random() {
    seed=$(printf "%s:" "$@")
    openssl enc -aes-256-ctr -pass pass:"$seed" -nosalt \
    < /dev/zero 2>/dev/null
}

get_random_words() {
    dictionary=$1
    number=$2
    passphrase=$3
    purpose=$4

    dictionary_hash=$(sha1sum < "$dictionary")

    shuf -n "$number" \
         --random-source=<(get_seeded_random
            "$passphrase" "$purpose" "$dictionary_hash" "$number") \
         "$dictionary" \
    | xargs echo
}

Таким образом, если бы моя парольная фраза былаWienerSchnitzel(не лучшим выбором по очевидным причинам ), и если бы я везде использовал пароли в стиле XKCD:

$ get_random_words english.txt 4 WienerSchnitzel wallet:1
robust lottery ugly stone
$ get_random_words english.txt 4 WienerSchnitzel wallet:2
vapor comfort various bitter
$ get_random_words english.txt 4 WienerSchnitzel frostschutz@unix.stackexchange.com
any actor tobacco tattoo

И вы можете выполнить его несколько раз, всегда будет один и тот же результат:

$ get_random_words english.txt 4 WienerSchnitzel wallet:1
robust lottery ugly stone
$ get_random_words english.txt 4 WienerSchnitzel wallet:1
robust lottery ugly stone

Но запрос еще одного слова — это совершенно другой результат (, как и использование другого словаря и т. д.):

$ get_random_words english.txt 5 WienerSchnitzel wallet:1
crash category extra hollow cloud

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

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

# poor man's expensive hash replacement
seed=$( (echo "$seed" ; head -c 1G /dev/zero) | sha1sum)

И в первую очередь используйте гораздо лучшую кодовую фразу.

Вы также можете жестко -закодировать по-настоящему случайный пароль с высокой -энтропией, но это полностью противоречит аспекту "легко запоминающегося" аспекта вещей.

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

1
27.01.2020, 19:35

Для полноты:

git clone git@gitlab.com:victor-engmark/xkcd-passphrase-generator.git
cd xkcd-passphrase-generator
./generate.sh
0
27.01.2020, 19:35

В двух словах:

random.sample(open("/usr/share/dict/words").readlines(), 4)

Производит, например.:

['controverts\n', "Queensland's\n", 'plaids\n', 'aback\n']

Полный код был бы немного длиннее, что-то вроде

import random; print("".join(random.sample(open("/usr/share/dict/words").readlines(), 4)))
Weyden
Geronimo's
Jidda
enumerate

С другой стороны, вы иногда получаете такие перлы:

polyamory
replicates
unmarried
diseases

С другой стороны, вы можете получить слова, которые трудно написать по буквам или даже напечатать:

fezzes
Lumière's
tercentenary's
Liliuokalani

И, конечно же, если вы выберете один результат из нескольких вариантов, вы резко сузите пространство поиска, поэтому вам придется придерживаться первого (, то есть действительно случайного )набора слов.

0
27.01.2020, 19:35

xkcdpass — это простой способ получить это без написания одного -вкладыша.

$ xkcdpass 
optimal mycology Kumamoto thorny chrism unsavoury

Имеются параметры для установки количества слов и т. д.

Для установки:

  • Linux/Unix/macOS:pip install xkcdpass(вам может понадобитьсяsudo).
  • Если у вас нет Python/pip, ищите такие пакеты, как pythonи python-pip, для Python 2 или 3.
0
27.01.2020, 19:35

Теги

Похожие вопросы