目标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_Attack" /日志目录/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地址来选择禁用,而不是禁用掉反向代理的地址呢?

参考gitlab的官方文档,配置trusted_proxy,并传递用户真实的IP地址

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

rack_attack的规则是计算某个ip在某段时间里边的失败的基本认证的次数,默认是一分钟内大于10次则拦截这个ip,所以想要人为出发这个拦截机制,只需要用基本认证的方式和错误的用户名密码来不断请求gitlab相关地址就可以了,默认情况下,快速请求10次就可以触发403了

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

官方文档的位置:

https://docs.gitlab.com/ee/security/rack_attack.html

gitlab的rack-attack机制和如何设置白名单的记录的更多相关文章

  1. angularjs中关于跨域设置白名单

    在config中注入$sceDelegateProvider服务使用resourceUrlWhitelist([])方法添加白名单 跨域时将method的属性设置为"jsonp"就 ...

  2. php 设置白名单ip

    //检查白名单ip private function _checkAllowIp() { $allowIp = ['203.195.156.12']; $ip = $this->getIp(); ...

  3. MySQL设置白名单教程

    1 登录mysql mysql -h host -u username -p password 2 切换至mysql库 use mysql; 3 查看当前允许登录IP及用户 select Host,U ...

  4. Windows7,程序兼容助手:这个程序可能安装不正确(做注册表里设置白名单,软件自身的名字不能带setup)

    Windows上有一个很奇怪的一个现象,一个exe只要名字里面带了setup\install之类的,打开exe后立即退出就会弹出下面的窗口. 解决方法: 方法一.更改exe的名字,去掉setup\in ...

  5. gitlab-ce白名单设置杜绝并发数过大引起的封ip故障

    gitlab-ce 7.9安装手札以及上篇文章的问题解决 鸣谢 感谢ruby大神===>章鱼的一路指点,才能拨开迷雾见云天! 章鱼大人: 国内Ansible部落原创翻译之一! 资深运维! ROR ...

  6. Linux安全加固(二)禁止普通用户su到root/设置SSH终端接入白名单/修改history条数

    一.禁止普通用户su到root管理员.设置可以su到root的白名单 1.首先看一下正常情况 2.可以看到普通用户使用su root命令,输入密码即可登录到root用户 3.下面开始配置禁止所有普通用 ...

  7. ingress Whitelisting白名单机制

    Whitelisting To restrict the service in a way that only a list of IPs can access it, modify the ingr ...

  8. Linux防火墙白名单设置

    在linux系统中安装yum install iptables-services 然后 vi /etc/sysconfig/iptables # Generated by iptables-save ...

  9. java 中利用反射机制获取和设置实体类的属性值

    摘要: 在java编程中,我们经常不知道传入自己方法中的实体类中到底有哪些方法,或者,我们需要根据用户传入的不同的属性来给对象设置不同的属性值,那么,java自带的反射机制可以很方便的达到这种目的,同 ...

随机推荐

  1. ASP.NET Core -中间件(Middleware)使用

    ASP.NET Core开发,开发并使用中间件(Middleware). 中间件是被组装成一个应用程序管道来处理请求和响应的软件组件. 每个组件选择是否传递给管道中的下一个组件的请求,并能之前和下一组 ...

  2. request.getParameter(“xxx”)的参数的取值

    request.getParameter(“xxx”)的参数的取值的几种可能: 1. Html中form表单中标签的name属性: <form name="form" met ...

  3. 1.2 Stream API

    引例: List<String> strList = Arrays.asList("zhaojigang","nana","tianya& ...

  4. webservice-整理

    webservice-整理 RPC与WebService的区别:https://blog.csdn.net/defonds/article/details/71641634 http://www.di ...

  5. PL/SQL学习笔记之存储过程

    一:PL/SQL的两种子程序 子程序:子程序是执行一个特定功能.任务的程序模块.PL/SQL中有两种子程序:函数  和  过程. 函数:主要用于计算并返回一个值. 过程:没有直接返回值,主要用于执行操 ...

  6. Failed to execute goal org.mybatis.generator:mybatis-generator-maven-plugin:1.3.2:generate

    (1)将Maven项目先clean,接着install下 (2)运行mvn mybatis-generator:generate命令 注意修改generatorConfig.xml的location: ...

  7. (转)超过 130 个你需要了解的 vim 命令

    从 1970 年开始,vi 和 vim 就成为了程序员最喜爱的文本编辑器之一.5 年前,我写了一个问自己名为 “每个程序员都应该知道的 100 个 vim 命令” 这次算是之前那篇文章的改进版,希望你 ...

  8. 一篇文章让你读懂iOS和Android的历史起源

    智能手机虽说是移动电话,但我们完全可以将其作为小型化的电脑来思考.这样一来也能够显示出智能手机OS的高性能.我们首先一起来回顾下智能手机OS的历史. OS的黎明期 其实在很早之前就已经有这样的想法,即 ...

  9. 湾区求职分享:三个月刷题拿到 Google offer,欢迎踊跃提问

    本文仅以个人经历和个人观点作为参考.如能受益,不胜荣幸. 本文会不断的修正,更新.希望通过大家的互动最后能写出一份阅者受益的文章. 本文纯手打,会有错别字,欢迎指出,虚心接受及时更改. 小马过河,大牛 ...

  10. Linux说明书 - man浅谈

    原文链接: http://www.cnblogs.com/xuxn/archive/2011/08/26/linux-manual-man-command.html 所有学过Linux的同学都应该知道 ...