2026年8月から9月にかけて、初期パスワードを変更していないTelnetやSSH、UPnPの設定不備を突いてIoT機器やルーターがボットネットに組み込まれる被害が相次いで報じられています。OpenAIも2026年9月4日に公開した書簡で、攻撃者が悪用しているのは高度な新手口ではなく「長年放置されたバグ、設定ミス、未修正ソフトウェア、脆弱な認証」だと指摘しました。これは自宅のLinuxサーバーにもそのまま当てはまります。過去ログを調べるjournalctlとは別に、今この瞬間に誰がログインしていて、何が動いているかwps aux --forestだけで即座に洗い出す方法をまとめます。特別なツールのインストートは不要で、Ubuntu・Debianに標準で入っているコマンドだけで完結します。

なぜ「今動いているもの」を見る必要があるのか

警察庁が2026年3月に公表した「令和7年におけるサイバー空間をめぐる脅威の情勢等について」では、ランサムウェア攻撃の侵入経路の6割以上がVPN機器などの未修正の脆弱性や設定不備だったと指摘されています。IoT機器・ルーターのボットネット感染も構図は同じで、初期パスワードのまま放置されたTelnet/SSHと、外部から内部ポートを開けてしまうUPnPの設定が主な侵入口です。

ログ(journalctl/var/log/auth.log)は「過去に何が起きたか」の記録です。一方でwps aux --forestは「今この瞬間」の状態を見るコマンドで、侵入がまさに進行中なら、ログに記録が残る前にここで気づけることがあります。すでにSSHの不正アクセスをログから検知する方法はSSH総当たり攻撃をjournalctlで即検知2026年9月版で扱っているので、今回は「今動いているか」を見る側の点検として使い分けてください。

wwhoで「今ログインしている人」を確認する

wは現在ログイン中のユーザー・接続元・何を実行中かを一覧表示するコマンドです。sudoは不要で、設定変更も一切発生しません(表示するだけ)。

w

出力例(値はすべて架空のものです):

 14:32:10 up 5 days,  3:12,  2 users,  load average: 0.15, 0.10, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
username pts/0    203.0.113.45     09:01    0.00s  0.20s  0.05s w
username pts/1    198.51.100.23    14:28    3:59   0.01s  0.01s -bash

どこを見るか

  • FROM列 — 接続元のIPアドレス。自分が今使っている端末・ネットワーク以外のIPが表示されていたら要注意
  • USER列の人数 — 自分が開いている端末の数と一致するか。ターミナルを1つしか開いていないのに2セッション表示されていたら不一致
  • WHAT列 — そのセッションで今何を実行しているか。-bashで待機中なら普通ですが、聞き覚えのないコマンド名や、後述するダウンローダーのようなものが動いていたら異常

より単純な情報でよければwhoでも代用できます。

who
username pts/0        2026-09-13 09:01 (203.0.113.45)
username pts/1        2026-09-13 14:28 (198.51.100.23)

wは負荷や実行中コマンドまで見えるぶん情報量が多く、whoは接続元と時刻だけをさっと確認したいときに向いています。ディストリによる違いはほぼありません。procpsパッケージに含まれる基本コマンドのため、Ubuntu・Debian・CentOS系のどれでも同じ書式で使えます(最小構成のDockerコンテナなどではprocpsが未インストールで無いことがあり、その場合はsudo apt install procpsで追加します)。

ps aux --forestで「今動いているプロセス」を親子関係ごと確認する

--forestオプションを付けると、どのプロセスがどこから起動されたかがインデントで一目でわかります。sudo無しでも実行できますが、他ユーザーのプロセスも含めて全体を見るにはsudoを付けたほうが確実です(表示するだけで設定変更はありません)。

ps aux --forest

出力例(値はすべて架空のものです):

