EC-CUBE運用におけるSSH authorized_keysファイルのセキュリティ対策

公開:更新:脆弱性・サポート終了の情報

先日、EC-CUBEを運用している企業さんからサーバに関する相談があり、原因を探ってみたところ、不審なSSHアクセスの痕跡を発見し、authorized_keysファイルに見覚えのない公開鍵が追加されていることが判明しました。

この経験を踏まえて、EC-CUBE運用者の皆さんに向けて、SSH authorized_keysファイルのセキュリティ対策について共有したいと思います。

EC-CUBEサーバが狙われる理由

EC-CUBEのサーバには、次の情報があります。

  • 顧客の個人情報 - 氏名、住所、電話番号、メールアドレス
  • 売上データ - 競合他社にとって価値のある情報
  • 管理者権限 - サーバへの永続的なアクセス権

攻撃者がシステムに侵入すると、最初に行うことの一つがauthorized_keysファイルに自分の公開鍵を追加することです。これにより、パスワードを変更されても継続的にアクセスできる「バックドア」を作成します。

EC-CUBEサーバでの具体的な被害

以下のような被害が想定されます。

1. 顧客データの漏洩

追加された鍵でサーバにログインされると、データベースから顧客データを持ち出されるおそれがあります。

2. サイトの改ざん

  • 偽の決済ページへのリダイレクト
  • マルウェアの埋め込み
  • フィッシング目的での悪用

3. 内部情報の窃取

  • 管理画面のスクリーンショット
  • 設定ファイルの取得
  • ログファイルの解析

セキュリティ対策

1. ファイル権限の厳格化

# ファイルをroot所有、読み取り専用に変更
sudo chown root:root ~/.ssh/authorized_keys
sudo chmod 444 ~/.ssh/authorized_keys
# immutableフラグを設定(追加の保護)
sudo chattr +i ~/.ssh/authorized_keys

この設定により、EC-CUBEのアプリケーションユーザーが侵害されても、authorized_keysファイルの変更を防げます。

2. 中央管理による統一管理

複数のEC-CUBEサーバを運用している場合、Ansibleを使った中央管理が効果的です。

# /etc/ssh/sshd_config
AuthorizedKeysFile /etc/ssh/authorized_keys/%u

Ansibleプレイブック例

- name: Deploy authorized_keys for EC-CUBE servers
  hosts: eccube_servers
  tasks:
    - name: Create central authorized_keys directory
      file:
        path: /etc/ssh/authorized_keys
        state: directory
        owner: root
        group: root
        mode: '0755'
    - name: Deploy user keys
      copy:
        content: "{{ user_public_keys }}"
        dest: "/etc/ssh/authorized_keys/{{ ansible_user }}"
        owner: root
        group: root
        mode: '0444'

3. ファイル監視の実装

ハッシュ値を使ってファイルの変更を検知します。

#!/bin/bash
# /opt/scripts/check_authorized_keys.sh
KEYS_FILE="/home/eccube/.ssh/authorized_keys"
KNOWN_HASH_FILE="/opt/security/authorized_keys.hash"
CURRENT_HASH=$(sha256sum "$KEYS_FILE" | cut -d' ' -f1)
if [ -f "$KNOWN_HASH_FILE" ]; then
    KNOWN_HASH=$(cat "$KNOWN_HASH_FILE")
    if [ "$CURRENT_HASH" != "$KNOWN_HASH" ]; then
        echo "ALERT: authorized_keys file has been modified!" | \
        mail -s "EC-CUBE Security Alert" admin@your-domain.com
        logger "SECURITY: authorized_keys modified on EC-CUBE server"
    fi
else
    echo "$CURRENT_HASH" > "$KNOWN_HASH_FILE"
fi

cron設定

# 1時間ごとにチェック
0 * * * * /opt/scripts/check_authorized_keys.sh

緊急時の対応手順

authorized_keysファイルが改ざんされていた場合の手順です。

1. 即座にSSHアクセスを制限

# 一時的にSSHを無効化
sudo systemctl stop sshd

2. 不正なキーの削除

# immutableフラグを解除
sudo chattr -i ~/.ssh/authorized_keys
# 正規のキーのみに復元
sudo cp /backup/authorized_keys ~/.ssh/authorized_keys
sudo chattr +i ~/.ssh/authorized_keys

3. EC-CUBEアプリケーションの確認

  • 管理画面へのアクセスログ確認
  • 顧客データの整合性チェック
  • 決済ログの異常確認

4. パスワード変更とアクセス証跡の調査

サーバに入れるアカウントと、EC-CUBEの管理画面、データベースのパスワードを変更します。あわせて、SSHの認証ログ(/var/log/secure や /var/log/auth.log)から、不正な鍵でいつ、どこからログインされたかを調べます。

まとめ

EC-CUBEサーバのセキュリティは、お客さんの信頼とビジネスの継続性に直結する重要な課題です。authorized_keysファイルの適切な管理は、その第一歩です。

あなたのEC-CUBEを、ひとりにしない。

おかしい、あぶない、そろそろ。EC-CUBEのことは、クマひよ工房にひと声。

相談してみる

受付時間:土日祝と年末年始を除く、9時〜17時