Ограничения ssh для аутентификации пользователя

RHEL 6.8, у меня есть пользователь, аутентифицированный локально, и я не совсем уверен, что у этого пользователя уже установлены логины на основе ключей с другого узла для подключения к рассматриваемому узлу.

Я подумываю восстановить ключи ssh для пользователя, чтобы предотвратить его вход в систему с использованием ранее настроенных ключей.

У меня есть "root" доступ к узлу. Какой' s лучший способ ограничить вход на основе ключа, который был бы установлен, но сохранить ту же учетную запись для других служб, для которых мы в настоящее время используем учетную запись.

3
задан 30 November 2017 в 02:37
3 ответа

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

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

Если вы хотите предотвратить вход пользователя в систему с использованием определенного ключа, вы можете просто удалить его из их файл authorized_keys . Но имейте в виду, что пользователь всегда может вернуть его обратно, если он может войти в этот узел или иным образом получить доступ к этому файлу. Вы также можете изменить путь к файлу авторизованных ключей, установив AuthorizedKeysFile в / etc / ssh / sshd_config в файл, к которому пользователь не может получить доступ.Но имейте в виду, что это будет применяться ко всем пользователям.

Что касается определения того, как пользователь аутентифицировался, эта информация находится в вашем файле журнала / var / log / secure . Например:

# grep Accepted /var/log/secure
Nov 26 03:13:46 www sshd[13925]: Accepted password for user1 from 203.0.113.242 port 3481 ssh2
Nov 26 03:20:22 www sshd[14216]: Accepted publickey for dev2 from 198.51.100.21 port 64386 ssh2: RSA SHA256:...omitted...
2
ответ дан 3 December 2019 в 06:27

Если вы хотите контролировать, какие ключи используются для входа в систему, вы должны контролировать файл со списком авторизованных ключей, поэтому вы не должны позволять пользователям управлять им. Вместо того, чтобы копаться в файлах в пользовательских каталогах, вы должны использовать соответствующие элементы конфигурации ssh, которые будут работать, например:

  • AuthorizedKeysCommand : программа, действующая как фильтр для ключей, которые будут использоваться
  • AuthorizedKeysFile : файл, в котором разрешено использование ключей, вы можете указать абсолютный путь вне управляемых пользователем каталогов

Кроме того, не понимая 100% вашего варианта использования, но вы можете взглянуть на сертификаты вместо ключей, потому что с сертификаты вы можете указать срок действия и убедиться, что срок действия некоторых учетных данных истечет. См. Параметр -V в ssh-keygen .

1
ответ дан 3 December 2019 в 06:27

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

Шаги

  1. Удалите все ключи, которые вы не хотите, чтобы пользователь был пользователем, из файла пользователя ~ / .ssh / authorized_keys .
  2. Добавьте новый открытый ключ, который вы сгенерировали в файл
  3. chmod the authorized_keys file to 400 (читается только владелец)
  4. chattr + i файл authorized_keys (сделайте его неизменяемым, чтобы пользователь не может изменить привилегии обратно, чтобы отредактировать его)
  5. chattr + i каталог .ssh

например, предположим, что имя пользователя - «hogan» и вошел в систему как root:

#cd ~hogan/.ssh
#vim authorized_keys
[ do your edits and save ] 
#chmod 400 authorized_keys
#chattr +i authorized_keys
#cd ..
#chattr +i .ssh
0
ответ дан 3 December 2019 в 06:27

Теги

Похожие вопросы