gitlab的rack-attack机制和如何设置白名单的记录(代码片段)

jiaoyiping jiaoyiping     2022-12-18     817

关键词:

目标gitlab是使用源码安装的10.5中文版

大纲:

gitlab rack-attack 机制的作用

如何启用和禁用gitlab的rack-attack机制,以及如何配置白名单

如果一个ip被错误地拦截,导致了不能访问,如何快速地恢复

如果gitlab工作在一个反向代理(或者是负载均衡器)的后边,会导致的问题和解决的方法

如何写出一个可以触发拦截机制的测试用例

正文:

1.gitlab rack-attack 机制的作用

gitlab的rack-attack机制是为了限制某个ip对gitlab进行基本认证请求的次数,杜绝恶意的攻击和密码破解等行为,通过限制每个ip每分钟内尝试的基本认证的次数来实现,如果某个ip进行的基本认证请求的次数超过这个限制,则这个ip的其他的所有的请求都会返回403

2.如何启用和禁用gitlab的rack-attack机制,以及如何配置白名单

我们使用的是从源码安装的gitlab,rack-attack机制默认是启用的,如果想要禁用掉这个机制,只需要修改 /home/git/gitlab/config/gitlab.yml

将下图中的enabled改为false,然后取消注释即可:

技术分享图片

如果想要配置不拦截某个IP地址,则将上边的ip_whitelist配置取消注释,将不拦截的ip地址配置进去即可,如果有多个地址的话,中间用逗号进行分隔.

3.如果一个ip被错误地拦截,导致了不能访问,如何快速地恢复
如果一个地址被拦截,则gitlab会将这个拦截的地址写入redis里边,如果想要迅速地恢复这个地址的请求,则将这条拦截的记录从redis里边删除即可

具体的操作的方法如下:

查看日志,找到被拦截的IP地址是什么:

grep "Rack Attach" /日志目录/production.log

进入redis :

redis-cli -s /var/run/redis/redis.sock

查看相关的cache key:

keys *rack::attack*

删除掉该key对应的值:
del cache:gitlab:rack::attack:allow2ban:ban:<前边找到的IP地址>

4.如果gitlab工作在一个反向代理或者是负载均衡后边,导致gitlab拿到的请求地址都是反向代理(或者负载均衡器)的IP地址,而不是用户真实的IP地址,会导致rack-attack起不到我们想要的作用,这时候该如何配置让gitlab读取到用户真实的ip地址来选择禁用,而不是禁用掉反向代理的地址呢?

补充.....

5.如何写出一个可以触发拦截机制的测试用例

补充......

11.x版本开始,rack-attack功能默认都是禁用的了,如果需要这个功能,需要手动修改配置文件来开启

官方文档的位置:
https://docs.gitlab.com/ee/security/rack_attack.html

如何设置DNS,让一个gitlab页面的根域和子域指向同一个地址?

】如何设置DNS,让一个gitlab页面的根域和子域指向同一个地址?【英文标题】:HowtosettheDNSsothattherootdomainandthesubdomainofagitlabpagepointtothesameaddress?【发布时间】:2020-06-2109:51:38【问题描述】:这是一个类似于thisone的问题,但不完全... 查看详情

如何正确设置环境变量 Gitlab CI/CD 和 Docker

】如何正确设置环境变量GitlabCI/CD和Docker【英文标题】:HowtosetenvironmentalvariablesproperlyGitlabCI/CDandDocker【发布时间】:2020-01-1003:02:15【问题描述】:我是Docker和带有GitlabCI/CD的CI/CD的新手。我的Django项目的根目录中有.env文件,其中... 查看详情

如何解耦 Jenkins CI 和 gitlab CI 流水线?

】如何解耦JenkinsCI和gitlabCI流水线?【英文标题】:HowtodecoupleJenkinsCIandgitlabCIpipelines?【发布时间】:2022-01-1409:20:01【问题描述】:到目前为止,我只与Jenkins合作过。我们已经配置了一个多分支管道作业来自动构建和测试软件。... 查看详情

如何使用gitlab和rancher构建ci/cd流水线–part1

介绍GitLab核心是集成管理Git存储库的工具。比如你希望创建一个提供服务的平台,那么GitLab将提供强大的身份验证和授权机制、工作组、问题跟踪、wiki和片段,除此之外还有公有、内部和私有存储库。GitLab强大之处在于,它包... 查看详情

如何备份和恢复 gitlab runner?

】如何备份和恢复gitlabrunner?【英文标题】:Howtobackupandrestoreagitlabrunner?【发布时间】:2022-01-1119:28:04【问题描述】:我在一个小型Linux机器上有一个gitlab运行器。我需要在那个盒子上重新安装操作系统,并且我不想在重新安装... 查看详情

如何在centos上安装gitlab和redmine

