使用 git 保护服务器上的 ssh

使用 git 保护服务器上的 ssh

为了防止我们部门的服务器受到 ssh 暴力攻击,我可以用防火墙将它们与更大的互联网隔离开来,只允许从我们的校园子网进行访问。我仍然可以通过 VPN 或通过集中管理的网关主机从外部访问它们。

但是我们正在运行 gitlab 服务器,git 使用 ssh 端口。我们的 gitlab 用户不在校园内,有些不是大学工作人员,无法访问 VPN 或网关服务器。如果我像上面一样设置防火墙,那么我会阻止他们。

gitlabssh通过单个用户名使用: git,并且所有 gitlab 用户的公钥都在git用户的中.ssh/authorized_keys,以便command=为特定的 git 请求运行服务。Gitlab 用户没有 shell 访问权限。只有我们的管理员才能获得 shell。

确保 gitlab 服务器上安全的最佳方法是:

  • 在防火墙上打开 SSH 端口
  • 禁用 SSH 上的密码登录
  • 使用 ssh jail 运行 fail2ban

有没有其他方法可以阻止部分ssh用户名从某个 IP 范围访问?例如,允许git任何地方的用户使用 ssh,而ssh仅允许来自我们校园子网的其他用户名访问?我猜防火墙如果不检查数据包就无法做到这一点,所以也许是配置出了问题sshd

答案1

sshd 配置有此属性

AllowUsers username

你可以试试。

答案2

使其面向互联网

为了用户(和您)的方便,可以运行面向 Internet 的 GitLab。gitlab.com 可以大规模地实现这一点。

要保护的组件是 sshd 和 Ruby on Rails Web 应用程序。

使用常用的 openssh 指令禁用 ssh 密码验证PasswordAuthentication。GitLab 的 git 用户被迫通过其管理的 authorized_keys 使用 gitlab-shell。如果需要,您可以限制允许的密钥格式和长度。

在 sshd 前面放置您想要的任何禁令或监禁。fail2ban、sshguard、denyhosts。

与 Rack::Attack 集成允许对 Web 应用程序进行限制和阻止。

启用多因素身份验证,在应用程序上始终是一个好主意。

即使拥有强大的凭证和阻止列表,留在内网中也不会给您带来太多安全保障。如果您的日志显示来自互联网的不合理威胁,您可以重新审视这一点。

相关内容