В стандартной установке Linux с OpenSSH, каково ограничение по умолчанию для попыток входа в SSH с использованием аутентификации по паролю?
Сколько паролей может угадать злоумышленник в час?
В стандартной установке Linux с OpenSSH, каково ограничение по умолчанию для попыток входа в SSH с использованием аутентификации по паролю?
Сколько паролей может угадать злоумышленник в час?
На каждом соединении есть определенный предел запросов пароля. Это определяется параметром MaxAuthTries
(по умолчанию 6). Но вы не можете сделать все попытки одновременно. После каждого неудачного вы получите некоторое время (~ 3 секунды, чтобы пройти через стек PAM с задержкой).
Атакующий может выдавать соединения с частотой, ограниченной параметром MaxStartups
(по умолчанию 10:30:100, который начнет отклонять соединение, если открыто 10 неаутентифицированных соединений).
Параметр LoginGraceTime
не относится к злоумышленнику, поскольку он определяет только максимальное время до закрытия соединения сервером, если злоумышленнику не удается пройти проверку подлинности.
Ограничивающим фактором здесь является главным образом обмен ключами, который требует времени, потому что:
Мой быстрый тест показал, что установление соединения с Raspberry Pi в другой комнате занимает примерно 1 секунду. Но это может пойти быстрее, и SSHD может обрабатывать больше параллельных запросов. Запрос пароля от localhost почти мгновенный.
Допустим, злоумышленник может просто выполнить 10 параллельных подключений, ждать 1 секунду для запроса, записывает один пароль, ждать 3 секунды для второго запроса (или подтверждения того, что пароль действительно был верным) (... повторяется 6 раз, пока он не выйдет из строя) , Это занимает 1 + 3 * 6 секунд (19 секунд) для 6 попыток ввода пароля в одном потоке, 60 попыток ввода пароля в 10 потоках. В этом оптимистичном случае округление до 180 за минуту и 10 000 за час.
Обратите внимание, что злоумышленник может увеличить количество потоков до 20 или более с довольно низкой вероятностью отклонения, но получая в два раза больше попыток (или даже больше, но не может превышать 100). Вот почему существует fail2ban
.
man sshd_config:
MaxStartups Specifies the maximum number of concurrent unauthenticated con‐ nections to the SSH daemon. Additional connections will be dropped until authentication succeeds or the LoginGraceTime expires for a connection. The default is 10:30:100. Alternatively, random early drop can be enabled by specifying the three colon separated values “start:rate:full” (e.g. "10:30:60"). sshd(8) will refuse connection attempts with a probability of “rate/100” (30%) if there are currently “start” (10) unauthenti‐ cated connections. The probability increases linearly and all connection attempts are refused if the number of unauthenticated connections reaches “full” (60).