gitlab 出现403错误
描述个别用户突然出现403 forbidden。服务器环境:dockergitlab 版本:8.7查看日志:192.161.11.20 - - [08/Jan/2018:17:01:32 +0800] "GET / HTTP/1.1" 403 10 "-" "Mozilla/5.0 (Macintosh; I
·
描述
个别用户突然出现403 forbidden
。
服务器环境:docker
gitlab 版本:8.7
查看日志:
192.161.11.20 - - [08/Jan/2018:17:01:32 +0800] "GET / HTTP/1.1" 403 10 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"
192.161.11.20 - - [08/Jan/2018:17:01:49 +0800] "GET / HTTP/1.1" 403 10 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"
192.161.11.20 - - [08/Jan/2018:17:02:09 +0800] "GET / HTTP/1.1" 403 10 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"
192.161.11.20 - - [08/Jan/2018:17:02:20 +0800] "GET / HTTP/1.1" 403 10 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"
192.161.11.20 - - [08/Jan/2018:17:02:20 +0800] "GET / HTTP/1.1" 403 10 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"
192.161.11.20 - - [08/Jan/2018:17:02:22 +0800] "GET / HTTP/1.1" 403 10 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"
192.161.11.20 - - [08/Jan/2018:17:02:24 +0800] "GET / HTTP/1.1" 403 10 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"
192.161.11.20 - - [08/Jan/2018:17:02:25 +0800] "GET / HTTP/1.1" 403 10 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"
统计下次数:
root@783977abd2ec:/home/git/gitlab# cat /var/log/gitlab/nginx/gitlab_access.log | grep 403 | grep "192.161.11.20" | wc -l
62
root@783977abd2ec:/home/git/gitlab#
排查
因为其他用户正常,并且此用户之前也正常。那肯定不是服务器系统配置问题。
找到官方的讨论版:
https://gitlab.com/gitlab-org/gitlab-ce/issues/1171
我挨着查看了以下可能:
- 检查 session:
redis-cli keys '*' | grep '^[a-f0-9]\{32\}$' | wc -l
,结果为0。 - 检查 nginx 配置:之前就排除了。
- 检查 attack :
redis-cli keys '*' | grep 'rack::attack'
有一条数据。
root@9152a066a2ba:/usr/bin#
root@9152a066a2ba:/usr/bin# redis-cli keys '*' | grep 'rack::attack'
cache:gitlab:rack::attack:allow2ban:ban:192.161.11.20
root@9152a066a2ba:/usr/bin# redis-cli -h
redis-cli 2.8.4
这个 ip 正是不能访问的 ip。
找到了问题,就好解决了。我计划的解决方法:
- 查找资料,确认能否直接删除掉 redis 中的这条数据。
- 搜索 redis-cli 命令用法,用这个命令删除掉这个 key。
第一步还没有做完,这个数据就自动删除了。囧!!!查找资料发现,是可以直接删除的,接下来就是用 redis-cli 删除指定的 key。
第二步:删除 redis 中指定的 key:
redis-cli keys '*' | grep 'rack::attack' | xargs redis-cli DEL
为什么?
在 /home/git/gitlab/config/gitlab.yml 文件中,有rack_attack 配置,如果是内网就直接把 enabled 设置为 false,如果为外网可根据实际情况来调大 maxretry 。
rack_attack:
git_basic_auth:
# Rack Attack IP banning enabled
enabled: true
#
# Whitelist requests from 127.0.0.1 for web proxies (NGINX/Apache) with incorrect headers
ip_whitelist: [127.0.0.1]
#
# Limit the number of Git HTTP authentication attempts per IP
maxretry: 10
#
# Reset the auth attempt counter per IP after 60 seconds
findtime: 60
#
# Ban an IP for one hour (3600s) after too many auth attempts
bantime: 3600
更多推荐
已为社区贡献1条内容
所有评论(0)