1. なぜ自分でチェックする力が必要か
個人開発者や小規模事業者にとって、専任のセキュリティ担当者を置くのは現実的ではありません。とはいえ、自分のサーバーで何が起きているかを最低限把握できないと、異常が起きても気づけません。
幸い、今はChatGPTやClaudeのようなAIに「このコマンドの結果はどういう意味?」と聞きながら学べる時代です。コマンドを丸暗記する必要はなく、「何を確認すべきか」の地図さえ持っていれば、あとはAIと一緒に読み解けます。
2. 今すぐ使える10コマンド
① 現在ログイン中のユーザーを確認
who 身に覚えのないユーザーがログインしていないか確認します。
② ログイン履歴を確認
last -20 直近のログイン履歴を新しい順に表示します。見慣れないIPアドレスや深夜の不自然な時間帯のログインがないかチェックします。
③ 実行中のプロセスを確認
ps aux --sort=-%cpu | head -20 CPUを大量に使っているプロセスの一覧です。仮想通貨の不正マイニング(クリプトジャッキング)は、見慣れないプロセス名でCPUを常時使い切っているのが典型的なサインです。
④ 開いているポートを確認
ss -tulnp 外部からアクセス可能な状態になっているポートの一覧です。使っていないサービスが公開されていないか確認します。
⑤ sudo権限を持つユーザーを確認
getent group sudo 管理者権限を持つユーザーが想定通りかを確認します。
⑥ 最終ログイン失敗を確認
lastb | head -20 ログインに失敗した試行の履歴です。大量にある場合はブルートフォース攻撃を受けている可能性があります。
⑦ ディスク使用量の急な変化を確認
du -sh /* 2>/dev/null | sort -rh | head -10 身に覚えのない大容量ファイルは、不正なデータの保管場所にされている可能性があります。
⑧ crontab(自動実行タスク)を確認
crontab -l && sudo ls /etc/cron.d/ 侵入されたサーバーでは、攻撃者が自分の裏口を維持するためにcronへ不審なタスクを仕込むことがあります。
⑨ 未適用のセキュリティアップデートを確認(Ubuntu/Debian)
apt list --upgradable 2>/dev/null | grep -i security 既知の脆弱性が放置されていないか確認します。
⑩ ファイアウォールの状態を確認
sudo ufw status verbose ファイアウォール自体が無効になっていないか、想定外のポートが許可されていないかを確認します。
3. わからない出力はAIに聞く
例えばps auxの結果に見慣れないプロセス名があった場合、そのままAIに貼り付けて「このプロセスは何をしているか、危険性はあるか教えて」と聞くだけで、多くの場合は的確な解説が返ってきます。
「以下は`ps aux --sort=-%cpu`の出力です。不審なプロセスがあれば指摘し、それぞれ何をするプロセスか教えてください」
コマンドの意味を一つひとつ検索する手間が省け、結果として学習速度も上がります。「わからないことはAIに聞きながらでも、まず自分の手を動かして確認する」ことが最大のポイントです。
4. 定期チェックを習慣にする方法
上記10コマンドをまとめたシェルスクリプトを1本作り、週1回cronで実行してログをメールやSlackに飛ばすだけでも、簡易的な監視体制になります。難しく考えず、「見る習慣を作ること」が最初の一歩です。
まとめ
- who・last・ps・ss・crontabなど、基本コマンドだけでも異常の多くは発見できる
- コマンドの意味や出力の解釈はAIに聞きながら学べる
- 1回で終わらせず、定期的に確認する仕組み化が重要