Я работаю на CentOS 7.3.
Как я могу предотвратить потерю Kerberos TGT в сценарии ниже?
Я понимаю, что для безопасности не нужно уничтожать билеты Kerberos при выходе из системы, и я буду углубляться в это. Но я хочу начать с самого простого примера, который я привожу ниже.
user@host.example.com$ klist
klist: Credentials cache keyring 'persistent:25536700022:krb_ccache_h3j7qk7' not found
user@host.example.com$ kinit
Password for user@example.com:
user@host.example.com$ klist
Ticket cache: KEYRING:persistent:25536700022:krb_ccache_h3j7qk7
Default principal: user@example.com
Valid starting Expires Service principal
08/03/2018 17:06:45 08/04/2018 17:06:41 krbtgt/example.com@example.com
user@host.example.com$ ssh -K host
Last login: Fri Aug 3 17:06:21 2018 from 10.250.57.186
user@host.example.com$ klist
Ticket cache: KEYRING:persistent:25536700022:krb_ccache_h3j7qk7
Default principal: user@example.com
Valid starting Expires Service principal
08/03/2018 17:06:54 08/04/2018 17:06:41 krbtgt/example.com@example.com
user@host.example.com$ exit
logout
Connection to host closed.
user@host.example.com$ klist
klist: Credentials cache keyring 'persistent:25536700022:krb_ccache_h3j7qk7' not found
user@host.example.com$
ОБНОВЛЕНИЕ № 1
Обновление конфигурации сервера SSH следующим образом решает проблему в представленном виде:
GSSAPICleanupCredentials no
Однако делать это безоговорочно нежелательно, поскольку это имеет негативные последствия для безопасности. Оставлять на машине не просроченные билеты после того, как вы поработали над ней, опасно.
Подробнее о нашем случае использования
Мы используем SSH для выполнения команд на удаленных хостах. Команды, выполняемые на удаленных хостах, могут, в свою очередь, использовать SSH для выполнения удаленных команд на других хостах. Все это по сценарию / автоматизировано, поэтому мы не можем разрешить запрос пароля. Вот почему я использовал ssh -K. Флаг -K перенаправляет ваш Kerberos TGT на хост, к которому вы подключаетесь по SSH, что позволяет вам подключаться к SSH к другому хосту оттуда без запроса пароля.
В нашем конкретном случае использования иногда случается, что один из "удаленных" хостов, на которых мы используем SSH для выполнения команды, - это хост, на котором мы уже работаем. Без изменения конфигурации, показанного выше, после завершения выполнения команды "remote" и завершения сеанса SSH билет Kerberos уничтожается - на машине, на которой мы сейчас работаем ! Затем мы утратили способность SSH без пароля для всех хостов.
В поисках безопасного решения для нашего варианта использования
Таким образом, чтобы избежать последствий безопасности , безусловно , не разрушив билеты Kerberos , на выходе из системы, я хотел бы копнуть глубже.
Есть ли способ сделать одно из следующих?
- Переадресация вашего Kerberos TGT, только если он еще не находится на компьютере, к которому вы используете SSH
- Уничтожайте ваши билеты Kerberos только при выходе из вашего последнего сеанса оболочки
Есть ли другие возможности, которые я не рассматриваю?