gitlab机架攻击

机架攻击

机架攻击,也被称为Rack :: Attack,是一个rubygem ,旨在保护GitLab能够自定义限制和阻止用户IP。您可以通过限制来自大量请求的IP地址的请求来防止强力密码攻击,刮板或任何其他违规者。如果您发现节流不足以保护您免受滥用客户的侵害,Rack Attack可提供IP白名单,黑名单,Fail2ban风格过滤和跟踪功能。

默认情况下,用户登录,用户注册(如果启用)和用户密码重置限制为每分钟6个请求。经过6次尝试后,客户必须等待下一分钟才能再次尝试。

如果您按照官方指南安装或升级了GitLab,则 默认情况下应启用此功能。如果您的实例未暴露给任何传入连接,建议禁用机架攻击。

有关如何使用这些选项的更多信息,请查看 机架攻击自述文件。

设置 

Omnibus GitLab

打开/etc/gitlab/gitlab.rb你的编辑器

添加以下内容:

gitlab_rails['rack_attack_git_basic_auth']={'enabled'=>true,'ip_whitelist'=>["127.0.0.1"],'maxretry'=>10,'findtime'=>60,'bantime'=>3600}

重新配置GitLab:

sudo gitlab-ctl reconfigure

可以配置以下设置:

enabled:默认情况下,它被设置为true。将其设置false为禁用Rack Attack。

ip_whitelist:将任何IP阻止白名单。它们必须格式化为ruby数组中的字符串。例如,["127.0.0.1", "127.0.0.2", "127.0.0.3"]。

maxretry:在指定时间内请求的最大次数。

findtime:在IP被列入黑名单之前,最大的时间失败请求数可以对IP进行计数。

bantime:列入黑名单的IP将在几秒钟内被阻止的总时间。

从源安装

这些设置可以在中找到config/initializers/rack_attack.rb。如果缺少config/initializers/rack_attack.rb,需要执行以下步骤才能启用对GitLab实例的保护:

在config/application.rb查找并取消注释以下行:

config.middleware.useRack::Attack

复制config/initializers/rack_attack.rb.example到config/initializers/rack_attack.rb

打开config/initializers/rack_attack.rb,查看 paths_to_be_protected并添加您需要保护的任何其他路径

重新启动GitLab:

sudo service gitlab restart

如果你想要更多的限制/轻松的油门规则,编辑 config/initializers/rack_attack.rb和更改limit或period值。例如,如果你设置limit: 3和period: 1.seconds(这将允许每秒3个请求),则更加宽松的节流规则 。您还可以通过添加到paths_to_be_protected 变量来将其他路径添加到受保护的列表中。如果你改变了这些设置,不要忘记重新启动你的GitLab实例。

通过Redis从Rack Attack中删除阻止的IP 

如果您想要删除阻止的IP,请按照下列步骤操作:

查找生产日志中被阻止的IP:

grep "Rack_Attack" /var/log/gitlab/gitlab-rails/production.log

由于黑名单存储在Redis中,因此您需要打开redis-cli:

/opt/gitlab/embedded/bin/redis-cli -s /var/opt/gitlab/redis/redis.socket

您可以使用以下语法删除该块,替换为列入黑名单的实际IP:

del cache:gitlab:rack::attack:allow2ban:ban:《ip》

确认具有IP的密钥不再显示:

keys *rack::attack*

或者,将IP添加到白名单以防止它再次被列入黑名单(请参阅设置)。

故障排除 

机架式攻击会将负载平衡器列入黑名单 

如果所有流量似乎来自负载平衡器,机架攻击可能会阻止您的负载平衡器。在这种情况下,您需要:

配置nginx[real_ip_trusted_addresses]。这将使用户的IP不被列为负载平衡器IP。

在Rack Attack 设置中将负载均衡器的IP地址列入白名单。

重新配置GitLab:

sudo gitlab-ctl reconfigure

通过Redis移除该块。

你可能感兴趣的:(gitlab机架攻击)