Перш за все, RedHat (та його варіанти) мають підтримуваний патч для OpenSSH, який додає AuthorizedKeysCommand
та AuthorizedKeysCommandRunAs
параметри. Виправлення було об'єднано вище за течією в openssh 6.2. Для цитування зі сторінки man :
AuthorizedKeysCommand
Визначає програму, яка використовуватиметься для пошуку відкритих ключів користувача. Програма буде викликати своїм першим аргументом ім'я авторизованого користувача та повинно створювати на стандартних вихідних рядках AuthorizedKeys (див. AUTHORIZED_KEYS у sshd (8)). За замовчуванням (або якщо встановлено порожній рядок) не існує запуску AuthorizedKeysCommand. Якщо AuthorizedKeysCommand не успішно авторизує користувача, авторизація потрапляє до AuthorizedKeysFile. Зауважте, що ця опція діє лише з увімкненою PubkeyAuthentication.
AuthorizedKeysCommandRunAs
Вказує користувача, під чиїм обліковим записом запускається AuthorizedKeysCommand. Порожній рядок (значення за замовчуванням) означає, що використовується користувач, який авторизується.
У своїх експериментах сьогодні ввечері я виявив, що поза межами цієї програми це не працює через політику SELinux за замовчуванням. Ви можете подолати це, вимкнувши примусове виконання SELinux за допомогою setenforce 0
. Оскільки повернення SELinux - це, мабуть, погана ідея, натомість ви можете створити правильну політику. У моєму випадку це було так само просто, як спроба ввійти в систему за допомогою AuthorizedKeysCommand
налаштування, /etc/ssh/sshd_config
а потім використовувати audit2allow -a -M local && semodule -i local.pp
. Це, в основному, переглядає журнали аудиту та знаходить речі, які їх запобігли, і створює для них винятки. Якщо у вас, ймовірно, є інші речі, які можуть потрапити до списку, ви, мабуть, дізнаєтесь більше про те, audit2allow
щоб переконатися, що ви отримаєте нові правила правильно.