我有一台安装了 Zimbra 的 CentOS 5.7 服务器,一切运行正常。
我刚刚通过以下方式保护了 SSH:
- 更改为另一个端口
- 拒绝 root 登录
- 启用
StrictModes
- 更改
AllowUsers
为仅 1 个用户(不是 zimbra) - 禁用
RSAAuthentication
- 启用
PubkeyAuthentication
- 禁用
PasswordAuthentication
- 禁用
ChallengeResponseAuthentication
以上操作适用于以允许的用户身份通过 SSH 连接到服务器以及以 root / sudo 身份进行 su。
但是当我登录我的网络邮件时,我无法再发送/接收任何消息。哎呀!
通过在网上进行一些搜索,看起来 Zimbra 在内部使用 ssh 与其他 Zimbra 模块通信。
有人知道如何解决这个问题吗?
答案1
我无法真正测试这一点,因为我没有可以使用的 Zimbra 测试设置,但我认为将用户添加zimbra
到 AllowUsers 并将 ssh 端口设置回 22 应该足够了。
如果您担心在标准端口上暴露 ssh,那么可以配置sshd
为侦听您的备用端口以及端口 22,并使用iptables
将对端口 22 的访问限制为仅限本地 IP 地址。(就我个人而言,我更喜欢将 ssh 保留在其标准端口上并限制源 IP 地址,但如果您没有固定的源 IP 地址,这可能不切实际。)
如果您担心将zimbra
用户暴露给世界,您可能需要研究pam_access
限制zimbra
用户可以从哪些 IP 地址进行 SSH。
话虽如此,我感觉,根据您列出的症状,您的服务器除了 SSH 访问中断之外,还存在其他问题。Zimbra 不需要 ssh 来执行发送电子邮件等日常事务,而主要是为了管理目的。您可能想要检查日志/var/log
和/opt/zimbra/log
。
答案2
我建议您恢复原始设置并一次启用一项功能。
您可以做的主要事情是将 root 登录设置为“无密码”,以防止 root 使用密码登录(同时允许密钥认证,如果需要)。
对于 ssh 端口,您的环境中是否有硬件或外部防火墙?如果有,您可以让 ssh 监听多个端口。例如 22 和 2222。只需将来自世界各地的入站访问限制到您的备用端口即可。
我认为 AllowUsers 指令可能是问题的一部分。您可以通过检查 /var/log/secure 日志来确定这一点。
答案3
无需返回端口 22(我这里使用 1234):
# su - zimbra
$ zmprov ms domain.tld zimbraRemoteManagementPort 1234
$ ssh -vi .ssh/zimbra_identity -o strictHostKeyChecking=no [email protected] -p 1234