AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / server / Perguntas / 783798
Accepted
Itai Ganot
Itai Ganot
Asked: 2016-06-15 00:28:08 +0800 CST2016-06-15 00:28:08 +0800 CST 2016-06-15 00:28:08 +0800 CST

Como configurar pam sshd para permitir regras diferentes em diferentes usuários/grupos?

  • 772

Estou configurando a autenticação de dois fatores do Google em um servidor de saída na empresa em que trabalho.

Aqui estão as configurações relevantes: /etc/ssh/sshd_config:

ubuntu@stage-itai-1:~$ egrep -v '^#' /etc/ssh/sshd_config  | sed '/^\s*$/d'
Port 22
Protocol 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key
UsePrivilegeSeparation yes
KeyRegenerationInterval 3600
ServerKeyBits 1024
SyslogFacility AUTH
LogLevel INFO
LoginGraceTime 120
PermitRootLogin without-password
StrictModes yes
RSAAuthentication yes
PubkeyAuthentication yes
IgnoreRhosts yes
RhostsRSAAuthentication no
HostbasedAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication yes
PasswordAuthentication no
X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
AcceptEnv LANG LC_*
Subsystem sftp /usr/lib/openssh/sftp-server
UsePAM yes
Match Group gauth
    AuthenticationMethods publickey,keyboard-interactive

/etc/pam.d/sshd:

ubuntu@stage-itai-1:~$ egrep -v '^#' /etc/pam.d/sshd  | sed '/^\s*$/d'
auth required pam_google_authenticator.so nullok
account    required     pam_nologin.so
@include common-account
session [success=ok ignore=ignore module_unknown=ignore default=bad]        pam_selinux.so close
session    required     pam_loginuid.so
session    optional     pam_keyinit.so force revoke
@include common-session
session    optional     pam_motd.so  motd=/run/motd.dynamic noupdate
session    optional     pam_motd.so # [1]
session    optional     pam_mail.so standard noenv # [1]
session    required     pam_limits.so
session    required     pam_env.so # [1]
session    required     pam_env.so user_readenv=1 envfile=/etc/default/locale
session [success=ok ignore=ignore module_unknown=ignore default=bad]        pam_selinux.so open
@include common-password

Os usuários que são membros do grupo "gauth" devem ser forçados a fornecer a chave pública e o código de verificação do Google, que é intencional e está funcionando.

Os usuários que não são membros do grupo "gauth" devem ser forçados a fornecer a chave pública, mas na realidade eles são capazes de se conectar à máquina sem fornecer uma chave pública nem uma senha.

Há um usuário especial na máquina que é chamado de "resgate" e este usuário deve ser obrigado a fornecer apenas uma senha e seu objetivo é nunca ficar bloqueado fora da máquina, mas na realidade o usuário é capaz de se conectar sem um senha em tudo.

Minha pergunta é: como faço para impor minhas "supostas" regras, o que significa que:

  • os usuários do grupo "gauth" devem fornecer a chave pública e o Google OTP
  • os usuários que não são membros do grupo "gauth" devem poder efetuar login apenas fornecendo uma chave pública.
  • o usuário "resgate" deve ser capaz de efetuar login apenas fornecendo uma senha (ou também fornecendo uma chave pública).

Como pode ser feito?

Edição nº 1:

Seguindo a resposta do FaCe, configurei /etc/ssh/sshd_configassim:

Alterei PasswordAuthentication de volta para "Yes" e "ChallengeResponseAuthentication" de volta para "No" para todo o arquivo e, em seguida, adicionei na parte inferior do arquivo as seguintes linhas:

Match Group guath
    PasswordAuthentication no
    ChallengeResponseAuthentication yes
    AuthenticationMethods publickey,keyboard-interactive
Match User rescue
    PasswordAuthentication yes
    ChallengeResponseAuthentication no
    AuthenticationMethods password

Depois de redefinir o serviço ssh, não consigo fazer login, independentemente do usuário que estou usando, recebo o seguinte erro:

