【问题标题】:Upgrade openssh on OS X with homebrew for PCI compliance使用自制软件升级 OS X 上的 openssh 以符合 PCI
【发布时间】:2012-05-26 09:37:33
【问题描述】:

OS X 10.7.4 上现有的 openssh 版本是 SSH-2.0-OpenSSH_5.6,不幸的是,它不符合 PCI 标准。所以,我需要升级它,我一直在尝试用 Homebrew 升级它。

到目前为止,我所做的是:

brew tap homebrew/dupes
brew install openssh

没问题,一切顺利,现在当我尝试which ssh 时,我得到:

/usr/local/bin/ssh

这看起来不错,which sshd 也给出:

/usr/local/sbin/sshd

ssh -v正式报告:

OpenSSH_5.9p1, OpenSSL 0.9.8r 8 Feb 2011

到目前为止一切顺利。但这就是我不擅长的地方。 22端口还在使用OS安装版本,也就是说telnet hostname 22报告:

SSH-2.0-OpenSSH_5.6

我尝试过使用 /System/Library/LaunchDaemons/ssh.plist,但没有成功。

所以,我的问题是(可能按重要性倒序排列):

  1. 如何让我的 Homebrew 安装的 openssh 成为侦听端口 22 的设备?
  2. 如果这样做,会不会导致与 OS X 或其他软件发生冲突?
  3. 首先我的做法是否合理?
  4. 我不是在想我应该做的事情吗?
  5. 这是一个糟糕的想法吗?

我对没有通过 PCI 合规性扫描感到沮丧,需要弄清楚这一点,坦率地说,我正在考虑将我服务器上的所有电子商务网站都更改为 stripe.com,但我想得到这想通了。另外,有没有人知道openssh会在Mountain Lion中升级吗?

编辑:这是我一直在 /System/Library/LaunchDaemons/ssh.plist 中尝试的:

我只编辑了一行,正在更改:

<string>/usr/sbin/sshd</string>

<string>/usr/local/sbin/sshd</string>

然后我按照下面@the-paul 的建议尝试了sudo kill -HUP 1,并重新启动了Mac。

远程登录仍然显示SSH-2.0-OpenSSH_5.6

我的整个 ssh.plist 文件现在看起来像这样:http://pastie.org/private/qnhofuxomawjdypp9wgaq

【问题讨论】:

    标签: homebrew openssh pci-compliance


    【解决方案1】:
    1. 像这样的守护进程在 OS X 上由launchd 控制,而launchd 又由/System/Library/LaunchDaemons//Library/LaunchDaemons 等目录中的文件配置。至少在 Lion 和 Snow Leopard 上,默认 ssh 守护进程由 /System/Library/LaunchDaemons/ssh.plist 定义。

      您可以使用文本编辑器以 root 身份打开它,并将“Program”键的值从 /usr/libexec/sshd-keygen-wrapper 更改为您想要的路径;在你的情况下,那可能是/usr/local/sbin/sshd。然后您需要更改ProgramArguments 字符串中的第一个,即/usr/sbin/sshd,因为这是launchproxy 的参数。然后,要重新加载,

      sudo launchctl unload -w /System/Library/LaunchDaemons/ssh.plist
      sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist
      
    2. 我不明白这会如何导致与正常或运行良好的 OS X 软件发生任何冲突。

    3. 是的,这对我来说似乎是一件非常合理的事情。安全很重要。

    4. 这不是一个真正可以回答的问题。但几乎可以肯定,是的,和其他人一样:^)

    5. 不。唯一真正要担心的是,您让 sshd 保持最新的安全性与操作系统一样或更好。如果您知道这个问题引起的担忧,那么我认为这对您来说不是问题。

    编辑:更正了我对编辑ssh.plist 的建议(这次测试了)。

    【讨论】:

    • 感谢您提供的有用答案。但是,我仍然无法让它工作。也许我在 ssh.plist 中遗漏了一些东西。我在上面添加了我正在执行的过程,如果你发现我哪里出错了,请告诉我。
    • 我刚刚在 /usr/libexec/sshd-keygen-wrapper 里面偷看了一下,发现了 exec /usr/sbin/sshd $@ 行。我需要手动编辑吗?还是$@ 是被xml 文件替换的变量?
    • 天哪,太搞笑了。它将命令行上 sshd 的路径传递给sshd-keygen-wrapper,但实际上并没有被使用。是的,我认为你最好在那个 plist 中替换 sshd-keygen-wrapper。然后将 -i 参数保留在参数列表中。
    • 嗯。知道为什么这会扼杀我使用用户名/密码 ssh 的能力吗?我仍然可以使用共享密钥从我的机器进入。
    • 这里只是一个更新,升级到 Mountain Lion 似乎会覆盖这些更改,但是 Mountain Lion 中的 openssh 版本是所需的 5.9p1,所以我只是让操作系统为我处理 ssh再次。
    【解决方案2】:

    这就是我所做的。基于以上讨论。在 10.11.6 (El Capitan) 上成功测试

    服务器

    1. 编辑/System/Library/LaunchDaemons/ssh.plist,使对应的key反映……

      <key>ProgramArguments</key>
          <array>
          <string>/usr/local/sbin/sshd</string>
          <string>-i</string>
      </array>
      
    2. 编辑 shell 脚本 /usr/libexec/sshd-keygen-wrapper 以便最后一条命令反映以下内容:

      exec /usr/local/sbin/sshd $@
      
    3. 克隆/etc/ssh/目录内容:

      $ sudo cp /etc/ssh/ssh* /usr/local/etc/ssh/
      
    4. 确保可靠的文件所有权和权限:

      $ sudo chmod 755 /usr/local/etc/ssh/
      $ sudo chmod 600 /usr/local/etc/ssh/*_key
      $ sudo chmod 644 /usr/local/etc/ssh/ssh{{,d}_config,*.pub}
      $ sudo chown -R root:wheel /usr/local/etc/ssh/
      
    5. 重新加载 SSH 守护进程:

      $ sudo launchctl unload -w /System/Library/LaunchDaemons/ssh.plist
      $ sudo launchctl   load -w /System/Library/LaunchDaemons/ssh.plist
      

      注意:最后一项,例如,相当于systemsetup -setremotelogin on或在系统偏好设置面板中激活分享服务。

    6. 确保从客户端升级 OpenSSH:

      $ ssh-audit <Server IP>
      # general
      (gen) banner: SSH-2.0-OpenSSH_7.8
      (gen) software: OpenSSH 7.8
      (gen) compatibility: OpenSSH 6.5+, Dropbear SSH 2013.62+
      (gen) compression: enabled (zlib@openssh.com)
      

    客户

    1. 安装 OpenSSH:

      $ brew install openssh
      
    2. 克隆/etc/ssh/目录内容。

    3. 确保可靠的文件所有权和权限。

    【讨论】:

    • 尝试:以恢复模式启动,打开终端并输入:csrutil disable
    • 我刚刚复制了 LaunchDaemon 并以新名称 ssh2 加载。事实证明这是一个好主意......它同样有效,这意味着我有一个备份,以防万一崩溃或我想​​重新配置转发、端口等。它也应该在更新时发挥更好的作用。
    猜你喜欢
    • 2015-01-18
    • 1970-01-01
    • 2015-08-30
    • 1970-01-01
    • 2013-03-28
    • 1970-01-01
    • 2017-05-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多