この記事について
TryHackMeの「Linux Fundamentals Part 3」というルーム(Linux Fundamentalsシリーズの完結編)で学んだ内容を、Task単位でまとめたノートです。テキストエディタ、便利なユーティリティ、プロセス管理、自動化(cron)・パッケージ管理・ログ管理という、Linuxを実務で日常的に扱う上での応用スキルが扱われています。
課題の設問や答え(flag)はここには含めていません。あくまで各Taskで学んだ考え方・コマンドの使い方を、自分の理解として整理したものです。
Task 1: Introduction
このルームはLinux Fundamentalsモジュールの第3部(最終回)です。Part 1で基本操作、Part 2でSSH接続・ファイル操作・パーミッションといった土台を固めたところから、Part 3では「日常的によく使う応用ツール」に焦点が移ります。
扱われている4つのテーマは、いずれも実務でLinuxサーバーを扱う際に欠かせないものです。
- テキストエディタ — ターミナル上でファイルを編集するための基本ツール
- 便利なユーティリティ — 日常的な作業を効率化する小さなコマンド群
- プロセス管理 — 今動いているプログラムを把握し、制御する方法
- システム保守(自動化・パッケージ管理・ログ管理) — サーバーを長期的に運用する上で必須の3本柱
「Linux-fu」というのは、カンフー(拳法)の「〜fu」をもじった、Linuxの熟練度・腕前を指すカジュアルな表現です。単にコマンドを知っているだけでなく、実際に使いこなせるレベルを目指す、というニュアンスが込められています。
学習すべき要点
- テキストエディタの基本操作 — サーバー上で設定ファイルなどを直接編集する場面は非常に多いから
- 日常的なユーティリティコマンド — 定型的な作業を素早くこなすための引き出しを増やせるため
- プロセスの考え方と管理コマンド — 「今何が動いているか」を把握することは、トラブル対応やセキュリティ調査の基本だから
- 自動化・パッケージ管理・ログという3つの保守テーマ — サーバーを継続的に安全に運用するための基礎知識になるため
関連キーワード
| キーワード(英語) | 説明 |
|---|---|
| Utility(ユーティリティ) | 特定の作業を助ける、小規模で実用的なプログラム・コマンド |
| Automation(自動化) | 定型的な作業を、人の手を介さず自動で実行させる仕組み |
| Package Management(パッケージ管理) | ソフトウェアのインストール・更新・削除を管理する仕組み |
| Logging(ログ記録) | システムやアプリケーションの動作記録を残す仕組み |
| Process(プロセス) | 現在実行中のプログラムのインスタンス |
Task 2: Deploy Your Linux Machine
Task 2は、Part 2で経験したのと同じ「AttackBoxからSSHでLabマシンに接続する」という流れの再確認でした。
流れをおさらいすると、
- 「Start Lab Machine」でLabマシン(攻略対象)を起動し、IPアドレスを確認する
- 「Start AttackBox」でAttackBox(操作用のクラウドLinuxマシン)を起動する
- AttackBox上のターミナルから
ssh tryhackme@<IPアドレス>でLabマシンにログインする
という3ステップになります。IPアドレスはルームを開くたびに変わるので、コマンドを組み立てるときは、その都度ページ上部に表示されている値を確認する習慣をつけておくとよいです。
学習すべき要点
- SSHでのリモートログインの手順(Part 2の復習) — このルームでも土台になる、最も基本的な操作だから
- デプロイのたびにIPアドレスが変わること — 過去の例をそのままコピーせず、毎回表示された値を確認する習慣が大事なため
関連キーワード
| キーワード(英語) | 説明 |
|---|---|
| Deploy(デプロイ) | 仮想マシンやアプリケーションを起動し、実際に使える状態にすること |
| AttackBox | TryHackMeが提供する、クラウド上でホストされたUbuntu Linuxの攻撃用マシン。ブラウザから操作できる |
| Credentials(認証情報) | ログインに必要なユーザー名・パスワードなどの情報の総称 |
Task 3: Terminal Text Editors
Task 3のテーマは、ターミナル上で動くテキストエディタです。それまでのTaskではecho "内容" > ファイル名のような形でファイルに文字を書き込んできましたが、複数行の文章を書いたり、既存のファイルの一部だけを修正したりする場面では、この方法はかなり不便です。そこで登場するのがnanoやVIMのようなテキストエディタです。
nanoは初心者向けの位置づけで、nano ファイル名と打つだけですぐに編集画面が開きます。画面の下に表示されている^Gや^Xのような記号は、それぞれ「Ctrlキー+対応する文字」のショートカットを表しています。Linuxの世界では、^という記号がよく「Ctrlキー」の意味で使われる、という点も覚えておくとよいです。例えば^Xは「Ctrl + X」で、これがnanoを終了するショートカットになります。
一方のVIMは、より高機能だが習得に時間がかかるエディタです。キーボードショートカットのカスタマイズや、プログラミング言語の構文を色分け表示する「シンタックスハイライト」など、特にソフトウェア開発者から根強い人気があります。また、nanoがインストールされていないミニマルな環境でも、VIM(あるいはその軽量版であるvi)はほぼ必ず入っている、という実務上の利点もあります。CTFやサーバー管理の現場では、どちらか一方だけでなく、両方に最低限触れられるようにしておくと安心です。
学習すべき要点
-
nano ファイル名によるファイルの作成・編集 — GUIのテキストエディタが使えないリモート環境でも、Linuxでは日常的にファイルを直接編集する必要があるから -
^(Ctrlキー)を使ったnanoのショートカット操作(保存・終了・検索など) — 画面下部のヒント表示を読み解ければ、初見のエディタでも迷わず操作できるようになるため -
VIMの特徴(カスタマイズ性・シンタックスハイライト・可用性の高さ) —nanoが使えない環境でも困らないよう、代替エディタの存在を知っておくことが実務上重要だから
関連キーワード
| キーワード(英語) | 説明 |
|---|---|
| nano | 初心者にも扱いやすい、ターミナル上で動くテキストエディタ |
| VIM / vi | 高機能で習得に時間がかかるが、ほぼすべてのLinux環境に存在するテキストエディタ |
| Text editor(テキストエディタ) | ファイルの中身を作成・編集するためのソフトウェア |
| Syntax Highlighting(シンタックスハイライト) | プログラムのコードを、文法要素ごとに色分けして表示する機能 |
| Cheatsheet(チートシート) | コマンドやショートカットなどをまとめた早見表 |
Task 4: General/Useful Utilities
Task 4は、日常的なファイル転送・共有のための3つの手段(wget・scp・Pythonの簡易Webサーバー)をまとめて紹介する内容でした。どれもCTFやペネトレーションテストの現場で「対象のマシンにツールを送り込む」「対象のマシンからファイルを持ち帰る」といった場面で頻繁に使うことになる、実務的にとても重要なテクニックです。
wgetは、URLを指定するだけでWeb上のファイルをダウンロードできるコマンドです。ブラウザでURLを開いてファイルを保存するのと同じことを、コマンドラインだけで完結させられます。
scp(Secure Copy)は、cpのネットワーク版のようなものです。普通のcpはローカルのファイルシステム内でしかコピーできませんが、scpはSSHの仕組みを使って、暗号化された安全な通信で2台のマシン間をコピーできます。書式は「コピー元 コピー先」というシンプルな形で、リモート側はユーザー名@IPアドレス:パスのように書きます。SOURCE(転送元)とDESTINATION(転送先)を入れ替えるだけで、「送る」方向にも「受け取る」方向にも使えるのがポイントです。
3つ目のPythonのhttp.serverモジュールは、Ubuntuに標準で入っているPython3を使って、自分のマシンを一時的に簡易Webサーバーに変えるテクニックです。python3 -m http.serverを実行したディレクトリの中身が、そのままブラウザやwget・curlからダウンロードできる状態になります。CTFで「攻撃対象のマシンに、自分の端末で用意したツールを送り込みたい」というときによく使われる定番の手法です。サーバーを起動したターミナルはそのままコマンドが動き続けている(フォアグラウンドで実行され続ける)状態になるので、ダウンロード側の操作は別のターミナルで行う必要があります。
この方法には「ファイル一覧を見る機能(インデックス機能)がない」という弱点があり、ダウンロードしたいファイルの名前を正確に知っている必要があります。より高機能なツールとしてUpdogという名前も紹介されていますが、まずは標準のhttp.serverの使い方に慣れておくとよいでしょう。
学習すべき要点
-
wgetによるURL経由のファイルダウンロード — CTFや実務調査で、公開されているファイルを手早く取得する基本手段だから -
scpによるSSH経由の安全なファイル転送(SOURCE→DESTINATIONの書式) — 2台のマシン間で暗号化された通信でファイルをやり取りする、実務でも頻出のテクニックだから - Python3の
http.serverモジュールで簡易Webサーバーを立てる方法 — 対象マシンへのツール送り込みなど、CTFやペネトレーションテストで非常によく使われる手法のため - Webサーバーを起動したターミナルはそのまま専有される点 — 操作中に「固まった」と誤解しないよう、別ターミナルを開いて作業する必要があることを知っておくべきだから
関連キーワード
| キーワード(英語) | 説明 |
|---|---|
| wget | URLを指定してWeb上のファイルをダウンロードするコマンド |
| scp (Secure Copy) | SSHを使って2台のマシン間で安全にファイルをコピーするコマンド |
| SOURCE / DESTINATION | ファイル転送における「転送元」と「転送先」を指す用語 |
| http.server | Python3に標準で含まれる、簡易的なWebサーバーを起動するモジュール |
| curl | URLを指定してデータを送受信する、wgetと並んでよく使われるコマンド |
| Foreground process(フォアグラウンドプロセス) | ターミナルを占有し続けて、終了するまでそのターミナルで他の操作ができない状態のプロセス |
| Updog | Python3標準のHTTPServerより高機能な、軽量Webサーバーツール |
Task 5: Processes 101
Task 5は、Linuxにおける「プロセス(Process)」を理解し、操作するための内容でした。
プロセスとPID(Process ID)の関係から始まります。1つ1つ実行中のプログラムには、起動した順番に連番のPID(プロセスID)が割り当てられます。ps(自分のセッションのプロセス一覧)やps aux(他のユーザーやシステム全体のプロセスも含めた一覧)を使うことで、今何が動いているのかを確認できます。topは、それをリアルタイムで(自動更新しながら)表示してくれるバージョンというイメージです。
次に、プロセスを終了させるkillコマンドと、シグナル(Signal)の考え方です。同じ「終了」でも、SIGTERMは後片付けの猶予を与えて丁寧に終了させるシグナル、SIGKILLは問答無用で即座に終了させるシグナル、SIGSTOPは終了ではなく一時停止させるシグナル、というように性質が異なります。「行儀よく終わらせたいのか」「強制的に止めたいのか」を意識して使い分ける必要があります。
「名前空間(Namespace)」は、1つのコンピュータのリソースを、複数のプロセスに小分けにして割り当てる仕組みです。PID 0のプロセス(systemdなど)がシステム起動時に最初に立ち上がり、そこから派生する形で他のプロセスが「子プロセス(Child Process)」として起動していく、という親子関係の考え方も重要です。
systemctlは、このsystemdを操作するためのコマンドです。systemctl [オプション] [サービス名]という形で、start(起動)・stop(停止)・enable(起動時の自動実行を有効化)・disable(無効化)・status(状態確認)の5つの操作ができます。「今すぐ起動/停止するかどうか」と「システム起動時に自動で立ち上げるかどうか」は別の話、という点を混同しないよう注意が必要です。
最後にフォアグラウンド/バックグラウンドの話です。&をコマンドの末尾に付けると、そのコマンドをバックグラウンドで実行しながら、ターミナルで別の作業を続けられます。すでにフォアグラウンドで動いているコマンドをCtrl + Zで一時停止させてバックグラウンドに送り、fgコマンドで再びフォアグラウンドに呼び戻す、という一連の流れも実務でよく使う知識です。
学習すべき要点
- PID(Process ID)と、
ps/ps aux/topによるプロセスの確認方法 — 「今何が動いているか」を把握することは、システムの状態把握やトラブル対応の基本だから -
killコマンドとシグナル(SIGTERM / SIGKILL / SIGSTOP)の違い — 状況に応じて「丁寧に終了」「強制終了」「一時停止」を使い分けられるようになるため - 名前空間(Namespace)とプロセスの親子関係(
systemdとその子プロセス) — プロセスがどう起動し、どう管理されているかの全体像を理解する土台になるから -
systemctlによるサービス管理(start / stop / enable / disable / status) — Webサーバーなど、システム上で動くサービスを制御する、実務で頻出のコマンドだから - フォアグラウンド/バックグラウンドの切り替え(
&、Ctrl + Z、fg) — 時間のかかる処理を止めずに他の作業を並行して進める、実用的なテクニックだから
関連キーワード
| キーワード(英語) | 説明 |
|---|---|
| Process(プロセス) | 実行中のプログラムのインスタンス |
| PID (Process ID) | 各プロセスに割り振られる一意の番号 |
| Kernel(カーネル) | OSの中核部分で、プロセスやハードウェアリソースを管理する |
| ps / ps aux | 実行中のプロセスの一覧を表示するコマンド |
| top | プロセスの状況をリアルタイムで表示するコマンド |
| kill | 指定したPIDのプロセスにシグナルを送り、終了・停止させるコマンド |
| Signal(シグナル) | プロセスに送る、動作を制御するための通知(SIGTERM/SIGKILL/SIGSTOPなど) |
| Namespace(名前空間) | システムのリソースをプロセスごとに分離・割り当てる仕組み |
| systemd | Ubuntuなどで使われる、システム起動時のプロセス管理を担うinitシステム |
| systemctl | systemdを操作し、サービスの起動・停止・自動実行設定を行うコマンド |
| Daemon(デーモン) | バックグラウンドで動き続けるプロセス |
| Foreground / Background | プロセスがターミナルを占有して実行される状態と、裏側で実行される状態 |
補足として、psが表示するプロセスの名前(COMMAND列)は、実行ファイルのパスをそのまま機械的に表示しているわけではありません。プログラムは起動時に自分自身の表示名(argv[0])を自由に書き換えられるため、ps auxの一覧に意味ありげな文字列が紛れ込んでいることがあります。これはCTFでよく使われる出題パターンであると同時に、実務のセキュリティ調査でも「見慣れないプロセス名」がないか目視でチェックする習慣に繋がる話です。逆に攻撃者視点では、この性質を悪用してマルウェアが正規のプロセス名になりすます(Process Masquerading、プロセスの偽装)というテクニックにも応用されます。
Task 6: Maintaining Your System: Automation
Task 6のテーマは「自動化(Automation)」、特にcronという仕組みを使った定期実行の設定方法でした。「毎日決まった時間にバックアップを取りたい」「定期的にログを整理したい」といった、繰り返し行いたい作業を、人の手を介さず自動でこなしてくれる仕組みがcronです。
crontabは、そのcronに「いつ」「何を」実行してほしいかを書き込んでおく特殊なファイルです。1行が1つのジョブ(Job、実行したいタスク)に対応していて、行の先頭から順に、分(MIN)・時(HOUR)・日(DOM、Day of Month)・月(MON)・曜日(DOW、Day of Week)・実行するコマンド(CMD)という6つの項目を、この順番でスペース区切りで書きます。
例えば0 */12 * * * cp -R /home/cmnatic/Documents /var/backups/という行を分解すると、
-
0→ 0分に -
*/12→ 12時間おきに(*/Nは「Nごとに」という意味のワイルドカードの応用形) -
***→ 日・月・曜日はどれでもよい(気にしない) -
cp -R /home/cmnatic/Documents /var/backups/→ 実行する内容
という意味になります。アスタリスク(*)は「その項目については条件を指定しない(=毎回あてはまる)」という意味のワイルドカードで、これを使いこなせると「平日の午前9時だけ」「毎月1日の深夜だけ」のような、かなり柔軟なスケジュールを組めるようになります。
crontabの書式は最初は読みにくく感じやすいので、書式を視覚的に組み立てられるWebツール(Crontab GeneratorやCron Guru)に頼るのも実務ではよくあることです。
また、cronには@rebootのような特別なマクロ(省略記法)も用意されています。0 */12 * * *のような5項目の指定を、よく使う典型的なスケジュールとしてひとまとめにした表現で、代表的なものは以下の通りです。
| マクロ | 意味 |
|---|---|
@reboot |
システムが起動する(再起動される)たびに1回だけ実行 |
@yearly / @annually
|
1年に1回(0 0 1 1 *と同じ) |
@monthly |
1ヶ月に1回(0 0 1 * *と同じ) |
@weekly |
1週間に1回(0 0 * * 0と同じ) |
@daily / @midnight
|
1日に1回(0 0 * * *と同じ) |
@hourly |
1時間に1回(0 * * * *と同じ) |
学習すべき要点
- cronとcrontabの役割(定期実行の仕組みと、その設定ファイル) — バックアップやメンテナンス作業など、繰り返し発生するタスクを自動化する基本手段だから
- crontabの6つの項目(MIN / HOUR / DOM / MON / DOW / CMD)の並び順 — この順番を知らないと、他人が書いたcrontabを正しく読み解けないため
- アスタリスク(
*)による「指定しない」の表現、*/Nのような応用形 — 柔軟なスケジュールを組み立てる、あるいは既存の設定を読み解く上で欠かせない知識だから -
@rebootなどのcron特別マクロ — 標準の5項目形式とは違う書き方があることを知っておかないと、読み解けずに困ってしまうから -
crontab -eで自分のcrontabを編集できること — 実際に自動化を設定する際の、最も基本的な操作だから
関連キーワード
| キーワード(英語) | 説明 |
|---|---|
| cron | 指定したスケジュールに従ってコマンドを自動実行する、Linuxの定期実行の仕組み |
| crontab | cronに実行してほしいスケジュールとコマンドを記述する設定ファイル、およびそれを編集するコマンド |
| cron job | crontabに登録された、定期的に実行される個々のタスク |
| Wildcard(ワイルドカード) | 「任意の値にマッチする」ことを示す記号。crontabでは*が使われる |
| crontab -e | 自分のcrontabを編集するコマンド |
| crontab -l | 自分の現在のcrontabの中身を一覧表示するコマンド |
Task 7: Maintaining Your System: Package Management
Task 7のテーマは、Ubuntuにおけるパッケージ管理(Package Management)でした。
Ubuntuのソフトウェアは「リポジトリ(Repository)」と呼ばれる保管庫からダウンロードされる、というのが基本の考え方です。aptコマンドは、このリポジトリを参照して、ソフトウェアの検索・インストール・更新・削除をまとめて行うための道具です。OS標準のリポジトリだけでなく、コミュニティやサードパーティが提供するリポジトリを追加することで、標準では手に入らないソフトウェアも使えるようになります。
ここで重要な安全対策として登場するのがGPG鍵(GPG Key)です。誰でも自由にリポジトリを追加できてしまうと、悪意のあるソフトウェアが紛れ込むリスクがあります。そこでGPG鍵を使い、「このソフトウェアは間違いなくその開発者が作ったものです」という電子的な証明を検証する仕組みが用意されています。鍵が一致しなければインストールが拒否される、という仕組みが、サプライチェーン(ソフトウェアの供給網)の安全性を支えています。
実際にリポジトリを追加する流れは、大きく分けると次の3ステップになります。
- GPG鍵をダウンロードして信頼リストに追加する
-
/etc/apt/sources.list.d/にリポジトリ情報を記載したファイルを追加する -
apt updateでaptに新しいリポジトリを認識させ、apt installでソフトウェアをインストールする
削除はこの逆で、追加したリポジトリの設定ファイルを削除し、apt removeでソフトウェア自体をアンインストールする、という流れになります。
dpkgという、より低レベルなパッケージインストーラーもありますが、aptを使う利点として強調されているのは「システム更新のたびに、追加したリポジトリの更新も自動的にチェックしてくれる」という点です。単発でパッケージファイルをインストールするだけのdpkgと違い、aptはリポジトリとの継続的な連携を前提にした仕組みになっています。
学習すべき要点
- リポジトリ(Repository)と
aptの関係 — Ubuntuでソフトウェアがどこから来て、どう管理されているかの基本的な仕組みだから - GPG鍵によるソフトウェアの検証の仕組み — 信頼できない・改ざんされたソフトウェアを誤ってインストールしないための、セキュリティ上重要な考え方だから
- リポジトリ追加からインストールまでの流れ(GPG鍵の追加 → リポジトリ情報の追加 →
apt update→apt install) — 実際にサーバーへ新しいソフトウェアを導入する際の、実務でそのまま使う手順だから -
aptとdpkgの違い(リポジトリとの継続的な連携があるかどうか) — パッケージ管理ツールを使い分ける際の判断基準になるため
関連キーワード
| キーワード(英語) | 説明 |
|---|---|
| Repository(リポジトリ) | ソフトウェアのパッケージが保管されている場所 |
| apt (Advanced Package Tool) | Ubuntu/Debian系でソフトウェアの検索・インストール・更新・削除を行うパッケージ管理ツール |
| dpkg | aptよりも低レベルな、個々のパッケージファイルを直接扱うインストーラー |
| GPG (GNU Privacy Guard) | データの暗号化・署名検証に使われるツール。ソフトウェアの提供元を検証する際に使われる |
| add-apt-repository | 新しいソフトウェアリポジトリをシステムに追加するコマンド |
| apt update | リポジトリの情報を最新の状態に更新するコマンド |
| apt install / apt remove | ソフトウェアをインストール/削除するコマンド |
| Integrity(完全性) | データやソフトウェアが改ざんされていないことを保証する性質 |
Task 8: Maintaining Your System: Logs
Task 8のテーマは「ログ(Log)」で、Part 2で少し触れた/varディレクトリの中身を、より詳しく掘り下げる内容でした。
/var/logは、システムやサービスの動作記録がまとまって置かれている場所です。ログは放っておくと際限なく増え続けてディスクを圧迫してしまうため、「ローテーション(Rotating)」という仕組みで、古いログを自動的に圧縮したり、一定期間で削除したりしながら管理されています。
紹介されている3つのサービスは、いずれもセキュリティ監視の観点で重要です。
- Apache2(Webサーバー): 誰が・いつ・何にアクセスしたかを記録する
- fail2ban: ログを監視して、ブルートフォース攻撃(同じアカウントへのログイン試行を繰り返す攻撃)などの疑わしい挙動を検知し、自動的にブロックする仕組み
- UFW(Uncomplicated Firewall): ファイアウォール(不正な通信を制限する仕組み)の動作ログ
特にWebサーバーのログには、access log(アクセスログ、誰がどのページ・ファイルにアクセスしたかの記録)とerror log(エラーログ、サーバー側で発生したエラーの記録)の2種類があります。access logを読むことで、「どのIPアドレスから」「いつ」「どのファイルに」アクセスがあったかを時系列で追うことができ、これはWebサイトへの不審なアクセスを調査する際の基本的な手がかりになります。
Apache2のアクセスログは、Common Log Formatと呼ばれる標準的な書式で記録されています。
<IPアドレス> - - [<日時>] "<HTTPメソッド> <パス> <プロトコル>" <ステータスコード> <転送サイズ> "<リファラー>" "<User-Agent>"
| 項目 | 意味 |
|---|---|
| 先頭のIPアドレス | アクセスしてきたクライアント(訪問者)のIPアドレス |
[日時] |
アクセスがあった日付・時刻 |
"GET /パス HTTP/1.1" |
使われたHTTPメソッド、アクセスされたファイルのパス、HTTPのバージョン |
ステータスコード(200など) |
サーバーの応答結果(200=成功、404=見つからない、など) |
| 転送サイズ | 応答として送られたデータのバイト数 |
"User-Agent" |
アクセスしてきた側のブラウザ・OS情報 |
こうやって1行のログの中に「誰が」「いつ」「何を」「どうやって」アクセスしたかが詰まっており、実際のセキュリティ調査でも、このログを大量に読んで「怪しいアクセスパターンがないか」を探す、という地道な作業がよくあります。
学習すべき要点
-
/var/logがシステム・サービスのログの集約場所であること — 障害調査やセキュリティ調査を行う際に、まず確認することになる場所だから - ログローテーション(Log Rotation)という自動管理の仕組み — ログが無限に増え続けないよう、システム側で工夫されていることを知っておくと運用の理解が深まるため
- access logとerror logの違い、Common Log Formatの読み方 — 「誰が何にアクセスしたか」を実際のログから読み解けるようになるから
- fail2banやUFWのような、ログを活用したセキュリティ監視の仕組み — ログは記録するだけでなく、異常検知や防御にも活用されているという実務的な視点を持てるため
関連キーワード
| キーワード(英語) | 説明 |
|---|---|
| /var/log | システムやサービスのログファイルが置かれるディレクトリ |
| Log Rotation(ログローテーション) | 古いログを圧縮・削除するなどして、ログファイルの肥大化を防ぐ自動管理の仕組み |
| access log(アクセスログ) | 誰が・いつ・どのリソースにアクセスしたかを記録するログ |
| error log(エラーログ) | サーバー側で発生したエラーを記録するログ |
| Common Log Format | Webサーバーのアクセスログでよく使われる標準的な記録形式 |
| fail2ban | ログを監視し、ブルートフォース攻撃などの疑わしい挙動を検知して自動的にブロックするサービス |
| UFW (Uncomplicated Firewall) | Ubuntuで使われる、設定・操作がしやすいファイアウォール |
| Brute Force(ブルートフォース/総当たり攻撃) | パスワードなどを片っ端から試して突破しようとする攻撃手法 |
Task 9: Conclusions & Summaries
Task 9は、Linux Fundamentalsシリーズ全体(Part 1〜3)の締めくくりです。Part 3で扱った内容を改めて整理すると、次の4テーマでした。
- テキストエディタ(
nano・VIM) - 便利なユーティリティ(
wget・scp・Pythonのhttp.server) - プロセス管理(
ps・kill・シグナル・systemctl・フォアグラウンド/バックグラウンド) - システム保守の自動化(
crontab・aptによるパッケージ管理・/var/logのログ確認)
Part 1で基礎、Part 2でSSH接続・ファイル操作・パーミッションという土台を固め、Part 3で「実務で日常的に使う応用ツール」を一通り学んだことで、Linux Fundamentalsシリーズは一区切りとなります。
最後に紹介されている「Bash Scripting」と「Regular Expressions(正規表現)」のルームは、ここで学んだ個々のコマンドを組み合わせて自動化していくための、次のステップにあたる内容です。コマンドを1つずつ手で打つ段階から、スクリプトとして書いてまとめて実行する段階へ進むための、自然な学習の流れになっています。
学習すべき要点
- Linux Fundamentalsシリーズ全体の振り返り(テキストエディタ/ユーティリティ/プロセス/自動化) — Part 1〜3で学んだ知識を1つの流れとして繋げて理解できるようになるから
- 次のステップとしてのBash Scripting・正規表現(Regular Expressions) — 個別のコマンド操作から、自動化・効率化へとスキルを発展させる方向性を把握できるため
関連キーワード
| キーワード(英語) | 説明 |
|---|---|
| Bash Scripting | Linuxのシェル(Bash)上で、複数のコマンドをまとめて自動実行するスクリプトを書く技術 |
| Regular Expression(正規表現) | 文字列のパターンを表現し、検索・置換・抽出などに使う記法 |