为了防止我们部门的服务器受到 ssh 暴力攻击,我可以用防火墙将它们与更大的互联网隔离开来,只允许从我们的校园子网进行访问。我仍然可以通过 VPN 或通过集中管理的网关主机从外部访问它们。
但是我们正在运行 gitlab 服务器,git 使用 ssh 端口。我们的 gitlab 用户不在校园内,有些不是大学工作人员,无法访问 VPN 或网关服务器。如果我像上面一样设置防火墙,那么我会阻止他们。
gitlab
ssh
通过单个用户名使用: 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 应用程序进行限制和阻止。
和启用多因素身份验证,在应用程序上始终是一个好主意。
即使拥有强大的凭证和阻止列表,留在内网中也不会给您带来太多安全保障。如果您的日志显示来自互联网的不合理威胁,您可以重新审视这一点。