Страница 2 из 2
Re: теневые пароли
Добавлено: 15 сен 2019, 18:25
Olej
Olej писал(а):
И, наконец, 3-е поле - это хешированное значение, с которым и сверяется хеш (с salt) вводимого вами пароля. Обратная задача: зная salt и результирующее хешированное значение - не решаемая, таким образом пароль не хранится нигде в системе и не восстанавливаем!
Далее...
Если одну и ту же команду mkpasswd повторять несколько раз последовательно, то, естественно, повторяется результат:
Код: Выделить всё
olej@astra:~$ mkpasswd -m sha-512 --salt=zxc12345vbnm 123
$6$zxc12345vbnm$/MRL9KqNdzy1xEKNvtW/o5kSxXcJ8yQ551OyuW8R.XwOHTQXE.qJSKJdhumG/XWOVfaeKFaJCznZ//4iZrait0
olej@astra:~$ mkpasswd -m sha-512 --salt=zxc12345vbnm 123
$6$zxc12345vbnm$/MRL9KqNdzy1xEKNvtW/o5kSxXcJ8yQ551OyuW8R.XwOHTQXE.qJSKJdhumG/XWOVfaeKFaJCznZ//4iZrait0
Но реально mkpasswd вызывается без предопределённого --salt= , и тогда при каждом последовательном вызове берётся случайное значение строки salt (и даже длина её от раза к разу - случайная).
Тогда последовательные, друг за другом, вызовы mkpasswd будут выглядеть так:
Код: Выделить всё
olej@astra:~$ mkpasswd -m sha-512 123
$6$OyH3td/5X$WLXAoa2pUbql4A1jXQqt2G8nFlzKVNq30ADuZasEh.tMEIUNS.UGTPtuu4Up.soxNdPnfU8zrDpWrkU.opmLF/
olej@astra:~$ mkpasswd -m sha-512 123
$6$sXWxZTMDbmho9Z$UUy87d1DKWO6yLRMnUB09YhF97DG8/uhSd91N2XxC4h4Dak0nCqEtuuo8JL7dRXVE4pfigA7BO3XEpNp3fZHF1
olej@astra:~$ mkpasswd -m sha-512 123
$6$hnZEgRiW5$jyQTLVCMIoRy6zdu5Bj5UIeH8.MZE5wyoIGhriA/.GM.MIX23n5adMFhdQslCdFh.nV/8qIyDHoFkQ8DqSYog0
Результат каждый раз отличается!
P.S. Понятно, почему требуется хорошая энтропия генератора случайных значений... Но в Linux, с его новыми генераторами, с этим - очень неплохо.
См. по этому поводу:
генератор случайных чисел.
Re: теневые пароли
Добавлено: 15 сен 2019, 18:54
Olej
В некоторых дистрибутивах ... RHEL, защищённых Astra Linux SE и др. - просто нет такой утилиты:
Код: Выделить всё
olej@astra:/bin$ sudo find / -name mkpasswd
olej@astra:/bin$
Но это не принципиально важно - у них хоть и нет утилиты mkpasswd, но всё то же можно получить скриптом Perl, который и обеспечивает работу утилиты mkpasswd (обрабатываем пароль 123):
Код: Выделить всё
olej@astra:~$ perl -e 'print crypt(q/123/, q/$6$zxc12345vbnm$/), "\n"'
$6$zxc12345vbnm$/MRL9KqNdzy1xEKNvtW/o5kSxXcJ8yQ551OyuW8R.XwOHTQXE.qJSKJdhumG/XWOVfaeKFaJCznZ//4iZrait0
olej@astra:~$ perl -e 'print crypt(q/123/, q/$6$zxc12345vbnm$/), "\n"'
$6$zxc12345vbnm$/MRL9KqNdzy1xEKNvtW/o5kSxXcJ8yQ551OyuW8R.XwOHTQXE.qJSKJdhumG/XWOVfaeKFaJCznZ//4iZrait0
olej@astra:~$ perl -e 'print crypt(q/123/, q/$6$zxc12345vbnm$/), "\n"'
$6$zxc12345vbnm$/MRL9KqNdzy1xEKNvtW/o5kSxXcJ8yQ551OyuW8R.XwOHTQXE.qJSKJdhumG/XWOVfaeKFaJCznZ//4iZrait0
Сравните с тем результатом, что был получен раньше утилитой mkpasswd в Astra Linua CE.
Код: Выделить всё
olej@astra:~$ mkpasswd -m sha-512 --salt=zxc12345vbnm 123
$6$zxc12345vbnm$/MRL9KqNdzy1xEKNvtW/o5kSxXcJ8yQ551OyuW8R.XwOHTQXE.qJSKJdhumG/XWOVfaeKFaJCznZ//4iZrait0
Re: теневые пароли
Добавлено: 24 окт 2019, 01:21
Olej
Olej писал(а): ↑11 июн 2019, 17:55
Как легко видеть, здесь во 2-м поле (поле пароля) root стоит '!' - вход с таким паролем
заблокирован. В отличие от '*' в этой позиции - вход с таким именем
запрещён - '!' похоже (IMHO) нововведение нескольких последних лет ... потому что в публикациях порядка 2006 года он нигде не упоминается.
А заблокированный пароль/имя можно разблокировать.
Пришлось по случаю ещё раз покопаться с блокированием пароля ('!') - можно
в любой записи /etc/shadow (с паролем) вписать '!' (текстовым редактором) после 1-го ':', и логин будет заблокирован.
Смотрим:
Код: Выделить всё
olej@ACER:/home/watbiz$ sudo cat /etc/shadow | grep watbiz
watbiz:$6$nWvb0qiZE.MQrkKM$PCYQ5tca6wkUk1IoAyas7vFxDTKo9VINAtokxhZHpALXqZoWuK5I9vcy8h48Jih/B47.50UfDC.BlCWTQNrXt1:18192:0:99999:7:::
olej@ACER:/home/watbiz$ sudo watbiz -
sudo: watbiz: command not found
olej@ACER:/home/watbiz$ su watbiz -
Пароль:
watbiz@ACER:~$ whoami
watbiz
watbiz@ACER:~$ exit
exit
Здесь я логинюсь с паролем как пользователь watbiz.
Теперь я его заблокирую (текстовым редактором впишу 1 символ):
Код: Выделить всё
olej@ACER:/home/watbiz$ sudo cat /etc/shadow | grep watbiz
watbiz:!$6$nWvb0qiZE.MQrkKM$PCYQ5tca6wkUk1IoAyas7vFxDTKo9VINAtokxhZHpALXqZoWuK5I9vcy8h48Jih/B47.50UfDC.BlCWTQNrXt1:18192:0:99999:7:::
olej@ACER:/home/watbiz$ su watbiz -
Пароль:
su: Сбой при проверке подлинности
Всё ... отлуп - пользователь блокирован.
Возвращаю всё назад (вытираю символ '!'):
Код: Выделить всё
olej@ACER:/home/watbiz$ sudo cat /etc/shadow | grep watbiz
watbiz:$6$nWvb0qiZE.MQrkKM$PCYQ5tca6wkUk1IoAyas7vFxDTKo9VINAtokxhZHpALXqZoWuK5I9vcy8h48Jih/B47.50UfDC.BlCWTQNrXt1:18192:0:99999:7:::
olej@ACER:/home/watbiz$ su watbiz -
Пароль:
watbiz@ACER:~$ whoami
watbiz
watbiz@ACER:~$ exit
exit
Всё опять с пользователем ОК.
теневые пароли
Добавлено: 08 ноя 2019, 00:28
Olej
Работа с паролями в Python:
Код: Выделить всё
olej@ACER:~/python-virtual-environments$ sudo pip3 install bcrypt
[sudo] пароль для olej:
Collecting bcrypt
Downloading https://files.pythonhosted.org/packages/8b/1d/82826443777dd4a624e38a08957b975e75df859b381ae302cfd7a30783ed/bcrypt-3.1.7-cp34-abi3-manylinux1_x86_64.whl (56kB)
|████████████████████████████████| 61kB 858kB/s
Requirement already satisfied: six>=1.4.1 in /usr/local/lib/python3.7/dist-packages (from bcrypt) (1.11.0)
Collecting cffi>=1.1
Downloading https://files.pythonhosted.org/packages/16/cd/1f4ddf6be8300713c676bb9f3a2d3b8eb8accc0a6a24f57d4f6c4cd59d34/cffi-1.13.2-cp37-cp37m-manylinux1_x86_64.whl (398kB)
|████████████████████████████████| 399kB 2.5MB/s
Collecting pycparser
Downloading https://files.pythonhosted.org/packages/68/9e/49196946aee219aead1290e00d1e7fdeab8567783e83e1b9ab5585e6206a/pycparser-2.19.tar.gz (158kB)
|████████████████████████████████| 163kB 3.4MB/s
Building wheels for collected packages: pycparser
Building wheel for pycparser (setup.py) ... done
Created wheel for pycparser: filename=pycparser-2.19-py2.py3-none-any.whl size=111031 sha256=bc67eef65590c0ed0be5537d7810f963125d905ab0ae48ae13086ef17a95af0c
Stored in directory: /root/.cache/pip/wheels/f2/9a/90/de94f8556265ddc9d9c8b271b0f63e57b26fb1d67a45564511
Successfully built pycparser
Installing collected packages: pycparser, cffi, bcrypt
Successfully installed bcrypt-3.1.7 cffi-1.13.2 pycparser-2.19
Код: Выделить всё
olej@ACER:~/2019_WORK/HISTORY/11/07$ python3
Python 3.7.3 (default, Apr 3 2019, 05:39:12)
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import bcrypt
>>> bcrypt.hashpw('xxxxxx'.encode('utf-8'), bcrypt.gensalt())
b'$2b$12$a/uXx0omhwnp70jmbAZOjeVKFC3HdxSn7yaRxmOSXyQRL0hIlcoMS'
Ну и вот это интересно:
Код: Выделить всё
...
>>> bcrypt.gensalt()
b'$2b$12$n/e8qT2bYG/FlzkSkouC/u'
>>> bcrypt.gensalt()
b'$2b$12$yPFCwt/9cqmu4uL.gmInnO'
>>> bcrypt.gensalt()
b'$2b$12$RBgAzOdj.t1XV3Qzx/G99u'
>>> bcrypt.gensalt()
b'$2b$12$hnyelolZZxfFCKXMArYR8.'
>>> bcrypt.gensalt()
b'$2b$12$3.wZQl20jR5FfziQi4Y7pe'
...
Re: теневые пароли
Добавлено: 08 ноя 2019, 00:55
Olej
Olej писал(а): ↑08 ноя 2019, 00:28
Работа с паролями в Python:
https://onstartup.ru/python/python3-bcrypt/
Библиотека хэширования паролей для Python 3
bcrypt — это модуль Python, который предоставляет метод хэширования пароля, основанный на алгоритме хэширования пароля Blowfish, как описано в «Адаптируемой для будущего паролей схеме» Нильса Провоса и Дэвида Мазиера:
http://static.usenix.org/events/usenix99 /provos.html.
теневые пароли
Добавлено: 04 сен 2022, 21:27
Olej
Olej писал(а): ↑08 ноя 2019, 00:28
Работа с паролями в Python:
Альтернатива:
Код: Выделить всё
>>> import hashlib
>>> passwd = b'xxxxxx'
>>> salt = b'pFRKLvEH'
>>> hashed=hashlib.sha512(passwd + salt).hexdigest()
>>> hashed
'b82fd031afcdf7d8d3f2e476c25999851b16ebc47a0eb64583a8e7f26467fe597e26507cd3ec86cda26953aed9a83134226a2810c26255467a3c09d5ad4c9d57'
>>> hashed=hashlib.sha256(passwd + salt).hexdigest()
>>> hashed
'145d3fdc2f89423a90e38fba869286e9c707d4abee7657545853eedc9a8224f9'
Код: Выделить всё
>>> hashed=hashlib.md5(passwd + salt).hexdigest()
>>> hashed
'eedbc7181a7270b627897e0486684327'
>>> hashed=hashlib.descrypt(passwd + salt).hexdigest()