Как использовать 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вводит их пароль в строке пароля ssh.


Вопрос

  • Имеет ли AllowUsersпереопределение AllowGroups?
  • Какой лучший способ исправить это, не добавляя имя пользователя вручную AllowUsers? В идеале я бы хотел, чтобы в будущем можно было просто добавлять пользователей в ssh-usersгруппу, не трогая sshd_configснова.
Johannes
источник
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? Просто поместите всех в группу / группы.
Зоредаче

Ответы:

24

Да, AllowUsersимеет прецедент AllowGroups. Если указано, только пользователи, которые соответствуют шаблону, указанному в, AllowUsersмогут подключаться к экземпляру SSHD.

Согласно sshd_config manpage :

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

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

Джефф-Инвентор ChromeOS
источник
Так бы просто иметь AllowGroups user1 user2 ssh-usersработу? Я бы предпочел ваше подтверждение перед его проверкой, так как у меня было это раньше, когда я случайно удалил свои собственные привилегии ssh и должен был пройти поддержку, чтобы исправить это. Как насчет Matchблока? Я прошу совета там, так как, хотя я посмотрел на страницу руководства, у меня нет интуиции / опыта, чтобы знать, как это будет работать на практике. Например, с порядком обработки, который я вычислил, поскольку AllowGroups идет после AllowUsers, он будет переопределять его при обработке, но моя интуиция там была неправильной :)
Йоханнес
2
Если все 3 из них являются группами в вашей системе, это должно работать. Если user1 и user2 - просто пользователи, вы можете добавить их в ssh-users и обойтись с AllowGroups ssh-users.
Джефф-Изобретатель ChromeOS
@ Йоханнес, когда вы тестируете такую ​​вещь, убедитесь, что у вас на машине открыта оболочка. Перезапуск sshd не нарушит вашу сессию, и если вы не можете открыть новую, вы можете исправить ваш беспорядок с существующим.
Жан-Бернар Янсен,
6

Ответ Джефф охватывает специфику вопроса , как подробно, но я нашел этот вопрос , глядя на использование AllowUsersи AllowGroupsв несколько ином сценарии. Я хотел ограничить входящие соединения для пользователей в группе (SSH) из определенных подсетей.

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

Дополнительно по AllowUsersразделу sshd_config:

Если шаблон принимает форму USER @ HOST, тогда USER и HOST проверяются отдельно, ограничивая вход в систему определенным пользователям с определенных хостов. Критерии HOST могут дополнительно содержать адреса для сопоставления в формате CIDR address / masklen.

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

Итак, чтобы принять пользователей 1) в группу ssh и 2) из ​​определенных подсетей / хостов:

AllowUsers *@192.168.1.0/24 *@*.example.com *@1.2.3.4
AllowGroups ssh
bjacobowski
источник
AllowGroups doesn't accept the USER@HOST form. Не уверен, что вы подразумеваете под этим, и, конечно, это не то, что говорится в файле конфигурации или документации. Разрешить группам определенно позволяет войти в систему, используя ssh username@example.com.
AndrewD
1
@AndrewD AllowGroups принимает только имена групп - например, вы не можете это сделать AllowGroups ssh@example.com. ХОСТ - это источник, откуда ты.
Бьякобовски
3

Вот решение, которое мы нашли работающим:

AllowUsers user1 user2
Match group ssh-users
    AllowUsers *
vimja
источник