允许特定组从特定 IP 地址进行 ssh 登录,拒绝其他地址进行 ssh 登录

允许特定组从特定 IP 地址进行 ssh 登录,拒绝其他地址进行 ssh 登录

操作系统:CentOS 6.5 SSH v5.3

目标:

  • 允许来自多个主机的 PubKeyAuthentication 进行根访问。

  • “group1” 的用户可以使用他们提供的任何内容登录:PubKey、Password、GSSAPI、KerberosPassword;但他们只能从一个特定的 IP 访问:192.168.1.10

状态:根访问权限已通过from=""中的多个条目定义~/.ssh/authorized_keys,并按预期工作。

问题:group1 的用户可以从 192.168.1.10 或其他地方访问;或者被完全锁定(使用之前测试过的配置)。

我尝试了几种变化,但都无济于事。

/etc/pam.d/sshd实际上是这样的:

    auth        sufficient    pam_unix.so nullok try_first_pass
    auth        requisite     pam_succeed_if.so uid >= 500 quiet

目前我有sshd_config

    PermitRootLogin without-password
    PasswordAuthentication no
    KerberosAuthentication no
    GSSAPIAuthentication no
    UsePAM yes

    AllowGroups root group1

    Match Group [email protected]
        KerberosAuthentication yes
        PasswordAuthentication yes
        GSSAPIAuthentication yes
        PubKeyAuthentication yes
    Match Group root
        PubKeyAuthentication yes

有什么建议吗?

答案1

我找到了一个可行的解决方案。sshd 调试模式(/usr/sbin/sshd -ddd)指示缺少的链接:

    debug1: connection from 192.168.1.111 matched 'Address *'
    debug3: match found
    [...]
    Accepted **keyboard-interactive/pam** for xxx from \ 
           192.168.1.111 port 54282 ssh2

如您所见,登录匹配了正确的块;但由于UsePAM yes 聚丙烯酰胺显然否决了块中的“否”条目Match Address *;参见手册:

    UsePAM  Enables the Pluggable Authentication Module interface. 
            If set to “yes” this will enable PAM authentication using
            [...] PasswordAuthentication

最终配置如下:

    PermitRootLogin without-password
    PasswordAuthentication no
    KerberosAuthentication no
    GSSAPIAuthentication no

    UsePAM yes

    AllowGroups root group1

    Match Address 192.168.1.10
      KerberosAuthentication yes
      PasswordAuthentication yes
      GSSAPIAuthentication yes
      PubKeyAuthentication yes
      KbdInteractiveAuthentication yes

    Match Group root
      PubKeyAuthentication yes

    Match Address *
      KerberosAuthentication no
      PasswordAuthentication no
      GSSAPIAuthentication no
      PubKeyAuthentication no
      KbdInteractiveAuthentication no

仅在添加KbdInteractiveAuthentication noPAM 密码功能后才禁用此块,并且来自任何地方的用户现在都被成功拒绝。

相关内容