ssh_exchange_identification: Connection closed by remote host

E nada é exibido em /var/log/auth.log.

Alguém pode por favor lançar alguma luz sobre o assunto?

authentication ssh pam google-authenticator
  • 2 2 respostas
  • 5907 Views

2 respostas

  • Voted
  1. Best Answer
    FaCE
    2016-06-15T00:57:41+08:002016-06-15T00:57:41+08:00

    Você precisa usar várias diretivas Match Group:

    Match Group foo
        # blah settings
    Match Group bar
        # blah settings
        ...
    Standard settings
    
    • 2
  2. A.P.
    2016-12-05T02:42:50+08:002016-12-05T02:42:50+08:00
    Match Group guath
        PasswordAuthentication no
        ChallengeResponseAuthentication yes
        AuthenticationMethods publickey,keyboard-interactive
    

    Não tenho certeza sobre sua versão do Ubuntu, mas no Debian Jessie a palavra- ChallengeResponseAuthenticationchave não pode fazer parte de um Matchbloco. De acordo com man sshd_config:

    Only a subset of keywords may be used on the lines following a Match keyword. 
    
    Available keywords are:
                 AcceptEnv, AllowAgentForwarding, AllowGroups, AllowTcpForwarding, AllowUsers, AuthenticationMethods,
                 AuthorizedKeysCommand, AuthorizedKeysCommandUser, AuthorizedKeysFile, AuthorizedPrincipalsFile, Banner,
                 ChrootDirectory, DenyGroups, DenyUsers, ForceCommand, GatewayPorts, GSSAPIAuthentication,
                 HostbasedAuthentication, HostbasedUsesNameFromPacketOnly, KbdInteractiveAuthentication,
                 KerberosAuthentication, MaxAuthTries, MaxSessions, PasswordAuthentication, PermitEmptyPasswords,
                 PermitOpen, PermitRootLogin, PermitTTY, PermitTunnel, PermitUserRC, PubkeyAuthentication, RekeyLimit,
                 RhostsRSAAuthentication, RSAAuthentication, X11DisplayOffset, X11Forwarding and X11UseLocalHost.
    
    • 1

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Você pode passar usuário/passar para autenticação básica HTTP em parâmetros de URL?

    • 5 respostas
  • Marko Smith

    Ping uma porta específica

    • 18 respostas
  • Marko Smith

    Verifique se a porta está aberta ou fechada em um servidor Linux?

    • 7 respostas
  • Marko Smith

    Como automatizar o login SSH com senha?

    • 10 respostas
  • Marko Smith

    Como posso dizer ao Git para Windows onde encontrar minha chave RSA privada?

    • 30 respostas
  • Marko Smith

    Qual é o nome de usuário/senha de superusuário padrão para postgres após uma nova instalação?

    • 5 respostas
  • Marko Smith

    Qual porta o SFTP usa?

    • 6 respostas
  • Marko Smith

    Linha de comando para listar usuários em um grupo do Windows Active Directory?

    • 9 respostas
  • Marko Smith

    O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL?

    • 3 respostas
  • Marko Smith

    Como determinar se uma variável bash está vazia?

    • 15 respostas
  • Martin Hope
    Davie Ping uma porta específica 2009-10-09 01:57:50 +0800 CST
  • Martin Hope
    kernel O scp pode copiar diretórios recursivamente? 2011-04-29 20:24:45 +0800 CST
  • Martin Hope
    Robert ssh retorna "Proprietário incorreto ou permissões em ~/.ssh/config" 2011-03-30 10:15:48 +0800 CST
  • Martin Hope
    Eonil Como automatizar o login SSH com senha? 2011-03-02 03:07:12 +0800 CST
  • Martin Hope
    gunwin Como lidar com um servidor comprometido? 2011-01-03 13:31:27 +0800 CST
  • Martin Hope
    Tom Feiner Como posso classificar a saída du -h por tamanho 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent Como determinar se uma variável bash está vazia? 2009-05-13 09:54:48 +0800 CST

Hot tag

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve