Linux + Autenticação de diretório ativo + permitindo apenas o acesso a determinados grupos


14

Eu tenho algumas caixas Linux que usam autenticação do Windows Active Directory, que funciona muito bem (Samba + Winbind).

O que eu gostaria de fazer agora é permitir apenas que certas pessoas ou grupos façam login usando credenciais do Active Directory. Atualmente, qualquer pessoa com uma conta válida do AD pode fazer login. Eu quero limitar isso a apenas alguns grupos. Isso é factível?

Respostas:


6

Supondo que os grupos estejam disponíveis para o sistema Linux, recomendo a edição /etc/security/access.confpara Ubuntu, distribuições RedHat (e seus garfos) e provavelmente um monte de outras. Isso não requer a edição de arquivos PAM e é um local bastante padrão para isso. Geralmente existem exemplos no arquivo comentados.


Obrigado, foi isso que acabei usando para fazer o que queria, todas as respostas acima foram ótimas, mas essa foi a que funcionou melhor para mim. Eu uso o arquivo Samba para bloquear o Samba e agora estou usando esse arquivo access.conf para bloquear logins SSH.
Luma

4

(Estou falando do samba 3 aqui, agora não há experiência no samba 4.)

Não há necessidade de editar esses arquivos /etc/pam.d/xxx. pam_winbind.conf é o arquivo que você deseja, geralmente está localizado em /etc/security/pam_winbind.conf .

É o arquivo de configuração do módulo pam_winbind e funciona para o CentOS / Redhat e o Debian / Ubuntu. Você pode ler a página de manual do pam_winbind.conf para referência.

Aqui está um arquivo de exemplo.

#
# pam_winbind configuration file
#
# /etc/security/pam_winbind.conf
#

[global]

# turn on debugging
;debug = no

# turn on extended PAM state debugging
;debug_state = no

# request a cached login if possible
# (needs "winbind offline logon = yes" in smb.conf)
cached_login = yes

# authenticate using kerberos
;krb5_auth = no

# when using kerberos, request a "FILE" krb5 credential cache type
# (leave empty to just do krb5 authentication but not have a ticket
# afterwards)
;krb5_ccache_type =

# make successful authentication dependend on membership of one SID
# (can also take a name)
# require_membership_of = SID,SID,SID
require_membership_of = S-1-5-21-4255311587-2195296704-2687208041-1794

# password expiry warning period in days
;warn_pwd_expire = 14

# omit pam conversations
;silent = no

# create homedirectory on the fly
mkhomedir = yes

3

Atualmente, uso a AllowGroupsdiretiva /etc/ssh/sshd_configpara limitar quem pode fazer login. Especifique um ou mais grupos de anúncios nessa linha, e essas pessoas serão as únicas capazes de fazer login.

Tenha em mente que isso só funciona se os usuários são única acessar o servidor remotamente via ssh. Se eles estão cantando localmente, precisará encontrar outra solução.


3

Sim, existem algumas maneiras de fazer isso, dependendo do que você está tentando realizar exatamente.

O primeiro método pode ser feito através da configuração do samba. Isso permitirá apenas que esses usuários se conectem ao Samba; outros usuários ainda poderão fazer login através de outros serviços (ssh, termo local, etc.). Com isso, você desejará adicionar uma linha à sua seção [global] no smb.conf:

valid users = @groupA @groupB

O outro método é modificando as regras do PAM. Distribuições diferentes têm pequenas diferenças aqui, mas de um modo geral existem regras de PAM por serviço e regras comuns, você pode decidir o que é melhor. Você deseja adicionar uma restrição de conta usando o módulo pam_require. Um exemplo no meu laptop (Fedora 13) seria modificar a seção da conta em /etc/pam.d/system-auth para:

account     required      pam_unix.so
account     required      pam_require.so @groupA @groupB
account     sufficient    pam_localuser.so
account     sufficient    pam_succeed_if.so uid < 500 quiet
account     required      pam_permit.so

Para simplificar a administração, convém criar um novo grupo no AD com o objetivo de rastrear usuários que podem fazer login neste servidor.


1

Eu lutei para conseguir que qualquer um dos itens acima funcione para mim no RHEL 7. Abaixo está o que eu consegui trabalhar.

/etc/sssd/sssd.conf

Mude access_provider = ad para access_provider = simple +simple_allow_groups = @group1-admins@xxx.xxx.com, @group2@xxx.xxx.com

visudo

  • %group1-admins@xxx.xxx.com ALL=(ALL) ALL

reinicie o serviço sssd.


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.