先日書いたRustのスクリプト
https://qiita.com/nariita/items/ec3ff5604591f27f9143
これをちょこっと改造して、Linux上で1日の中でどういうプロセスが起動されているのか追ってみました。
↓こちらはそのログの先頭です
2025-09-16 00:00:31 PID=14308 EXE=/usr/sbin/logrotate CMD=["/usr/sbin/logrotate", "/etc/logrotate.conf"]
2025-09-16 00:01:01 PID=14313 EXE=/usr/bin/bash CMD=["/usr/bin/bash", "/bin/run-parts", "/etc/cron.hourly"]
2025-09-16 00:01:01 PID=14315 EXE=/usr/bin/basename CMD=["basename", "/etc/cron.hourly/0anacron"]
2025-09-16 00:01:01 PID=14316 EXE=/usr/bin/logger CMD=["logger", "-p", "cron.notice", "-t", "run-parts[14313]", "(/etc/cron.hourly) starting 0anacron"]
2025-09-16 00:01:01 PID=14317 EXE=/usr/bin/bash CMD=["/usr/bin/sh", "/etc/cron.hourly/0anacron"]
2025-09-16 00:01:01 PID=14319 EXE=/usr/bin/cat CMD=["cat", "/var/spool/anacron/cron.daily"]
2025-09-16 00:01:01 PID=14320 EXE=/usr/bin/date CMD=["date", "+%Y%m%d"]
2025-09-16 00:01:01 PID=14323 EXE=/usr/sbin/anacron CMD=["/usr/sbin/anacron", "-s"]
2025-09-16 00:01:01 PID=14318 EXE=/usr/bin/sed CMD=["sed", "1i\\\n/etc/cron.hourly/0anacron:\\\n"]
2025-09-16 00:01:01 PID=14325 EXE=/usr/bin/basename CMD=["basename", "/etc/cron.hourly/0anacron"]
2025-09-16 00:01:01 PID=14326 EXE=/usr/bin/logger CMD=["logger", "-p", "cron.notice", "-t", "run-parts[14313]", "(/etc/cron.hourly) finished 0anacron"]
2025-09-16 00:01:01 PID=14322 EXE=/usr/bin/cat CMD=["cat", "/sys/class/power_supply/*/type"]
2025-09-16 00:04:31 PID=14327 EXE=/usr/libexec/nm-cloud-setup CMD=["/usr/libexec/nm-cloud-setup"]
2025-09-16 00:10:31 PID=14335 EXE=/usr/libexec/nm-cloud-setup CMD=["/usr/libexec/nm-cloud-setup"]
2025-09-16 00:12:16 PID=14344 EXE=/usr/libexec/nm-dispatcher CMD=["/usr/libexec/nm-dispatcher"]
2025-09-16 00:12:16 PID=14348 EXE=/usr/bin/systemctl CMD=["systemctl", "--no-block", "restart", "nm-cloud-setup.service"]
2025-09-16 00:12:16 PID=14349 EXE=/usr/bin/systemctl CMD=["systemctl", "-q", "is-enabled", "nm-cloud-setup.service"]
2025-09-16 00:12:16 PID=14351 EXE=/usr/bin/bash CMD=["/usr/bin/bash", "/usr/lib/NetworkManager/dispatcher.d/11-dhclient", "eth0", "dhcp4-change"]
2025-09-16 00:12:16 PID=14352 EXE=/usr/bin/bash CMD=["/usr/bin/sh", "/usr/lib/NetworkManager/dispatcher.d/20-chrony-dhcp", "eth0", "dhcp4-change"]
2025-09-16 00:12:16 PID=14353 EXE=/usr/bin/mkdir CMD=["mkdir", "-p", "/run/chrony-dhcp"]
...
cronだったり、dhcpだったり、OSらしいプロセスが走っていますね。
登場人物
定期的に動作するプロセス | 実行回数 | 役割 |
---|---|---|
/usr/libexec/nm-cloud-setup | 約20回 | NetworkManager のクラウド用設定を反映。DHCP更新やクラウド環境でのネットワーク設定を再適用。5〜10分おきに起動しているため定期ジョブとして動作している。 |
/usr/bin/python3.9(dnf makecache) | 数回 | パッケージマネージャ DNF のメタデータキャッシュ更新。セキュリティアップデート前に最新のリポジトリ情報を取得。 |
/usr/libexec/nm-dispatcher | 数回 | ネットワーク変更イベントをフックし、下位のbash/systemctl/chronycを呼び出して時刻同期やサービス再起動を行う。 |
/usr/sbin/CROND(cron.hourly, cron.daily) | 1日数回 | 日次・毎時ジョブを実行。logrotate や systemd-tmpfiles などがここから呼ばれる。 |
/usr/lib/systemd/systemd(既存サービスの再起動) | 数回 | systemd本体によるユニットの再起動や状態確認。nm-cloud-setupの再起動トリガーなども含む。 |
時系列タイムライン:1日の流れ
ログをChatGPTにサマライズしてもらいました。
深夜帯(00:00〜03:00)
00:00:31 – logrotate が起動し、ログファイルをローテーション
00:01:01 – cron.hourly が動作、anacron により日次ジョブが呼ばれる
00:04:31 以降 – nm-cloud-setup が定期的に起動(約5分おき)。これは NetworkManager のクラウド用設定を確認するプロセス。
00:12:16 – nm-dispatcher が発火、chronyc reload sources が呼ばれ、NTP同期が更新。
00:26:17 – sshd が新しい接続を受け付け、bash シェルが起動。tmux セッションへ接続するログイン操作も観測。
朝〜昼(03:00〜12:00)
03:51 – cron.daily が実行され、日次メンテナンススクリプトが動く。
04:00〜06:00 – 再び nm-cloud-setup と nm-dispatcher の周期的動作。
05:17 – dnf makecache が起動、パッケージ情報を更新。
05:23〜05:25 – 複数回の sshd 接続。おそらく管理者のログインやSFTP転送。
午後〜夜(12:00〜23:59)
午後も引き続き5〜10分ごとに nm-cloud-setup が起動。
夕方〜夜間も cron.hourly が毎時01分に発火し、anacron経由で日次ジョブ確認。
夜間も sporadic な ssh ログイン、dnf makecache の再実行が確認できる。
不審な挙動
00:26:17 – sshd が新しい接続を受け付け、bash シェルが起動。tmux セッションへ接続するログイン操作も観測。
ここは私の操作ですね、tmuxを使ってました。
05:23〜05:25 – 複数回の sshd 接続。おそらく管理者のログインやSFTP転送。
ここ、身に覚えありません。
私は熟睡中なので何も操作していないはずです。
ログを眺めてたら、結構なssh接続が試行されていたことがわかりました。
パスワード認証で接続しようとして、でも公開鍵認証にしてるから意味がなくsshセッションが終了していて、攻撃に失敗しているようでした。
※別件で、rootでパスワードなしで接続を許可したサーバを用意して
起動スクリプトを標準shellから自作したshellに差し替えてハニーポットで待ち構えてみました。
接続はされるものの何もコマンドを打つことなく切断されるという、何をしたかったのかわからない挙動がありました。
この辺りはまた進展があり次第、記事にします。
感想
他の標準コマンドを用いて動作してるのが意外でした。
例えば、nm-dispatcherの子プロセスとしてmkdirを使っていたり。
パフォーマンス的には、一つのバイナリの中で全て実装してしてそうな気もしましたが。
「UNIXという考え方: その設計思想と哲学」 という本でも言及してますが、コマンドを繋ぎ合わせてうまくやるというUNIXの思想通りですね。