Дозволити root входити через ssh лише за допомогою аутентифікації на основі ключа


49

У мене є сумніви щодо певних конфігурацій сервера ssh /etc/ssh/sshd_config. Я хочу наступної поведінки:

  1. Аутентифікація відкритого ключа - це єдиний спосіб аутентифікації як root (немає автентифікації пароля чи іншого)
  2. Звичайні користувачі можуть використовувати обоє (автентифікація пароля та відкритого ключа)

Якщо я поставлю PasswordAuthentication noсвою першу точку, я задоволений, але не другий. Є спосіб встановити PasswordAuthentication noлише корінь?

Відповіді:


78

Це можна зробити за допомогою PermitRootLoginдирективи. На сторінці сторінки sshd_config:

Визначає, чи може root входити в систему за допомогою ssh (1). Аргумент повинен бути "так", "без пароля", "лише примусові команди" або "ні". За замовчуванням - «так».

Якщо для цієї опції встановлено значення "без пароля", автентифікація пароля вимкнена для root.

Наступне здійснить те, що ви хочете:

PasswordAuthentication yes
PermitRootLogin without-password

1
Я спробував це на Debian і перевірив service ssh restartна сервері, а потім на клієнті, я спробував підключитися без мого ключа ssh -o PreferredAuthentications=password -o PubkeyAuthentication=no root@hostі, дійсно, не міг увійти з паролем, але міг із ключем для кореневого користувача.
бастіан

Так, але якщо ви просто зробите це замість цього, ви можете увійти з паролем: ssh -o PreferredAuthentications=password root@hostне особливо захищений imho
geoidesic

2
У 2019 році це "PermitRootLogin prohibit-password", старий без пароля - застарілий псевдонім.
vbraun

10

Ви можете використовувати Matchблоки для налаштування деяких параметрів для користувача або групи, що підтверджують автентичність, або для IP-адреси або імені хоста походження з'єднання.

PasswordAuthentication yes
PermitRootLogin yes

Match User root
PasswordAuthentication no

3
Мені вдалося заблокувати мене з мого ssh-сервера, роблячи це.
Річард Метцлер

Це здається найкращим методом, якщо ви ніколи не хочете, щоб в корі з'являлось запит пароля.
Лев

Це також мене заблокувало. Я думаю, що це може бути в неправильному порядку ...
Гері

3

У мене є ще більш обмежуючий підхід до надання привілеїв root на моєму сервері, що може бути цікаво для параноїків, як я. Будьте уважні, що ви робите, і в якому порядку, інакше у вас може виникнути система, до якої ви не можете отримати кореневий доступ.

  • Створіть конкретну групу sugroup, кому учасникам буде дозволено отримувати root та дозволяти лише автентифікацію ключів для цієї групи, поставивши наступні рядки в кінці sshd_confid:

Match Group sugroup

PasswordAuthentication no

  • Помістіть команду auth required pam_wheel.so group=sugroupв /etc/pam.d/su. Це може бути вже там, і вам просто доведеться його розв’язати. Це забороняє кореневий доступ для всіх користувачів, які не є членами групи
  • Виберіть надійний кореневий пароль :)
  • Перевірте, чи працює ваш новий метод аутентифікації, і лише якщо:
  • Заборонити пряме вхід у корінь через ssh, використовуючи PermitRootLogin noв /etc/ssh/sshd_config.

Використовуючи цю конфігурацію, необхідно використовувати автентифікацію ключа та пароль, щоб стати root. Я налаштував свій сервер так, оскільки я вважаю за краще не мати прямого доступу до root через ssh, незалежно від способу аутентифікації.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.