Як використовувати AllowGroups та AllowUsers в sshd_config?


28

Я намагаюся змінити /etc/ssh/sshd_configна своєму виділеному сервері debian7 з обома AllowUsersі AllowGroups. Однак я не можу змусити обох працювати разом.


Налаштування

  • Там зателефонував користувач testuser.
  • Цей користувач входить до групи, яка називається ssh-users:

    $ groups testuser
    testuser : testuser ssh-users
    
  • testuserнамагається підключитися через ssh testuser@<server_ip>і ввести їх пароль.

  • Моє sshd_configможна знайти тут: http://pastebin.com/iZvVDFKL - я думаю, що в основному єдиними змінами, які я внесла за замовчуванням, було:
    • встановлювати PermitRootLogin no
    • і додати двох користувачів AllowUsers(фактичні імена користувачів відрізняються на моєму сервері)
  • service ssh restartзапускається щоразу після зміни sshd_config.

Проблема

  • testuser можна встановити з'єднання, якщо встановленоAllowUsers:

    AllowUsers user1 user2 testuser
    
  • testuserможе НЕ підключатися при установці AllowGroupsсвоєї групи:

    AllowUsers user1 user2
    AllowGroups ssh-users
    

    який призводить , Permission denied, please try again.коли testuserвводить свій пароль в паролю рядку.


Питання

  • Чи AllowUsersперекриває AllowGroups?
  • Який найкращий спосіб виправити це, не додаючи ім’я користувача вручну AllowUsers? В ідеалі я хотів би мати можливість просто додавати користувачів до ssh-usersгрупи, не торкаючись sshd_configзнову.

5
Ideally I'd like to be able to just add users to the ssh-users group in the future without having to touch sshd_config again.- То чому ви взагалі використовуєте AllowUsers? Просто розмістіть усіх у групі / групах.
Zoredache

Відповіді:


24

Так, AllowUsersмає перевагу над AllowGroups. Якщо вказано, до користувачів AllowUsersекземпляра SSHD можуть підключатися лише користувачі, які відповідають шаблону, зазначеному в .

За даними sshd_config manpage :

Дозволити / заборонити директиви обробляються в наступному порядку: DenyUsers, AllowUsers, DenyGroups, і , нарешті AllowGroups.

Отже, рішення вашої проблеми, ймовірно, полягає в тому, щоб використовувати ту чи іншу, можливо, директиви групового доступу, якщо групи є вашим кращим способом управління користувачами.


Так би просто AllowGroups user1 user2 ssh-usersпрацювати? Я вважаю за краще ваше підтвердження, перш ніж тестувати його, оскільки я мав це статися раніше, коли я випадково видалив власні привілеї ssh і довелося пройти підтримку, щоб виправити це. Як щодо Matchблоку? Я прошу поради там, оскільки хоча я переглянув сторінку чоловіка, я не маю інтуїції / досвіду, щоб знати, як це буде працювати на практиці. Наприклад, з порядком обробки я подумав, оскільки AllowGroups з'являється після AllowUsers, він би переосмислив його під час обробки, але моя інтуїція там помилялася :)
Йоганнес,

2
Якщо всі 3 з них є групами у вашій системі, це має працювати. Якщо user1 та user2 - це лише користувачі, ви можете додати їх до ssh-користувачів та отримати доступ до AllowGroups ssh-користувачів.
Jeff-Inventor Chrome Chrome

@Johannes, коли ви тестуєте таку річ, juste переконайтеся, що на машині відкрита оболонка. Перезапуск sshd звичайно не порушить ваш сеанс, і якщо ви не можете відкрити новий, ви можете виправити безлад з існуючим.
Жан-Бернард Янсен

6

Відповідь Джеффа настільки детально висвітлює специфіку питання, але я вважав, що це питання є корисним AllowUsersі AllowGroupsдещо іншим сценарієм. Я хотів обмежити вхідні з'єднання користувачами групи (ssh), що надходять із певних підмереж.

Правила підключення в sshd_config є фільтром - оскільки застосовується кожне додаткове правило, набір прийнятних користувачів може бути зменшений лише. PATTERNSу ssh_config (5) поясніть форму цих правил.

Додатково, відповідно до AllowUsersрозділу sshd_config:

Якщо шаблон має форму USER @ HOST, тоді USER і HOST перевіряються окремо, обмежуючи вхід для конкретних користувачів від конкретних хостів. Критерії HOST можуть додатково містити адреси для відповідності у форматі CIDR адреси / маскуванні.

AllowGroups не приймає форму USER @ HOST.

Отже, щоб прийняти користувачів 1) у групі ssh та 2) із конкретних підмереж / хостів:

AllowUsers *@192.168.1.0/24 *@*.example.com *@1.2.3.4
AllowGroups ssh

AllowGroups doesn't accept the USER@HOST form. Не впевнений, що ви маєте на увазі під цим, і, звичайно, не те, що кажуть конфігураційний файл або документи. Дозволити Групи, безумовно, дозволяє вам увійти, використовуючи ssh username@example.com.
AndrewD

1
@AndrewD AllowGroups приймає лише імена груп - наприклад, ви не можете цього зробити AllowGroups ssh@example.com. HOST - це джерело, звідки ти поширюєшся.
bjacobowski

3

Ось таке рішення, яке ми знайшли:

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