PAM 拒绝规则未在 Google Cloud 中的 Ubuntu 上应用

PAM 拒绝规则未在 Google Cloud 中的 Ubuntu 上应用

我补充道

auth requisite pam_deny.so

/etc/pam.d/作为 中每个文件(包括)的第一行sshd,但 SSH 连接仍然成功,没有问题。这是在默认的 Google Cloud Ubuntu 实例上,因此它设置了某种神秘的身份验证。我怎样才能使我的拒绝命令被应用?

基本检查

  • /etc/ssh/sshd_config有线UsePAM yes
  • /etc/ssh/sshd_config已禁用其他身份验证方法:

    HostbasedAuthentication no
    IgnoreUserKnownHosts yes
    IgnoreRhosts yes
    PasswordAuthentication no
    ChallengeResponseAuthentication no
    KerberosAuthentication no
    GSSAPIAuthentication no
    UseLogin no
    
  • /etc/nsswitch.conf没有自passwd定义条目:

    passwd:         compat 
    group:          compat 
    shadow:         compat 
    gshadow:        files 
    
    hosts:          files dns 
    networks:       files 
    
    protocols:      db files 
    services:       db files 
    ethers:         db files 
    rpc:            db files
    
  • 重启sshd服务

  • google停止名称中包含的所有服务
  • journalctl -f通过 SSH 登录时没有关于身份验证机制的提示
  • Google Cloud 项目的 OS Login 已停用,google_oslogin_control其状态显示为deactivated

我使用在 Google Cloud 项目元数据中配置的项目范围 SSH 密钥登录。实例用于cloud-init设置 SSH 密钥等,但我找不到任何关于可以配置哪些内容来覆盖 PAM 的身份验证机制的提示。

任何关于什么可以覆盖 PAM 的身份验证机制的提示都将不胜感激!

注意:这样做的目的是最终启用 PAM 模块进行双因素身份验证。

答案1

由于两个不同的原因,deny 命令会被忽略,这对应于两个绕过 PAM 身份验证的系统。

  1. 运行时它将被忽略sudo,因为用户配置了该标志。此标志在包含以下行的NOPASSWD文件中启用:/etc/sudoers.d

    %google-sudoers ALL=(ALL:ALL) NOPASSWD:ALL
    

    并且我的用户属于该google-sudoers组。由于手动的说:

    默认情况下,sudo 要求用户在运行命令之前进行身份验证。此行为可以通过 NOPASSWD 标记进行修改。

    因此使用可以sudo完全绕过身份验证(包括 PAM)。

  2. 使用公钥通过 SSH 登录时会忽略它,因为 SSH 公钥身份验证会绕过 PAM。man sshd_config在 Ubuntu 18.04 上通过以下方式访问的手册称

    如果设置为是,这将启用使用 ChallengeResponseAuthentication 和 PasswordAuthentication 的 PAM 身份验证,以及所有身份验证类型的 PAM 帐户和会话模块处理。

    因此,PAM 身份验证仅适用于两种类型的身份验证:质询响应和密码。PAM 不适用于公钥身份验证。

    AuthenticationMethods publickey,keyboard-interactive您可以通过添加到 来强制应用拒绝/etc/sshd_config。这要求用户使用两种方法进行身份验证:首先通过公钥(这不会使用 PAM),然后通过质询响应(这将使用 PAM)。

相关内容