USER    PID %CPU %MEM COMMAND
root      1  0.0  0.1 /sbin/init
root    890  0.0  0.2 /usr/sbin/sshd -D
sshd   2210  0.0  0.1  \_ sshd: username [priv]
username 2211  0.0  0.2      \_ sshd: username@pts/1
username 2213 12.5  2.1          \_ ./update -o 203.0.113.99:4444
username 2381  0.0  0.3 -bash
username 2402  0.0  0.1  \_ ps aux --forest

どこを見るか

正常なパターン

要注意なパターン

sshdの子プロセスが-bashや普段使うシェル・エディタだけ

sshdセッションの下に聞き覚えのない実行ファイルがぶら下がっている

実行ファイルのパスが/usr/binや自分のホームディレクトリ配下

/tmp/var/tmp/dev/shmなど書き込み可能な一時領域から実行されている

プロセス名がコマンドの内容と一致している

updatekworker0[kthreadd]など正規プロセスに似せた紛らわしい名前

CPU使用率が用途相応

ログインしただけのはずのセッションでCPU使用率が高止まりしている(ボットネットのスキャン・DDoS加担でよく見られる挙動)

上の例では、username@pts/1のSSHセッションの下に./update -o 203.0.113.99:4444という見慣れないプロセスがぶら下がっており、外部のIPとポートを指定して実行されています。これは典型的な要注意パターンです。気になるプロセスが見つかったら、そのPIDを使ってlsof -p 2213ss -tulpnで実際にどこと通信しているかを確認できます。通信先の見方はss -tulpnとlsof -iで通信先点検2026年9月版で詳しく扱っています。

異常を見つけたときにやること

  1. 該当プロセスを止めるkill 2213(反応しなければkill -9 2213)。自分のプロセスなのでsudoは不要な場合が多いですが、他ユーザー名義ならsudo kill -9 2213が必要です。プロセスを止めるだけなら設定変更は発生せず、誤って自分の作業中プロセスを止めてしまっても再実行すれば元に戻ります
  2. 身に覚えのないセッションを切るwで見つけたTTYに対してsudo pkill -KILL -t pts/1のように打つとそのセッションを強制切断できます。自分の別端末を誤って切ってしまっても、再ログインすれば復旧するだけなので実害はありません
  3. パスワードとSSH鍵を確認・変更する:不審な接続が見つかった場合は、該当ユーザーのパスワードを変更し、~/.ssh/authorized_keysに見覚えのない公開鍵が追加されていないか確認します
  4. 自動起動の仕込みが無いか確認するcrontab -lsystemctl list-timersに見覚えのないジョブが追加されていないかも合わせて見ておくと安心です

ここまでの作業はいずれも「表示する」「プロセスやセッションを止める」だけで、システムの設定ファイルを書き換えるものではないため、間違えて実行しても大きな被害にはつながりません。ただし他ユーザーのセッションを切る操作は影響が本人に及ぶため、共用サーバーでは先に一声かけてから行うのが安全です。

常時点検にする場合の注意

wps aux --forestはその場限りの点検コマンドなので、継続的に見張りたい場合は数分おきに手動で打つか、後日の点検習慣に組み込む形になります。あわせてTelnet/SSHの初期パスワード放置とUPnPの設定不備が今回のIoT機器ボットネット拡大の主因とされている以上、ルーターの管理画面でUPnPを無効化し、初期パスワードを変更しているかも一度確認しておくとよいでしょう。sshd自体の設定確認(パスワード認証の無効化など)はsudo/sshバージョン確認2026年9月版|USN照合で脆弱性点検にまとめてあります。

まとめ

wwhoは今ログインしている人と接続元IP、ps aux --forestはそのセッションの下で今動いているプロセスを、それぞれsudo不要・設定変更無しで確認できます。見るべきポイントは「見覚えのない接続元IP」「sshdの下にぶら下がる聞き覚えのないプロセス」「/tmpなど一時領域からの実行」の3つです。異常を見つけたらプロセスとセッションを止め、パスワードとSSH鍵を確認します。ログを遡る点検と、この「今」を見る点検を両方習慣にしておくことで、IoT機器・ルーター経由のボットネット感染のように侵入経路が単純な攻撃ほど早期に気づけます。