使用自制软件在OS X上升级openssh以实现PCI合规性

时间:2012-05-18 19:58:05

标签: homebrew openssh pci-compliance

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仍在使用操作系统安装版本,也就是说telnet hostname 22报告:

SSH-2.0-OpenSSH_5.6

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

所以,我的问题是(可能与重要性相反):

  1. 如何让openb的Homebrew安装成为侦听端口22的那个?
  2. 如果我这样做,是否会导致与OS X或其他软件发生冲突?
  3. 首先,我的方式是合理的吗?
  4. 我不是在想我应该做的事情吗?
  5. 这是一个可怕的想法吗?
  6. 我对没有通过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

2 个答案:

答案 0 :(得分:15)

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

    您可以使用文本编辑器以root身份打开它,并将“/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 的参数。然后,重新加载,

    ssh.plist
  2. 我不知道这应该如何导致与普通或性能良好的OS X软件发生冲突。

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

  4. 这不是一个非常负责任的问题。但几乎可以肯定,是的,和其他人一样:^)

  5. 不。唯一真正令人担心的是,您的sshd与安全性保持同步或更好。如果您意识到这个问题所带来的问题,那么我认为这对您来说不会有问题。

  6. 编辑:更正了我对编辑{{1}}的建议(此次测试)。

答案 1 :(得分:1)

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

服务器

  1. 编辑/System/Library/LaunchDaemons/ssh.plist,以使相应的反映出来……

    <key>ProgramArguments</key>
        <array>
        <string>/usr/local/sbin/sshd</string>
        <string>-i</string>
    </array>
    
  2. 编辑外壳程序脚本/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. 确保可靠的文件所有权和权限。