сложность паролей в системе

Вопросы программного кода и архитектуры Linux

Модератор: Olej

Аватара пользователя
Olej
Писатель
Сообщения: 14939
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: сложность паролей в системе

Непрочитанное сообщение Olej » 09 янв 2020, 16:14

Olej писал(а):
09 янв 2020, 13:06
5. Запретить доступ root по SSH (да и по всем остальным сетевым протоколам).
Разрешить или запретить доступ SSH определенному пользователю или группе в Linux

Код: Выделить всё

root@277938:~# cat /etc/group | grep root
root:x:0:
Дописал 2 строчки:

Код: Выделить всё

timeweb@277938:~$ cat /etc/ssh/sshd_config | grep Deny
DenyUsers root
DenyGroups root
Перезагрузка sshd:

Код: Выделить всё

root@277938:/etc/ssh# systemctl restart sshd

root@277938:/etc/ssh# systemctl status sshd
● ssh.service - OpenBSD Secure Shell server
   Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2020-01-09 16:08:21 MSK; 7s ago
     Docs: man:sshd(8)
           man:sshd_config(5)
  Process: 4350 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
 Main PID: 4351 (sshd)
    Tasks: 2 (limit: 544)
   Memory: 17.2M
   CGroup: /system.slice/ssh.service
           ├─4346 sshd: [accepted]
           └─4351 /usr/sbin/sshd -D

янв 09 16:08:21 277938.local systemd[1]: Starting OpenBSD Secure Shell server...
янв 09 16:08:21 277938.local systemd[1]: ssh.service: Found left-over process 4346 (sshd) in control group while starting unit. Ignoring.
янв 09 16:08:21 277938.local systemd[1]: This usually indicates unclean termination of a previous run, or service implementation deficiencies.
янв 09 16:08:21 277938.local sshd[4351]: Server listening on 0.0.0.0 port 22.
янв 09 16:08:21 277938.local sshd[4351]: Server listening on :: port 22.
янв 09 16:08:21 277938.local systemd[1]: Started OpenBSD Secure Shell server.
Проверяем, что root-у по SSH ходу нет:

Код: Выделить всё

olej@ACER:~/2020_WORK/rus.linux.net.hist/timeweb$ ssh -l root 185.178.47.95
root@185.178.47.95's password: 
Permission denied, please try again.
root@185.178.47.95's password: 
^C

Аватара пользователя
Olej
Писатель
Сообщения: 14939
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: сложность паролей в системе

Непрочитанное сообщение Olej » 09 янв 2020, 16:30

Olej писал(а):
09 янв 2020, 13:06
4. Заблокировать (заблокировать, а не запретить) логин от root ... как это делается в Ubuntu, выполнение root-операций делать через sudo, или из-под sudo -i...
Про блокировку паролей уже рассматривалось здесь: теневые пароли.
Проверяем возможность логина для root:

Код: Выделить всё

olej@277938:~$ su -
Пароль: 

root@277938:~# whoami
root

root@277938:~# exit
выход

Код: Выделить всё

root@277938:/etc/ssh# cat /etc/shadow | grep root
root:$6$NEAXaM3S7Nr2sgqv$dG03bkz7wOZK20kNiviy7GrzZ24w6gDIF8jb8OXqI9kTWcLEttBX.yP/atqT4SnLFvDk.TZN9oGbBYH0uR.m./:18249:0:99999:7:::
А теперь мы это пресечём:

Код: Выделить всё

root@277938:/etc/ssh# passwd -l root
passwd: информация об истечении срока действия пароля изменена.

Код: Выделить всё

root@277938:/etc/ssh# cat /etc/shadow | grep root
root:!$6$NEAXaM3S7Nr2sgqv$dG03bkz7wOZK20kNiviy7GrzZ24w6gDIF8jb8OXqI9kTWcLEttBX.yP/atqT4SnLFvDk.TZN9oGbBYH0uR.m./:18249:0:99999:7:::
Обращаем внимание на "!" в позиции после 1-го ":" ...

Код: Выделить всё

olej@277938:~$ su -
Пароль: 
su: Сбой при проверке подлинности
Всё!
root-у хода нет! :lol:

Аватара пользователя
Olej
Писатель
Сообщения: 14939
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: сложность паролей в системе

Непрочитанное сообщение Olej » 09 янв 2020, 16:34

Olej писал(а):
09 янв 2020, 16:30
А теперь мы это пресечём:

Код: Выделить всё

root@277938:/etc/ssh# passwd -l root
passwd: информация об истечении срока действия пароля изменена.
...
Всё!
root-у хода нет!
И обратно, когда нам понадобится логин для root - сделаем так:

Код: Выделить всё

olej@277938:~$ sudo passwd -u root
...

Аватара пользователя
Olej
Писатель
Сообщения: 14939
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: сложность паролей в системе

