「DevSecOpsThon at GMO kitaQ」に参加したらすごく良かった件！！

# 目次
1. [この記事について](#この記事について)
1. [DevSecOpsThon at GMO kitaQとは](#devsecopsthon-at-gmo-kitaqとは)
1. [DevSecOpsThonとは](#devsecopsthonとは)
1. [参加条件](#参加条件)
1. [筆者のレベル感](#筆者のレベル感)
1. [DevSecOpsThon at GMO kitaQの内容](#devsecopsthon-at-gmo-kitaqの内容)
1. [感想](#感想)
1. [まとめ](#まとめ)

# この記事について
私は今回、GMOの開催する「DevSecOpsThon at GMO kitaQ」に参加しました。

そのハッカソンでの経験を皆さんに共有しようと思い、この記事を書いています。

そして、自分は今までWeb関連の勉強を中心にしてきて、インフラに対して深い知識などがあるわけではないので、ハッカソンで扱われた課題の技術的な詳しい説明や解説は、他の参加者の方々にお任せして、ほぼインフラ初心者の私が、DevSecOpsがテーマのハッカソンに初めて参加して感じたことを中心に、この記事を記したいと思います。

# DevSecOpsThon at GMO kitaQとは
[GMOの開催する「DevSecOps」がテーマのハッカソン](https://developers.gmo.jp/kitaq/devsecopsthon2023/)です。

※GMO kitaQというのは、GMOの北九州オフィスの名称。

今回（2023年）は、4月の30日、31日の2日間開催されました。

GMOのオフィスの写真（2日目終了前）👇
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2601678/2b747207-e36e-0f1c-09e5-938fc6893cbb.png)

# DevSecOpsThonとは
今回参加したGMOインタネットグループの「DevSecOps」の定義は下記の通りです👇
> 「DevSecOpsThon」とは、【開発（development）】【セキュリティ（security）】【運用（operation）】の
3つの要素を融合したDevSecOpsを学びながら、チームで協力して特定のお題に挑戦するコンテストです。
弊社のDevSecOpsThonの特徴として、サーバー構築・運用に焦点を当てたコンテンツを中心にしている
https://developers.gmo.jp/kitaq/devsecopsthon2023/

# 参加条件
参加するにあたり応募条件は下記の条件でした👇
> ITエンジニアを目指す学生
　・必須条件：ノートPCを持参できる方、両日オフラインで参加できる方
　　　　　　　Linuxの基本的な知識とコマンド操作（ディレクトリ操作やがファイル編集等）ができる方
　・推奨条件：Webサーバーの構築経験が有る方
また、事前にSSHコンソール（Tera Term, RLogin等）のご準備をお願いいたします。
ご自身のお好きなもので問題ございません。
https://developers.gmo.jp/kitaq/devsecopsthon2023/

# 筆者のレベル感

私のレベル感としては下記の通りです
- プログラミング歴（約2年）
- 情報系の大学に1年半通っている
- 基本的にWeb系のプログラミングを中心に学んできた。
（簡易的なアプリは個人開発で数個作成）
- 経験した言語
    - HTML
    - CSS
    - JavaScript
    - Python
    - C

インフラに関する経験
- 基本的なLinuxコマンドはわかる
- 応用情報技術者試験を勉強するにあたり、全体的な基礎は勉強した。
- つい最近、Dockerに興味を持ち、Dockerを軽く勉強中

なので、特にインフラが専門なわけではないが、基本的な概念くらいは知っているというレベル感で今回「DevSecOpsThon at GMO kitaQ」に挑戦しました。

# DevSecOpsThon at GMO kitaQの内容
2日間で10個のお題に挑戦してチーム対抗でスコアを競うといった形式のハッカソンでした。

課題の内容を簡易的に下記にまとめておきます👇
1. sshを使ってリモートサーバ上のファイルの中にあるキーワードを確認する（シンプルにssh接続）
1. 用意されたリモートサーバからGMOのページを取得しようとしても正しいレスポンスが得られない場面への対処（DNS(resolve.conf)の設定（名前解決））
1. 2台ののサーバである片方のサーバから片方のサーバへsshで接続ができない場合への対処（Fail2banを設定）
1. webサーバーからdbサーバーにローカル経由でアクセスできるよう設定する課題（FWの設定とdbサーバのローカル側のインターフェースをup）
1. Zabiixによるサーバ監視（シンプルにZabbixを使ってサーバを監視して、通知を送る）
1. ブルートフォース攻撃への対策<br>（アクセスログを見て、不審なアクセスを見つけて遮断 or 不審ではないアクセスを見つけ、ホワイトリストを作成して遮断）
1. WordPressのパフォーマンスチューニングチューニング<br>（ngixとsql(MariaDB)のチューニング。WordPressのプラグインを使う..etc<br>※具体的には、キャッシュ使ったり、画像データを圧縮したり...etc）
1. log4jの情弱性をついて攻撃対象のサーバから環境変数に設定されたキーワードを取得する<br>（脆弱性の内容をしっかり理解し、用意されていたJavaファイルを使い、脆弱性を突いたリクエストを送りキーワードを取得）
1. ダウンタイムを少なくWordPressのサーバを移行<br>（移行先のサーバを構築（データの転送とサーバの設定）＋DNS設定）
1. カーネルをアップデートした際にzfsのモジュールが上手く読み込まれない問題への対処<br>（モジュールをインストールする（便利なコマンドがあったらしい。この問題は難しくてしっかりは理解できなかった。））
1. チームでの2日間の取り組みをまとめて発表

※1番のsshが0番目の問題という扱いで、最後の11番が最後の最終課題という扱いでした。

※自分の参加したチームは3位でした。🥉

# 感想
今回の「DevSecOpsThon at GMO kitaQ」参加して感じたことは大きく３つあります。

### 1. ITの世界が広がった🌏
1つ目がITの世界が広がりました。

具体的には、下記の2点で自分にとってのITの世界が広がりました。
- イベント参加を通じてのDevSecOpsの世界を知れた
    
    今までWebプログラミングを中心に勉強や実装をしてきたので、DevSecOpsThonの実装を通じて、今までなんとなく知っていたインフラの世界を今までよりも高い解像度で知ることができました。

- ほかの参加者との出会いで低レイヤーの世界を知れた

    今回、DevSecOpsがテーマということで周りの参加者は、低レイヤーに興味を持ち、勉強している人が多かったです。<br>なので、普段Webの技術を中心に学んでいる自分とは違う視点の参加者たちとたくさん話せて、ある分野を深く追及していくことの大切さや面白さを知ることができました。

### 2. 知っていること≠できること（この二つは明確に違う）🙅

今回のハッカソンに参加して、「知っていること」と「できること」は明確に違うと感じました。

というのも、今回のハッカソンで取り扱った内容自体は、今までに大学や独学で学んできたこともたくさんありました。

しかし、実際に、ケーススタディ形式の問題として実装してみようとした場合、とても難しく感じました。

なので、普段、Webの勉強で実際にコードを書いて学ぶように、インフラの分野も座学で知識を学ぶだけでなく、実際に構築するというステップも大事にすることが大切だと感じました。

## 3. コンピュータにはロマンがある。💻
これが一番、皆さんに伝えたいことなのですが、普段、ただ便利なサービスを使ったり、便利な道具を使って開発などをしていると、気づかないようなロマンが抽象化されたコンピュータの内部にはたくさん詰まっています。

そして、今回参加した「DevSecOpsThon at GMO kitaQ」は、普段Web周りを勉強している自分にとって、普段あまり触れられないようなコンピュータのロマンに触れることができるハッカソンだったと思います。

個人的に、一番ロマンを感じた写真（笑）👇
![PXL_20230429_035541739.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2601678/66ed6968-9edc-c5ec-5697-96e3227a5d38.jpeg)

# まとめ
Webアプリ開発のハッカソンに比べたら、DevSecOpsなどのインフラをテーマしたハッカンは少ないと思うので、今回参加できてよかったです。

そして、自分のレベル感を見て頂いてわかるように、インフラが得意でなくても、参加したい気持ちがあれば参加できるチャンスはあると思います。

なので、是非、みなさんも機会があったら、このようなハッカソンに参加してみることをお勧めします😁