gitlab-ce并发超过30引起ip被封1小时的问题

系统环境描述

System information
System:     Ubuntu 14.04
Current User:   git
Using RVM:  no
Ruby Version:   2.1.5p273
Gem Version:    2.2.1
Bundler Version:1.5.3
Rake Version:   10.3.2
Sidekiq Version:3.3.0

GitLab information
Version:    7.8.1
Revision:   e2d785c
Directory:  /opt/gitlab/embedded/service/gitlab-rails
DB Adapter: postgresql
URL:        https://git.zhuima.com
HTTP Clone URL: https://git.zhuima.com/some-project.git
SSH Clone URL:  ssh://git@git.zhuima.com:10086/zhuima.git
Using LDAP: yes
Using Omniauth: no

GitLab Shell
Version:    2.5.4
Repositories:   /data/gitlab/data/repositories
Hooks:      /opt/gitlab/embedded/service/gitlab-shell/hooks/
Git:        /opt/gitlab/embedded/bin/git

问题症状

每天总有一段时间会出现403的情况
办公网不能访问位

拍错思路

1、日志中出现401、403状态吗

2、gitlab-rake gitlab:check发现的问题 [修复未能解决问题]

    zhuima-library / yii-framework ... no
      Try fixing it:
      sudo -u git -H bundle exec rake gitlab:satellites:create RAILS_ENV=production
      If necessary, remove the tmp/repo_satellites directory ...
      ... and rerun the above command
      For more information see:
      doc/raketasks/maintenance.md

3、网上的文档搜索相关文档

http://boardreader.com/thread/Gitlab_7_10_4_Forbidden_Error_56o55lX769.html
怀疑是rack_attack.rb文件的策略导致的,修改文件,重启不生效

rack_attack.rb文件的额配置,修改1s并发300不生效!!!!!

unless Rails.env.test?
  Rack::Attack.throttle('protected paths', limit: 300, period: 1.seconds) do |req|
    if req.post? && req.path =~ paths_regex
      req.ip
    end
  end
end

其他

每次服务中断时间为1小时

该时间段内没有设置任务计划
gitlab是通过ladp进行账号验证的

仅仅办公网不能正常访问gitlab,外部网络访问正常

1、仅仅办公网不能正常访问gitlab,外部网络访问正常
2、办公网络开发人数150+
3、并发30+

需要解决的问题

想要的效果

1、如何禁用rack_attack.rb的策略
2、稳定的服务

相关日志

Started GET "/" for 127.0.0.1 at 2015-09-02 16:57:50 +0800
Processing by DashboardController#show as */*
Completed 401 Unauthorized in 44ms

=========
==> /var/log/gitlab/nginx/gitlab_access.log <==
118.187.12.36 - - [02/Sep/2015:16:47:33 +0800] "GET /zhuima-egg/zhuima.git/info/refs?service=git-upload-pack HTTP/1.1" 403 20 "-" "git/1.9.5.msysgit.1"

排错过程中所做的操作

1_settings.rb中定义的

1_settings.rb中添加白名单,生效,但是gitlab-ctl reconfigure之后配置被初始化

Settings['rack_attack'] ||= Settingslogic.new({})
Settings.rack_attack['git_basic_auth'] ||= Settingslogic.new({})
Settings.rack_attack.git_basic_auth['enabled'] = true if Settings.rack_attack.git_basic_auth['enabled'].nil?
Settings.rack_attack.git_basic_auth['ip_whitelist'] ||= %w{127.0.0.1}
Settings.rack_attack.git_basic_auth['ip_whitelist'] ||= %w{118.187.12.36}
Settings.rack_attack.git_basic_auth['maxretry'] ||= 10
Settings.rack_attck.git_basic_auth['findtime'] ||= 1.minute
Settings.rack_attack.git_basic_auth['bantime'] ||= 1.hour

禁用rack_attack.rb文件

http://boardreader.com/thread/Gitlab_7_10_4_Forbidden_Error_56o55lX769.html

关于rack_attack

rack-attack: 基于 Rack 的防攻击中间件
https://github.com/kickstarter/rack-attack
https://github.com/kickstarter/rack-attack/wiki/Example-Configuration

官方文档的解释:

http://doc.gitlab.com/ce/security/rack_attack.html

http://boardreader.com/thread/Gitlab_7_10_4_Forbidden_Error_56o55lX769.html

rack_attack配置在案例·

https://gitlab.com/gitlab-org/omnibus-gitlab/issues/480

gitlab-ce 9.10归档整理

https://about.gitlab.com/downloads/archives/

gitlab 7.9版本之后的rack_attack.rb配置示例:

https://github.com/kickstarter/rack-attack/wiki/Example-Configuration

参考文档

https://code.csdn.net/zhanglushan/gitlabhq/tree/0b1cf50060de0d0a3039dfb2fca47364c7fb5f82/doc/raketasks/maintenance.md

原创文章,作者:追马,如若转载,请注明出处:http://www.178linux.com/7982

(2)
追马追马
上一篇 2015-09-06
下一篇 2015-09-06

相关推荐

  • 文本三剑客之grep

    文本编辑三剑客之grep 目录 一、正则表达式 二、grep:文本过滤器 一、正则表达式 REGEXP:由一类特殊字符及文本字符所编写的模式,其中有些字符(元字符)不表示字符字面上的意义,而表示控制或者通配的功能。分类: 基本正则表达式:BRE 扩展正则表达式:ERE 元字符的分类: 字符匹配 匹配次数 位置锚定 分组 (1)基本正则表达式元字符 1>…

    2017-03-26
  • 第四周作业

    作业 1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。 [root@cloud ~]# cp -R /etc/skel /home/tuser1 && chmod -R…

    Linux干货 2016-12-25
  • 系统自动化安装

    本章内容 系统安装过程配置anaconda自动化安装系统 安装程序 CentOS系统安装 系统启动流程: bootloader–>kernel(initramfs)–>rootfs–>/sbin/init anaconda: 系统安装程序 tui: 基于图形库curses的文本窗口 gui:图形窗口 安装程序启动过程 MBR…

    Linux干货 2016-09-19
  • linux用户管理实战

     1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登陆多次,则只显示一次即可。 [root@localhost ~]# who |cut -d ‘ ‘ -f1 |sort -u  2、取出最后登陆到当前系统的用户的相关信息。 [root@localhost ~]# who |tail -1  3、取出当前系统上被用户当做…

    2018-02-08
  • shell编写的linux命令练习工具

    linux常用命令加选项,有成百上个,仅仅靠背诵忘记得太快,所以写了此脚本,便于对linux命令的练习,希望能帮助到大家。 运行脚本效果如下: 上边两图一个是运行脚本时的截图,另一个为题库的格式(@做分隔符,所以如果题目中有@一定要替换掉) 下面附上源码 #!/bin/bash#版本号:1.0 #作者:Mr.L #WX:504498722FILE=/root…

    2017-03-19
  • N25-第十周

    1、请详细描述CentOS系统的启动流程(详细到每个过程系统做了哪些事情) 一、内核空间详细过程如下: POST –> BootSequence(BIOS) –> Bootloader(MBR) –> kernel(ramdisk) –> rootfs(只读) –> /sbin/init(systemd) 1.POST:(pow…

    Linux干货 2017-05-30