Назад | Перейти на главную страницу

Как динамически ограничить доступ SSH для данного пользователя

Цель здесь - создать сценарий для простого управления резервированием для машины. Когда пользователь резервирует машину, она должна быть единственной, кто может получить доступ к машине в течение определенного времени (кроме, конечно, администраторов).

Я уже нашел решение с PAM. Эта единственная строка в /etc/pam.d/sshd решила бы мою проблему:

auth required pam_listfile.so item=user sense=allow file=/etc/ssh/sshd.allow onerr=fail

с логином пользователя в /etc/ssh/sshd.allow

Но совсем не работает:

$ cat /etc/ssh/sshd.allow 
foo

$ tail -f /var/log/auth.log
Dec  1 12:12:05 mini sshd[2697]: Accepted publickey for bar from 192.168.0.11 port 58087 ssh2
Dec  1 12:12:05 mini sshd[2697]: pam_unix(sshd:session): session opened for user bar by (uid=0)

Здесь /etc/pam.d/sshd файл

# PAM configuration for the Secure Shell service
auth       required     pam_env.so # [1]
auth       required     pam_env.so envfile=/etc/default/locale
auth required pam_listfile.so item=user sense=allow file=/etc/ssh/sshd.allow onerr=fail
@include common-auth
account    required     pam_nologin.so
@include common-account
@include common-session
session    optional     pam_motd.so # [1]
session    optional     pam_mail.so standard noenv # [1]
session    required     pam_limits.so
@include common-password

Я использую Debian Squeeze box, я не знаю, отличается ли от этого поведение PAM.

Идея, аналогичная описанной выше: не могли бы вы использовать AllowGroups в sshd.conf, чтобы разрешить определенную группу (+ группу для администраторов), а затем добавлять и удалять пользователей из группы с помощью вашей системы аутентификации, не позволяя вам вообще редактировать файлы, или по крайней мере, редактируйте файлы только с хорошо установленными интерфейсами (/ etc / group через usermod и т.д.).

Вы можете очень легко использовать для этого pam_access:

# /etc/pam.d/system-auth
account     required      pam_access.so

Затем контролируйте, у кого есть доступ, следующим образом:

# /etc/security/access.conf
+ : root otheruser : ALL
- : ALL : ALL

Почему вы не использовали в / etc / ssh / sshd_config в разделе AllowUsers user1 user2 user3