ゲーム感覚でLinuxコマンドを学べるOverTheWire Banditを勧めたい!
はじめに
OverTheWire(https://overthewire.org) は、Linuxコマンドやセキュリティの基礎を楽しく学べるゲーム形式の学習サイトです。
筆者はAWSの構築や運用に従事しており、日頃からもっとLinuxに詳しければこの作業がもっと確実に、そして早くなるのに⋯と思っていました。
そこで学習サイトを探していたところこのサイトにたどりついたので、実力試しも兼ねて、「Bandit」に挑戦してみました!
OverTheWireとは
- ゲーム感覚でLinuxコマンドを学べる無料の学習サイト
- SSHで実際のサーバーに接続して問題を解く実践的な体験ができる
- 段階的に難易度が上がるので、初心者でも楽しく少しずつ学べる
この記事はこんな人におすすめ
-
Linuxコマンドを学びたい人、学び始めたばかりの人
- 特に「Bandit」は初学者でもわかる簡単なレベルのコマンドから始まるので安心です
-
Linuxコマンドに自信がある人
- ぜひ実力試ししてください!知っていると思ってたのにいざとなると思い出せなかったり⋯
-
コマンドラインに苦手意識がある人
- Linuxコマンドはもはやインフラ担当だけが知ってれば良いものではありません!普段コマンド操作を避けがちな方もこれを機に、ゲーム感覚で楽しく学習を始められます
-
セキュリティに興味がある人
- Banditの後には、より高度なセキュリティ問題もあるようです(筆者は未体験)
これ以降 問題のネタバレあり
筆者が挑戦した問題と解説を見る
挑戦した問題と解説
Level 0
問題:
SSHを使用してゲームにログインすること。接続先ホストは bandit.labs.overthewire.org、ポート番号は 2220。ユーザー名は bandit0、パスワードは bandit0。ログイン後、Level1に進む。
解答を見る
# SSH接続
ssh bandit0@bandit.labs.overthewire.org -p 2220
# パスワード: bandit0
学べるコマンド: ssh
ポイント: ポートを指定するオプションを知っているか
Level 0 → Level 1
問題:
ホームディレクトリにあるreadmeファイルを読んでパスワードを取得する。このパスワードを使って、bandit1ユーザーでSSHログイン。
解答を見る
# SSH接続
# ファイルを読む
cat readme
学べるコマンド: cat
Level 1 → Level 2
問題:
-という名前のファイルを読み次のパスワードを取得する。このパスワードを使って、bandit2ユーザーでSSHログイン。
解答を見る
# 相対パスや絶対パスで指定
cat ./-
# または
cat < -
学べるコマンド: 特殊文字を含むファイル名の扱い方
Level 2 → Level 3
問題:
spaces in this filenameという名前のファイルを読みパスワードを取得する。このパスワードを使って、bandit3ユーザーでSSHログイン。
解答を見る
# クォートで囲む
cat "spaces in this filename"
学べるコマンド: スペースを含むファイル名のcatでの扱い方
Level 3 → Level 4
問題:
inhereディレクトリ内の隠しファイルを見つけて読む。このパスワードを使って、bandit4ユーザーでSSHログイン。
解答を見る
cd inhere
ls -la
cat .hidden
学べるコマンド: ls -a(隠しファイルの表示)
Level 4 → Level 5
問題:
inhereディレクトリ内の複数のファイルから、人間が読めるテキストファイルを見つける。このパスワードを使って、bandit5ユーザーでSSHログイン。
解答を見る
cd inhere
file ./*
# 人間が読めるファイルを特定
cat ./-file07
学べるコマンド: file(ファイルタイプの判別)
Level 5 → Level 6
問題:
以下の条件を満たすファイルを見つける
- 人間が読める
- 1033バイト
- 実行可能ではない
このパスワードを使って、bandit6ユーザーでSSHログイン。
解答を見る
find . -type f -size 1033c ! -executable
cat ./maybehere07/.file2
学べるコマンド: find(条件を指定したファイル検索)
Level 6 → Level 7
問題:
サーバー上のどこかにある以下の条件を満たすファイルを見つける
- ユーザー:bandit7
- グループ:bandit6
- サイズ:33バイト
このパスワードを使って、bandit7ユーザーでSSHログイン。
解答を見る
find / -user bandit7 -group bandit6 -size 33c 2>/dev/null
cat /var/lib/dpkg/info/bandit7.password
学べるコマンド: findの高度な使い方、エラー出力のリダイレクト(2>/dev/null)
今回解いた7問で学べたこと
基本的なLinuxコマンドや実践スキル
- ファイル操作:
cat,ls,cd - 検索系:
find,grep,file - リダイレクト:標準エラー出力の処理
- SSHでのリモートサーバー接続
- 特殊な文字やスペースを含むファイル名の扱い方
- 隠しファイルの存在と表示方法
- 条件を指定した高度なファイル検索
私は特に、find の様々なオプションを使いこなすことができてなかったので、非常にためになったと感じています!
楽しかったポイント
ゲーム感覚で学べる
一つ一つの問題をクリアするごとに達成感があり、ちょっとハッカーのような気持ち(?)にもなれて楽しかったです。
実践的な環境
実際のLinuxサーバーで操作できるので、文章を読んだり動画を見たりするよりも実際の知識がついた気がします。
答えを調べてしまったとしても、実際に打ち込んで回答するので、覚えるために、コピペ非推奨です。
まとめ・感想
たまたま見つけた OverTheWire Banditでしたが、普段からLinuxを触っている私にとって、すごくためになるサイトでした。解けない問題があると先に進めない状態が悔しく、それ故、コマンドの学習が捗ります。
私のような負けず嫌いにはオススメです。
Macではない人、Ubuntuが入っていない人、Linuxのコマンドを実際にためせる環境が身近にない人も、実際に触ることができるのは貴重です。
ぜひ一問だけでも試し解きしてみてください!
それでは、次の問題が待っているので、このあたりで失礼します。
参考リンク
- OverTheWire公式サイト: https://overthewire.org/
- Bandit: https://overthewire.org/wargames/bandit/