📑

大規模ゲームでGitLFS使ったらgitlabサーバから拒否られた

2023/08/06に公開

はじめに

結構大規模のソシャゲを運用してるんですが、アセット部分の管理にSVNを使っておりまして。
運用年数が増えるにつれて使ってるSVNサーバの容量が数TB規模に…。コンナニフエルノ…
そのため、gitへ移行してGitLFSにしようぜ!と相成りました。

GitLFSとは

git自体はソースコードの管理は得意なものの、音声・動画・画像などの容量の大きなファイルを扱うことが不得意。
そのため、それら大きなファイルを扱うために Git LFS(Large File Storage) という便利な機能が用意されてます。
詳しくはわかりやすいbacklogのGitLFS説明などをご参考に。

GitLFSで運用開始

頑張ってアセットをSVNからgitへ移行し、さぁ運用開始。
初っ端はちまちま上げてたので、大きな問題なくいい感じに使えていました。GitLFS下でうまく動いている、と思ってました…

少しした頃、使っているゲームエンジンのバージョンアップに伴い、多くのアセットファイルを一気に上げる必要になりました。

それを上げてもらっている最中、他のプロジェクトから
「gitlabサーバ落ちてません?」
と連絡が。…ん?サービスは落ちてはない。なんか接続できない…
んーなんでだ?って思いつつも取り急ぎ調査してみると、アクセスが拒否られている。
DoS攻撃対策が効きすぎ…?ということでちょっと止めるわけにはいけない状況ので一旦DoS攻撃対策の設定をOFFにして回避。

ひとまずこれで!と連絡して別作業してたら
「あの…またgitlabサーバ繋がらないんですが…」
と連絡が(;´Д`)

しっかりと原因調査

え、何、ガチで攻撃されてる!?と思ってgitlabサーバのログを見てみる。

Rack_Attack: blacklist XXX.XXX.XXX.XXX POST /YYYYYYYY/info/lfs/objects/batch
Rack_Attack: blacklist XXX.XXX.XXX.XXX POST /YYYYYYYY/info/lfs/objects/batch
Rack_Attack: blacklist XXX.XXX.XXX.XXX POST /YYYYYYYY/info/lfs/objects/batch
Rack_Attack: blacklist XXX.XXX.XXX.XXX POST /YYYYYYYY/info/lfs/objects/batch
Rack_Attack: blacklist XXX.XXX.XXX.XXX POST /YYYYYYYY/info/lfs/objects/batch
Rack_Attack: blacklist XXX.XXX.XXX.XXX POST /

…あれ?このXXX.XXX.XXX.XXXって…ウチの会社ですな。
ん?lfs…?
これバージョンアップで上げようとしてるアセットのせいか!!!これが大量アクセスでDoS扱いされてんのか!!
ということで原因は判明しました\(^o^)/

解決策

必要な作業なのでホワイトリストに追加しなければ、ということでホワイトリストへ追加。
グローバルIPはCMANやcurlでそういうサイトにアクセスして調べます。

curl inet-ip.info

gitlabサーバにアクセスし、/etc/gitlab/gitlab.rbrack_attack_git_basic_authにあるip_whitelistの配列に会社のグローバルIPを追加。
コメントアウトされてる場合はそれ解除。

gitlab_rails['rack_attack_git_basic_auth'] = {
  'enabled' => true,
  'ip_whitelist' => ["127.0.0.1", '会社のグローバルIP'],
  'maxretry' => 10,
  'findtime' => 60,
  'bantime' => 3600
}

反映するために以下実行。

gitlab-ctl reconfigure

これでOK!!!
無事gitlabから拒否られることはなくなりました。

最後に

元々ホワイトリストに会社のGIP登録はあったんですが、古かった。
ネット回線を数年前に変えたため、GIP変わってたんですよね…
それの登録が漏れていた。
インフラ担当者は募集してるんですけどね!
決まったらこのあたりの管理お願いしたいなぁ。それまではエンジニア皆で頑張って保守!

Discussion