オペレーティンス・システムの授業の中でちょっとしたLinux演習を授業中に行うことになった。
Linux 環境は、さくらクラウドの上に準備した。学校の教室にてBYODパソコンを用いて行いたいので、WSL や VMplayer などを各自でインストールして演習を行うことも考えたが、環境が違うと演習が行いづらいので、さくらクラウドを用いることとした。
演習サーバへの接続
教室は http, https での接続しかできないように設定してあるので、通常の方法ではクラウドに接続させるのは困難。そこで、さくらクラウドのサーバは、この演習専用とし、https(443)ポートを ssh に割り当て接続させる。
(( Windows 10 ならば cmd.exe にて )) C:..> ssh -p 443 演習室ID@演習サーバ Password: 演習室のパスワード -- この段階で20秒ほどかかる -- [~]$
CTF形式の演習
簡単に cd , ls , cat や ページャ(more,less,lv) と 漢字コード変換 nkf などを説明し、絶対PATH,相対PATHの概念を説明したあと、CTF形式の演習問題を用意した。
指定したフォルダ /home/Challenge の配下に、以下のフォルダを設け、ファイル内に記載された FLAG{答え} 形式のものを答えてもらう。
- Task1 – 普通に探すだけ
- Task2 – 複数行のファイルで ページャを使わないと見逃す様にしてあるファイルの中から探す。ファイルの中に空白を含むファイル名も置いておく。
- Task3 – cmd.exe などの環境だと文字コードの問題があるので、nkf を使って読ませる。JIS, Shift-JIS, EUC-JP, UTF-8 などばらまいておく。
- Task4 – シンボリックリンクでディレクトリが再起的ループするようにしたディレクトリの中から探す。ハイフンを含むファイル名や、chmod で読めないファイル、入れないディレクトリも置いておく。
- これを通して、chmod , ls -al , などの説明を行う。
- Task5 – セキュリティ意識を持ってもらうための演習。.bashrc には、PATH=.:/usr/bin:/bin となるように設定してある。この状態で、ディレクトリ内に、killall -KILL bash のシェルスクリプトを記載した、ls, cat, more, nkf を置いておく。
- これを通して、サーチPATHの説明を行う。
答えの確認方法
答えといっても、ディレクトリ構造を cd , ls , cat しながら、さらうだけなので、大したことはない。Linux 管理者なら、以下で終わるネタ。
$ find /home0/Challenge -type f -exec nkf -w {} ¥; | grep FLAG