Linuxサーバー同士でディレクトリを効率よく同期させる際、バックグラウンドで常駐させて使う「rsyncのデーモンモード(rsyncd)」。
非常に便利で高速なツールですが、初期設定のまま(デフォルト状態)で運用していると、セキュリティ上の重大な穴(情報漏洩の引き金)になりかねない仕様があるのをご存知でしょうか。
今回は、「rsyncdはデフォルトで共有モジュール名を公開しているのか?」という疑問への回答と、今すぐに行うべき対策について解説します!
🚨 結論:デフォルトだと「モジュール名」は丸見え!
結論から言うと、rsyncdはデフォルト状態で、設定されているすべての共有モジュール名を外部に対して公開(リスト表示)する設定になっています。
例えば、認証機能などを付けずにrsyncdを起動している場合、外部の第三者が以下のコマンドを叩くだけで、そのサーバーにどんな共有ディレクトリ(モジュール)が存在しているのかが、いとも簡単に一覧で表示されてしまいます。
$ rsync rsync://[対象サーバーのIPアドレス]/
実行結果のイメージ
backup_dir "System Backup"
web_root "Production Web Root"
secret_data "Confidential Data"
このように、ユーザー名やパスワードを入力しなくても、「どんな名前の共有スペースが存在しているか」が丸見えになってしまうのです。
🔍 なぜモジュール名が漏れると危険なのか?
「名前がバレるだけで、中身のファイルをダウンロードされなければ大丈夫では?」と思うかもしれません。しかし、攻撃者(ハッカー)の視点に立つと、これは非常に有力な情報になります。
-
攻撃対象(パス)の特定につながる: モジュール名が判明すると、攻撃者は「
rsync://IPアドレス/secret_data/」に対して、ブルートフォース攻撃(総当たり)や、認証の隙を突いたファイルの不正ダウンロードを試みやすくなります。 -
システム構成の情報漏洩: モジュール名やそれに添えられたコメントから、「このサーバーはバックアップサーバーだな」「ここに社外秘データがあるな」といった内部のシステム構造が筒抜けになってしまいます。
🛠️ 対策:list = false を設定ファイルに追記する
このモジュール名の「大公開仕様」を止め、外部からの着信に対して「何も一覧表示させない(隠蔽する)」ようにするには、rsyncdの設定ファイル(通常は /etc/rsyncd.conf)を1行修正するだけでOKです。
設定手順
-
/etc/rsyncd.confをテキストエディタで開きます。 -
全体(グローバルセクション)、または隠したい特定のモジュールセクション内に
list = falseを追記します。
# /etc/rsyncd.conf の例
[secret_data]
path = /data/secret
comment = Confidential Data
read only = true
# 💡 ココを追記!外部からの非対話一覧表示から隠す
list = false
-
設定を保存後、rsyncdサービスを再起動します。
Bash$ sudo systemctl restart rsyncd
対策後の挙動
この設定を行った後に、先ほどの確認コマンド(rsync rsync://[IPアドレス]/)を外部から叩いても、何も表示されなくなります(空の結果が返る)。
もちろん、正しいモジュール名を知っている正規のクライアント(例:rsync rsync://IPアドレス/secret_data)からは、通常通り同期やアクセスが可能です。
📝 まとめ:インフラ構築時は「list = false」をお忘れなく!
rsyncdの仕様は「デフォルト=親切(使いやすいように一覧を出す)」になっているため、構築時に明示的に閉じないとセキュリティリスクになります。
インターネットに面しているサーバーはもちろん、社内ローカルネットワーク環境であっても、不要な情報は隠しておくのがセキュリティの鉄則(最小特権・情報の最小化)です。
rsyncdを構築する際は、設定ファイルに必ず list = false を入れる、そして合わせて hosts allow によるIP制限や認証(auth users)を設定する、という一連の流れをセットで覚えておきましょう!
