Red Hat Training

A Red Hat training course is available for RHEL 8

11.7. Memcached サービスのセキュリティー保護

Memcached は、オープンソースの高性能分散メモリーオブジェクトキャッシングシステムです。データベースの負荷を軽減して、動的 Web アプリケーションのパフォーマンスを向上させることができます。

Memcached は、データベース呼び出し、API 呼び出し、またはページレンダリングの結果から、文字列やオブジェクトなどの任意のデータの小さなチャンクを格納するメモリー内のキーと値のストアです。Memcached を使用すると、十分に活用されていない領域から、より多くのメモリーを必要とするアプリケーションにメモリーを割り当てることができます。

2018 年に、パブリックインターネットに公開されている Memcached サーバーを悪用することによる DDoS 増幅攻撃の脆弱性が発見されました。これらの攻撃は、トランスポートに UDP プロトコルを使用する Memcached 通信を利用します。この攻撃は増幅率が高いため、効果的です。数百バイトのサイズの要求は、数メガバイトまたは数百メガバイトのサイズの応答を生成することができます。

ほとんどの場合、memcached サービスはパブリックインターネットに公開する必要はありません。このような弱点には、リモートの攻撃者が memcached に保存されている情報を漏洩または変更できるなど、独自のセキュリティー問題があります。

このセクションに従って、DDoS 攻撃の可能性に対して Memcached サービスを使用してシステムを強化します。

11.7.1. DDoS に対する Memcached の強化

セキュリティーリスクを軽減するために、以下の手順のうち、お使いの設定に該当するものをできるだけ多く実行してください。

手順

  • LAN にファイアウォールを設定してください。Memcached サーバーにローカルネットワークだけでアクセスできるようにする必要がある場合は、memcached サービスで使用されるポートに外部トラフィックをルーティングしないでください。たとえば、許可されたポートのリストからデフォルトのポート 11211 を削除します。

    # firewall-cmd --remove-port=11211/udp
    # firewall-cmd --runtime-to-permanent
  • アプリケーションと同じマシンで単一の memcached サーバーを使用する場合、ローカルホストトラフィックのみをリッスンするように memcached を設定します。/etc/sysconfig/memcached ファイルの OPTIONS 値を変更します。

    OPTIONS="-l 127.0.0.1,::1"
  • Simple Authentication and Security Layer (SASL) 認証を有効にします。

    1. /etc/sasl2/memcached.conf ファイルで、以下のように修正または追加します。

      sasldb_path: /path.to/memcached.sasldb
    2. SASL データベースにアカウントを追加します。

      # saslpasswd2 -a memcached -c cacheuser -f /path.to/memcached.sasldb
    3. memcached のユーザーとグループがデータベースにアクセスできることを確認します。

      # chown memcached:memcached /path.to/memcached.sasldb
    4. /etc/sysconfig/memcached ファイルの OPTIONS パラメーターに -S 値を追加して、Memcached で SASL サポートを有効にします。

      OPTIONS="-S"
    5. Memcached サーバーを再起動して、変更を適用します。

      # systemctl restart memcached
    6. SASL データベースで作成したユーザー名とパスワードを、お使いのアプリケーションの Memcached クライアント設定に追加します。
  • memcached クライアントとサーバー間の通信を TLS で暗号化します。

    1. /etc/sysconfig/memcached ファイルの OPTIONS パラメーターに -Z 値を追加して、TLS を使用した Memcached クライアントとサーバー間の暗号化通信を有効にします。

      OPTIONS="-Z"
    2. -o ssl_chain_cert オプションを使用して、証明書チェーンファイルパスを PEM 形式で追加します。
    3. -o ssl_key オプションを使用して、秘密鍵ファイルのパスを追加します。