参考技术A因为只想用gitlab做代码管理,而用redmine做项目管理,所以不想用gitlab自带的issue功能,而是用redmine的issue。gitlab提供了和redmine的integration,其实是个跳转的功能,有点弱。详细配置可以参考:https://github.com/gitlabhq/gitlabh... 查看详情

gitlab12.0发布,大力加强安全功能,包括可视审阅和依赖列表

参考技术A日前Gitlab博客宣布发布GitLab的又一个里程碑大版本12.0。该版本主推基于全栈DevOps的全供应链安全DevSecOps,从而实现真正意义上的开发,运维和安全的有机集成。另外代码审阅一直是Gitlab比较重点突击加强的功能新版本... 查看详情

如何设置动态 gitlab-ci 文件

】如何设置动态gitlab-ci文件【英文标题】:Howtosetupadynamicgitlab-cifile【发布时间】:2019-11-1302:35:45【问题描述】:我正在尝试设置一个动态gitlab-ci文件,其中包含基于项目变量所需的gitlab-ci文件。不幸的是,我似乎无法让它工作... 查看详情

编译安装的gitlab8.x如何修改时区设置

编译安装的gitlab8.x版本默认的时区是UTC,在页面上显示的时间默认是零时区的区时,安装完成之后,如果页面上显示的时间比北京时间少了8个小时,则需要修改一下时区把gitlab.yml文件中的#time_zone:‘UTC‘改为 time_zone:‘Beijing‘然... 查看详情

如何找到用于 gitlab 集成的 gcloud Kubernetes api url

】如何找到用于gitlab集成的gcloudKubernetesapiurl【英文标题】:HowdoIfindthegcloudKubernetesapiurlforgitlabintegration【发布时间】:2018-05-0510:58:03【问题描述】:我正在使用gitlab和gitlab-ci的托管版本,并遵循kubernetes集成设置https://docs.gitlab.com/... 查看详情

如何使用多个 docker 设置 Gitlab CI E2E 测试

】如何使用多个docker设置GitlabCIE2E测试【英文标题】:HowtosetupGitlabCIE2EtestsusingMultipledockers【发布时间】:2021-05-1006:03:09【问题描述】:我对使用GitlabCI的自动化测试有点迷茫。我希望我能解释我的问题,以便有人可以帮助我。我... 查看详情

如何从 GitLab 管道向 Telegram 发送通知?

】如何从GitLab管道向Telegram发送通知?【英文标题】:HowtosendnotificationtoTelegramfromGitLabpipeline?【发布时间】:2022-01-2402:01:37【问题描述】:在我们的小型初创公司中,我们使用GitLab进行开发,使用Telegram进行开发人员和PO之间的内... 查看详情

使用 Gitlab CI 时如何设置 docker 容器的主机名

】使用GitlabCI时如何设置docker容器的主机名【英文标题】:HowtosetthehostnamefordockercontainerwhenusingGitlabCI【发布时间】:2020-03-0819:24:30【问题描述】:我正在尝试使用docker映像设置GitlabCI管道。出于某种原因,我需要将docker容器的主... 查看详情

如何使用 Jenkins job dsl 为 gitlab 插件设置秘密令牌?

】如何使用Jenkinsjobdsl为gitlab插件设置秘密令牌?【英文标题】:HowcanIsetthesecrettokenforgitlabpluginwithJenkinsjobdsl?【发布时间】:2018-08-1511:41:14【问题描述】:插件站点的文档似乎有误:https://github.com/jenkinsci/gitlab-plugin来自工作dsl文... 查看详情

如何使用 GitLab CI 设置 Selenium E2E 测试?

】如何使用GitLabCI设置SeleniumE2E测试?【英文标题】:HowtosetupSeleniumE2EtestingwithGitLabCI?【发布时间】:2018-05-1213:37:04【问题描述】:我正在为网站前端开发一个Vue.js应用程序。对于这个应用程序,我想使用单元和E2E测试。我用vue-cl... 查看详情

趣说区块链|详解filecoin的质押和惩罚机制

...约束矿工遵守规则进行数据存储呢?因此设置了质押机制和惩罚机制。通过质押机制来提高矿工的违约成本,设置惩罚机制,让矿工高效稳定的进行数据存储。那如何避免质押被罚没?接下来我们详细了解下Filecoi... 查看详情

Gitlab6.0 和 Apache2

】Gitlab6.0和Apache2【英文标题】:Gitlab6.0andApache2【发布时间】:2013-09-1414:38:22【问题描述】:请问如何在Apache2上设置Github6.0?Gitlab按照原说明安装Unicorn.rb中的调整...#listen"/home/git/gitlab/tmp/sockets/gitlab.socket",:backlog=>64#listen"127.0.0.... 查看详情

心跳机制

...套接字是否还可以使用呢?这个就需要在系统中创建心跳机制。其实TCP中已经为我们实现了一个叫做心跳的机制。如果你设置了心跳,那TCP就会在一定的时间(比如你设置的是3秒钟)内发送你设置的次数的心跳(比如说2次),... 查看详情