「SSHだけ締めておけば安心」と思っていないでしょうか。IPAが2026年に公表した「情報セキュリティ10大脅威2026」では、個人編で「インターネット上のサービスへの不正ログイン」が11年連続で脅威に挙げられており、狙われるのはSSH(リモート操作用のポート)だけではありません。2026年8月時点では、印刷共有のCUPS、ネットワーク機器の自動発見に使うAvahi、ファイル共有のSambaといった、サーバー管理者があまり意識していない「常時待受デーモン(バックグラウンドで待ち続けるプログラム)」経由の不正アクセス報告が増加傾向にあります。この記事ではss -tulpnとsystemctl list-units --type=service --state=runningをセットで使い、見落としがちな待受サービスを自分の手で洗い出して止める手順を、初心者向けに解説します。
なぜSSH以外の待受サービスが見落とされるのか
HashiCorpは2026年1月のブログ記事で「Linuxは設計上安全である」という従来の前提が揺らいでいると指摘しています。原因として挙げられているのは、高度な未知の攻撃手法ではなく、設定ミス・人的ミス・不要なサービスの放置といった地味な要因です。CUPS(印刷)やAvahi(mDNS=同じネットワーク内の機器を自動で見つけ合う仕組み。Appleの「Bonjour」と同種の技術)は、デスクトップ用のパッケージを一緒にインストールした際に自動で有効化され、そのままサーバー用途でも動き続けているケースが多くあります。管理者は「SSHのポート22さえ守れば良い」と考えがちですが、631番(CUPS)や5353番(Avahi)、445番(Samba)が外部に開いたままだと、それ自体が攻撃の足がかりになります。
さらに、2026年7月から8月にかけてはLinuxカーネルの権限昇格の脆弱性(CVE-2026-31431「Copy Fail」、CVE-2026-43284/CVE-2026-43500「Dirty Frag」など)が相次いで報告されました。これらは単体で外部から侵入できる脆弱性ではありませんが、「まず何らかの手段でサーバーに低い権限でアクセスされ、その後カーネルの脆弱性でroot権限まで奪われる」という2段階の攻撃で悪用されます。つまり、不要な待受サービスを減らして「最初の足がかり」を作らせないことが、こうした権限昇格リスクへの実質的な対策にもなります。SSH自体の設定点検はSSHログ点検2026年8月版|今すぐ締めるべき設定3つで扱っているので、あわせて確認してください。
ss -tulpnで待受ポートを洗い出す
まず、今このサーバーがネットワーク越しに何を受け付けているかを確認します。
sudo ss -tulpn何を見ているか:TCP(-t)とUDP(-u)で、外部からの接続を待ち受けている(-l)ポートと、それを開いているプログラム名(-p)を、名前解決せず数字のまま(-n)一覧表示します。sudoを付けないとプログラム名の欄が空欄になることがあるため、必ずsudo付きで実行してください。設定変更は行わないコマンドなので、実行しても環境に影響はありません。
出力例(一部を抜粋・簡略化しています):
Netid State Local Address:Port Process
tcp LISTEN 127.0.0.1:631 users:(("cupsd",pid=812))
tcp LISTEN 0.0.0.0:22 users:(("sshd",pid=950))
udp UNCONN 0.0.0.0:5353 users:(("avahi-daemon",pid=723))
tcp LISTEN 0.0.0.0:445 users:(("smbd",pid=1102))判断のポイントは「Local Address」の先頭部分です。
127.0.0.1:631のように127.0.0.1(自分自身)だけに絞られていれば、外部からは到達できないため緊急性は低めです。0.0.0.0:445のように0.0.0.0(すべてのネットワークインターフェース)で待ち受けている場合、サーバーがインターネットに直接つながる環境(クラウドVPS等)なら、世界中からアクセスできる状態になっている可能性があります。特にSambaの445番は要注意です。- 覚えのないProcess名(見たことのないプログラム名)が並んでいる場合は、それだけで異常のサインです。
ps aux | grep プロセス名で起動元やコマンドラインを確認し、身に覚えがなければ即座に止めて調査してください。
systemctl list-unitsで常駐デーモンを突き合わせる
ssだけでは不十分な理由が2つあります。1つは、cupsdやavahi-daemonといったプロセス名を見ても、それが何のサービスで、なぜ動いているのか初心者にはピンとこないこと。もう1つは、ソケットアクティベーション(普段は待機専用の窓口だけが起動していて、実際にアクセスが来た瞬間に本体のサービスが立ち上がる仕組み)のサービスは、アクセスが来るまでssの一覧に本体プロセスとして出てこないことがある点です。そこで、稼働中のサービスを名前ベースで一覧表示するコマンドを追加で実行し、突き合わせます。
systemctl list-units --type=service --state=running何を見ているか:現在起動中(running)のsystemdサービスを一覧表示します。こちらも参照のみで設定は変更しません。sudoは不要です。
出力例(抜粋):
UNIT LOAD ACTIVE SUB DESCRIPTION
cups.service loaded active running CUPS Scheduler
avahi-daemon.service loaded active running Avahi mDNS/DNS-SD Stack
smbd.service loaded active running Samba SMB Daemon
ssh.service loaded active running OpenBSD Secure Shell serverこの一覧とss -tulpnのProcess名を照らし合わせることで、「cupsdという見慣れないプロセスが631番を開けていたが、正体はcups.service=印刷サービスだった」というように、目的が分からない待受サービスを特定できます。以下は、サーバー用途でよく見落とされる代表的な3サービスです。
サービス | ポート | 本来の用途 | サーバーで不要な理由(多くの場合) |
|---|---|---|---|
CUPS(cups.service) | TCP 631 | ネットワーク経由の印刷 | プリンタを接続しないサーバーには不要 |
Avahi(avahi-daemon.service) | UDP 5353 | mDNSによる機器の自動発見 | 固定IPで運用するサーバーには不要なことが多い |
Samba(smbd/nmbd.service) | TCP 445, 139等 | Windows等とのファイル共有 | 意図して使っていなければ不要 |
不要なサービスを止める・元に戻す方法
洗い出した結果、使っていないサービスが見つかったら、以下のコマンドで止めます(すべてsudoが必要です)。
sudo systemctl disable --now cups.service
sudo systemctl disable --now avahi-daemon.service avahi-daemon.socket
sudo systemctl disable --now smbd.service nmbd.service何をしているか:--nowは「今すぐ停止する」と「次回起動時に自動起動しない設定にする」を同時に行うオプションです。片方だけ行いたい場合はsystemctl stop(今だけ止める)とsystemctl disable(自動起動だけ止める)を分けて実行することもできます。
元に戻す方法は簡単です。必要になったら次のコマンドで即座に復旧できます。
sudo systemctl enable --now cups.serviceただし注意点として、「そのサーバーで実際に印刷やファイル共有を使っている」場合は止めてはいけません。その場合は、サービス自体は残したまま、ファイアウォールで接続元を社内LANなどに絞り込む方法を検討してください(sudo ufw statusで現在の許可ルールを確認できます)。止めるべきか迷ったときは、まずsystemctl status サービス名でそのサービスがいつから動いていて誰が有効化したかを確認し、判断がつかなければ無理に触らないのが安全です。もし不審な接続やログイン試行の痕跡が気になる場合は、last/lastbログイン監査2026年8月版|侵入痕跡の見方も参考にしてください。
Ubuntu/Debian以外での違い
この記事のコマンドはUbuntu 24.04 LTSやDebian 12を基準にしていますが、systemdを採用しているディストリビューションであればss・systemctlのコマンド自体はほぼ共通です。違いが出やすいのは以下の点です。
- ファイアウォール:Ubuntu/Debianは
ufwが標準ですが、Rocky LinuxやCentOS系はfirewalld(sudo firewall-cmd --list-allで確認)が標準です。 - 初期インストール状態:Rocky Linux等のサーバー向け最小構成イメージでは、AvahiやCUPSがそもそも入っていないことも多く、その場合は今回の点検で該当行が出てきません。
- パッケージ管理:サービスを完全に削除したい場合、Ubuntu/Debianは
sudo apt remove cups、Rocky/CentOS系はsudo dnf remove cupsとコマンドが異なります。まずはdisable --nowで止めて様子を見て、不要と確信できてから削除する順番が安全です。
まとめ
SSHの設定を締めるだけでは、CUPS・Avahi・Sambaのような「動いていることを忘れがちなサービス」が抜け道になります。sudo ss -tulpnで外部に開いているポートを洗い出し、systemctl list-units --type=service --state=runningで正体を確認、使っていなければsudo systemctl disable --nowで止める――この3ステップは設定ファイルを書き換えるものではなく、必要になればいつでもenable --nowで元に戻せます。月1回、この点検を習慣にするだけで、見落としがちな待受サービス経由の不正アクセスリスクを大きく減らせます。