Непрочитанное сообщение Olej » 09 янв 2020, 18:37

Olej писал(а):
09 янв 2020, 15:29
Поехали дальше ... разбирать 5 способов генерации...
Ну и для полноты картины, к 5-ти ещё 2 способа генерации рандомного пароля высокой криптостойкости... итого 7:

6. Используя PGP/GPG:

Код: Выделить всё

olej@ACER:~/2020_WORK/rus.linux.net.hist/org.doc$ gpg --gen-random -armor 1 6
SbkRQ7nF

olej@ACER:~/2020_WORK/rus.linux.net.hist/org.doc$ gpg --gen-random -armor 1 6
az852c6E
7. Код на языке Perl:

Код: Выделить всё

olej@ACER:~/2020_WORK/rus.linux.net.hist/local$ cat passwd.perl 
#!/usr/bin/perl

my @alphanumeric = ('a'..'z', 'A'..'Z', 0..9);
my $randpassword = join '', map $alphanumeric[rand @alphanumeric], 0..7;
print "$randpassword\n"

Код: Выделить всё

olej@ACER:~/2020_WORK/rus.linux.net.hist/local$ perl passwd.perl 
Geak61tG

olej@ACER:~/2020_WORK/rus.linux.net.hist/local$ perl passwd.perl 
dPExOM4B

Аватара пользователя
Olej
Писатель
Сообщения: 14939
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: сложность паролей в системе

Непрочитанное сообщение Olej » 09 янв 2020, 18:56

Olej писал(а):
09 янв 2020, 18:37
Ну и для полноты картины, к 5-ти ещё 2 способа генерации рандомного пароля высокой криптостойкости... итого 7:
Ещё: Десять способов генерировать пароль в командной строке случайным образом

8. Простота...
А вот самый простой способ создать в пароль в командной строке, который работает в Linux, в Windows с Cygwin, и, вероятно, в Mac OS X. Я уверен, что некоторые скажут, что это не столь случайный пароль, как в других вариантах, но, честно говоря, подобной «случайности» вполне достаточно в случае, если вы собираетесь использовать пароль целиком.

Код: Выделить всё

olej@ACER:~/2020_WORK/rus.linux.net.hist/timeweb$ date | md5sum | head -c 8 ; echo
84a502ba
9.
В следующем методе используется алгоритм SHA для хэширования даты, затем вычисляется base64, а затем берутся первые ... символа.

Код: Выделить всё

olej@ACER:~/2020_WORK/rus.linux.net.hist/timeweb$ date +%s | sha256sum | base64 | head -c 8 ; echo
ZmMzZTA4

olej@ACER:~/2020_WORK/rus.linux.net.hist/timeweb$ date +%s | sha256sum | base64 | head -c 8 ; echo
YjRkZDAw

Аватара пользователя
Olej
Писатель
Сообщения: 14939
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: сложность паролей в системе

Непрочитанное сообщение Olej » 09 янв 2020, 19:04

Olej писал(а):
09 янв 2020, 13:06
1. Использовать 8 символьные пароли (6 - как предельный минимум);
В обсуждении John the Ripper уже оценивалось что:
- 8 символьный, соответственно: 6,5699×8 = 52,5592 бит, 2**52,5592 = 6,635837588×10¹⁵ комбинаций, 3,317918794×10¹⁵ вероятных переборов, 110597293125 сек. на их выполнение = 30721470 часов = 1280061 суток = 3507 лет! Столько не живут. :lol:
Т.е. уже 8-символьный пароль UNIX практически не вскрываем.
И примеры генерации парольных последовательностей показывались условно на длине 8 символов.
Но, поскольку такие "безобразные" пароли всё-равно приходится где-то хранить, то совершенно равноценно (с точки зрения "удобно-неудобно") использовать пароли длиной, скажем, 18, 24, или 32 символа.
И тогда их вскрытие становится абсолютно безнадёжным занятием. :evil:

Аватара пользователя
Olej
Писатель
Сообщения: 14939
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: сложность паролей в системе

Непрочитанное сообщение Olej » 09 янв 2020, 19:14

Olej писал(а):
09 янв 2020, 13:06
К этим позициям добавим позиции, не относящиеся впрямую к паролю:
Итого, в результате применения выше названных п.п.1-5 мы получаем (и уже реально получили на сервере, где работает читаемый вами форум):
- доступа по имени root нет ни по логину, ни по SSH ... - его практически не существует в системе...
- в системе зарегистрировано 10-12 имён ординарных пользователей...
- некоторые, 2 или 3 из них (угадайка! :lol: ) имеют разрешённый доступ к sudo...
- пароли всех этих пользователей - длинные, энтропийные и не вскрываемые.

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

Код: Выделить всё

sshpass -p xxxxxxxxxx ssh -l yyyyyyyyy -Y 185.178.47.95

Ответить

Вернуться в «Linux изнутри»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя