Como restringir dinamicamente o acesso SSH a um determinado usuário

1

O objetivo aqui é criar um script para gerenciar facilmente a reserva de uma máquina. Quando um usuário reserva a máquina, ela deve ser a única capaz de acessar a máquina por um determinado período (exceto os administradores, é claro).

Eu já encontrei uma solução com o PAM. Esta linha única em /etc/pam.d/sshd resolveria meu problema:

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

com o login do usuário em /etc/ssh/sshd.allow

Mas isso não funciona:

$ 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)

Aqui, o arquivo /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

Estou executando uma caixa do Debian Squeeze, não sei se o comportamento do PAM é diferente com isso.

    
por Jérôme 01.12.2010 / 12:32

3 respostas

1

Idéia semelhante a acima: Você poderia usar AllowGroups em sshd.conf para permitir um grupo específico (+ um grupo para administradores), depois adicionar e remover usuários do grupo usando seu sistema de autenticação, impedindo que você tenha que editar arquivos em todos, ou pelo menos apenas editar arquivos com interfaces bem estabelecidas (/ etc / group via usermod etc).

    
por 01.12.2010 / 16:16
0

Por que você não usou em / etc / ssh / sshd_config na seção AllowUsers user1 user2 user3

    
por 01.12.2010 / 13:32
0

Você pode facilmente usar o pam_access para isso:

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

Em seguida, controle quem tem acesso da seguinte forma:

# /etc/security/access.conf
+ : root otheruser : ALL
- : ALL : ALL
    
por 01.12.2010 / 15:51

Tags