🐧 Как определить использует ли пользователь SSH-аутентификацию на основе пароля или ключа

Мануал
Представьте себе такой сценарий.
Вы только что настроили аутентификацию на основе ключей SSH на вашем сервере Linux.
Затем вы решили полностью отключить аутентификацию на основе паролей и разрешить всем пользователям только аутентификацию на основе ключей.
Перед отключением аутентификации по паролю вы хотите проверить, какие пользователи все еще используют пароли для доступа к серверу через SSH
Как это сделать?
В этом кратком руководстве объясняется, как определить, использует ли пользователь SSH-аутентификацию на основе пароля или же ключа на Linux.
Мы можем определить, как вошел пользователь на сервер Linux через SSH, а именно используя пароль или ключ ssh.

Это не 100% надежный и гарантированный способ.

Во-первых, проверьте, существует ли файл ~/.ssh/authorized_keys.

Потому что в методе аутентификации на основе ключей SSH открытый ключ SSH должен быть загружен в системы, к которым вы хотите получить доступ через SSH.
Открытые ключи обычно хранятся в файле под именем ~/.ssh/authorized_keys в удаленных системах.

Если этот файл существует, есть вероятность, что пользователь, вероятно, использует аутентификацию на основе ключей.

Затем проверьте файлы журнала аутентификации, чтобы проверить, какой метод аутентификации пользователь использует для доступа к удаленной системе.

Метод auth регистрируется в файле «/var/log/secure» в системах на основе RPM (например, CentOS), в файле «/var/log/auth.log» в системах на основе DEB (например, Ubuntu).

Просто найдите запись password в файлах журнала аутентификации, используя команду grep или любым другим способом, который вы предпочитаете.

$ grep 'password' /var/log/secure
или
$ grep 'password' /var/log/auth.log
[...]
May  8 10:40:36 itsecforu sshd[3303]: Accepted password for senthil from 192.168.225.37 port 41990 ssh2
May  8 10:40:56 itsecforu sshd[3405]: Accepted password for sk from 192.168.225.37 port 41992 ssh2

Вы заметили строки «Accepted password for …» в приведенном выше выводе?

Это означает, что пользователь обращается к удаленным системам с помощью пароля.

Согласно вышеприведенному выводу, пользователи «senthil» и «sk» получают доступ к удаленной системе с использованием аутентификации по паролю ssh.

Если пользователь использует аутентификацию на основе ключей, вы, вероятно, увидите вывод, как показано ниже:

May 8 10:40:56 itsecforu sshd[3405]: Accepted publickey for sk from 192.168.225.37 port 41992 ssh2

Конечно, это немного сложно, если файл журнала очень громосткий с большим количеством записей.

В этом случае используйте команду «tail» для просмотра определенного количества файлов журнала.

Например, следующая команда будет отображать только последние 10 записей файла журнала:

$ grep 'password' /var/log/auth.log | tail -n 10

Пример вывода:

May  8 10:21:49 itsecforu sshd[2135]: Accepted password for senthil from 192.168.225.37 port 41920 ssh2
May  8 10:21:57 itsecforu sshd[2222]: Accepted password for sk from 192.168.225.37 port 41922 ssh2
May  8 10:24:57 itsecforu sshd[2360]: Accepted password for senthil from 192.168.225.37 port 41924 ssh2
May  8 10:25:04 itsecforu sshd[2448]: Accepted password for sk from 192.168.225.37 port 41926 ssh2
May  8 10:29:40 itsecforu sshd[2663]: Accepted password for senthil from 192.168.225.37 port 41938 ssh2
May  8 10:29:55 itsecforu sshd[2765]: Accepted password for sk from 192.168.225.37 port 41940 ssh2
May  8 10:39:34 itsecforu sshd[3064]: Accepted password for senthil from 192.168.225.37 port 41986 ssh2
May  8 10:39:55 itsecforu sshd[3184]: Accepted password for sk from 192.168.225.37 port 41988 ssh2
May  8 10:40:36 itsecforu sshd[3303]: Accepted password for senthil from 192.168.225.37 port 41990 ssh2
May  8 10:40:56 itsecforu sshd[3405]: Accepted password for sk from 192.168.225.37 port 41992 ssh2

Вы также можете использовать флаг -f, чтобы следить за журналом во время тестирования.

$ grep 'password' /var/log/auth.log | tail -f -n 10
Если вы хотите проверять весь файл журнала на предмет поиска записей «password» постранично, используйте команду «less»:
$ grep 'password' /var/log/auth.log | less
Чтобы найти все журналы, относящиеся к sshd (успешные или неудачные попытки), замените «password» на «sshd» во всех приведенных выше командах.
$ grep 'sshd' /var/log/auth.log | tail -n 10

 

Добавить комментарий