Главная страница


ru.unix.bsd

 
 - RU.UNIX.BSD ------------------------------------------------------------------
 From : Vadim Guchenko                       2:5020/400     02 Dec 2004  15:21:09
 To : All
 Subject : Миф о ненадежности пускания рута по ssh
 -------------------------------------------------------------------------------- 
 
 Hello, All!
 
 Речь идет о случае, когда на сервере вообще существует возможность получить
 рута удаленно. Параноидальные случаи, когда рута можно получить лишь с
 локальной консоли, не рассматриваются, т.к. они только затрудняют нормальную
 работу админа, давая при этом сомнительную выгоду.
 
 Рассмотрим два случая:
 1. Удаленный вход от имени root с использованием пароля разрешен. Требуется
 подобрать пароль рута.
 2. Удаленный вход от имени root с использованием пароля запрещен. Вместо
 него создан по крайней мере один пользователь в группе wheel, который
 получает рута локально, используя команду su. Требуется подобрать логин
 пользователя из группы wheel, пароль этого пользователя и пароль рута для
 su. Замечание: на сервере может быть сколько угодно пользователей, не
 входящих в группу wheel и следовательно не способных получить рута по
 команде su. Hа переборе это никак не скажется.
 
 Утверждение: число комбинаций для подбора логина пользователя в группе
 wheel, пароля этого пользователя для ssh и пароля root для команды su не
 больше, чем число комбинаций для подбора одного лишь пароля root для ssh
 длиной, равной сумме длин логина пользователя в группе wheel, пароля этого
 пользователя для ssh и пароля root для команды su, увеличенной на 2, при
 следующих условиях:
 1. Количество _различных_ символов, из которых могут состоять логин и
 пароли, не менее 26.
 2. Сумма длин логина пользователя в группе wheel, пароля этого пользователя
 для ssh и пароля root для команды su не больше 38.
 
 Доказательство: обозначим длину логина пользователя в группе wheel за L,
 длину пароля этого пользователя для входа по ssh за P, длину пароля root при
 использовании команды su за R. Обозначим количество _различных_ символов, из
 которых могут состоять логин и пароли, за S. Будем предполагать, что логин и
 пароли не могут быть пустыми (состоят хотя бы из одного символа) и их длины
 заранее неизвестны. Обозначим сумму их длин за M = L + P + R. Построим
 перебор всех возможных комбинаций по следующему алгоритму: сначала будем
 перебирать все комбинации логина и паролей так, чтобы сумма их длин была
 равна 3. Затем, чтобы сумма их длин была равна 4. И т.д. И на последнем
 шаге, чтобы сумма их длин была равна M. Тогда число всех комбинаций N равно:
 
 N = N(3) + N(4) + ... + N(M) = СУММА N(i),   i = 3, 4, ..., M.
 
 Hа i-m шаге будем перебирать всевозможные строки символов длиной i. Т.к. в
 каждой позиции строки символ может принимать одно из S значений, то число
 всех различных строк длиной i равно S^i. При этом существует множество
 способов разбить одну строку на три составляющих (логин пользователя, пароль
 пользователя и пароль рута). Вычислим число разбиений строки длиной i на три
 составляющих. У нас есть два разделителя и i-1 позиции между символами
 строки, в которые их можно вставить. Будем считать, что номер позиции, куда
 вставляется разделитель, равен порядковому номеру цифры, находящейся слева
 от позиции разделителя. Hа первом шаге мы ставим первый разделитель в
 позицию 1, а второй разделитель ставим в цикле в позиции с 2 по i-1. Всего
 комбинаций i-2. Hа втором шаге мы ставим первый разделитель в позицию 2, а
 второй разделитель ставим в цикле в позиции с 3 по i-1. Всего комбинаций
 i-3. И т.д. Hа последнем шаге мы ставим первый разделитель в позицию i-2, а
 второй разделитель в позицию i-1. Всего 1 комбинация. Получилось i-2 шагов.
 Суммируем и получаем арифметическую прогрессию:
 
 (i - 2) + (i - 3) + ... + 1 = ((i - 2) +1) * (i - 2) / 2 = (i - 1)(i - 2) /
 2
 
 Таким образом
 
 N(i) = (i - 1)(i - 2) / 2 * S^i
 
 N = СУММА (i - 1)(i - 2) / 2 * S^i,   i = 3, 4, ..., M.
 
 N <= СУММА (M - 1)(M - 2) / 2 * S^i,   i = 3, 4, ..., M.
 
 Определим при каких значениях M справедливо следующее неравенство:
 
 СУММА (M - 1)(M - 2) / 2 * S^i < СУММА K * S^i,   i = 3, 4, ..., M.
 
 Для этого должно выполняться следующее условие:
 
 (M - 1)(M - 2) / 2 < K
 
 M^2 - 3M + 2 - 2K < 0
 
 Корни уравнения M^2 - 3M + 2 - 2K = 0:
 
 M1 = (3 + КОРЕHЬ (1 + 8K)) / 2
 M2 = (3 - КОРЕHЬ (1 + 8K)) / 2
 
 (3 - КОРЕHЬ (1 + 8K)) / 2 < M < (3 + КОРЕHЬ (1 + 8K)) / 2
 
 А т.к. M > 0, то окончательно получаем условие:
 
 M < (3 + КОРЕHЬ (1 + 8K)) / 2
 
 Возьмем S = 26 и K = S = 26. Тогда M < 8,7 <= 8. Мало для M. Возьмем K = S^2
 = 26^2 = 676. Тогда M < 38,2 <= 38. Приемлемо. Очевидно, чем больше значение
 S, тем большее значение может принимать M.
 
 В итоге получаем:
 
 N <= СУММА (M - 1)(M - 2) / 2 * S^i  <  СУММА S^2 * S^i  =  СУММА S^(i+2),
 i = 3, 4, ..., M,   S >= 26,   M <= 38.
 
 N < СУММА S^i,   i = 5, 6, ..., M+2,   S >= 26,   M <= 38.
 
 N < СУММА S^i,   i = 1, 2, ..., M+2,   S >= 26,   M <= 38.
 
 Правая часть неравенства есть ни что иное, как количество комбинаций при
 подборе одного пароля длиной M+2 символов. Что и требовалось доказать.
 
 В процессе перебора на самом нижнем уровне цикла, когда у нас есть некоторая
 последовательность символов, разделенная на три строки, мы каждую из этих
 строк последовательно используем как логин пользователя в группе wheel,
 пароль этого пользователя для ssh и пароль root для команды su
 соответственно. Если логин и первый пароль не подошел и на сервер зайти не
 удалось, то второй пароль разумеется не применяем. Если логин и первый
 пароль подошел и на сервер удалось зайти, то можно использовать оптимизацию
 алгоритма и продолжать подбирать лишь второй пароль для команды su, причем
 не только в пределах его длины на текущем шаге i, но и вплоть до
 максимальной длины. Также можно загрузить программу перебора прямо на сервер
 и запустить ее с него, что может ускорить перебор. Если перебрали все
 варианты и рута не получили, значит пользователь не входит в группу wheel.
 Продолжаем перебор с использованием логина пользователя и его пароля на ssh
 и ищем входы на сервер под другими именами.
 
 В случае же подбора только одного пароля на root по ssh, у нас нет шанса на
 промежуточный успех. Вход не удастся, пока не будет подобран весь пароль.
 
 Следствие из утверждения: если есть желание создать некоторого пользователя,
 дать ему доступ по ssh и позволить ему брать рута уже с сервера, то можно
 просуммировать длины логина, пароля пользователя и пароля на рут, прибавить
 2 и полученное число использовать в качестве длины нового пароля на рут,
 которому можно дать доступ по ssh напрямую. С точки зрения подбора входа на
 сервер результат получится не хуже.
 
 Реально же я не верю в подбор пароля вообще ни в каком из описанных случаев,
 если конечно пароль не из словаря и длиной хотя бы 7 символов.
 With best regards, Vadim Guchenko.  E-mail: s0lver@kraslan.ru
 
 --- ifmail v.2.15dev5.3
  * Origin: Demos online service (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Миф о ненадежности пускания рута по ssh   Vadim Guchenko   02 Dec 2004 15:21:09 
 Миф о ненадежности пускания рута по ssh   Slawa Olhovchenkov   02 Dec 2004 16:30:02 
 Re: Миф о ненадежности пускания рута по ssh   Vadim Guchenko   02 Dec 2004 21:25:15 
 Миф о ненадежности пускания рута по ssh   Slawa Olhovchenkov   02 Dec 2004 22:40:28 
 Re: Миф о ненадежности пускания рута по ssh   Dmitry Miloserdov   02 Dec 2004 22:55:50 
 Re: Миф о ненадежности пускания рута по ssh   Mykola Dzham   03 Dec 2004 14:47:46 
 Re: Миф о ненадежности пускания рута по ssh   Vadim Guchenko   03 Dec 2004 14:56:38 
 Re: Миф о ненадежности пускания рута по ssh   Mykola Dzham   03 Dec 2004 15:02:48 
 Re: Миф о ненадежности пускания рута по ssh   Valentin Davydov   03 Dec 2004 16:06:29 
 Re: Миф о ненадежности пускания рута по ssh   Valentin Nechayev   04 Dec 2004 13:12:28 
 Re: Миф о ненадежности пускания рута по ssh   Valentin Davydov   03 Dec 2004 17:36:51 
 Re: Миф о ненадежности пускания рута по ssh   Mykola Dzham   03 Dec 2004 18:27:41 
 Re: Миф о ненадежности пускания рута по ssh   Valentin Davydov   03 Dec 2004 20:22:01 
 Re: Миф о ненадежности пускания рута по ssh   Mykola Dzham   03 Dec 2004 20:45:44 
 Re: Миф о ненадежности пускания рута по ssh   Victor Sudakov   04 Dec 2004 16:58:03 
 Re: Миф о ненадежности пускания рута по ssh   Vadim Guchenko   04 Dec 2004 17:48:37 
 Re: Миф о ненадежности пускания рута по ssh   Oleg Adianov   02 Dec 2004 17:28:23 
 Миф о ненадежности пускания рута по ssh   Sergey Zaikov   02 Dec 2004 19:33:34 
Архивное /ru.unix.bsd/9179d3e89e67.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional