Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

4.3.14. DDoS 攻撃からの memcached のセキュリティー保護

Memcached は、オープンソースの高パフォーマンスの分散メモリーオブジェクトのキャッシュシステムです。性質的に理想的ですが、ほとんどの場合は、データベース負荷を軽減することで、動的 Web アプリケーションのパフォーマンスを改善するために使用されます。
Memcached は、データベース呼び出し、API 呼び出し、またはページレンダリングの結果から、文字列やオブジェクトなどの任意のデータの小規模なチャンクについてのインメモリーキーと値のストアです。Memcached により、アプリケーションは、これが必要とするシステムの部分からメモリーを取得して、アプリケーションが必要以上の領域からメモリーにアクセスできるようにします。

Memcached Vulnerabilities

2018 では、公開インターネットに公開される memcached サーバーを悪用することで、DDoS 増幅攻撃の脆弱性が見つかりました。これらの攻撃は、UDP プロトコルを使用して memcached 通信を利用してトランスポートに使用されます。この攻撃は、アンプティブ率が高いため有効です。数十バイトサイズのリクエストは、数十メガバイト、数十メガバイトの応答を生成できます。この問題には CVE-2018-1000115 が割り当てられました。
ほとんどの場合、memcached サービスはパブリックインターネットに公開する必要はありません。このような公開には独自のセキュリティーの問題がある可能性があり、リモート攻撃者は memcached に保存されている情報を漏えいしたり、変更したりすることが可能になります。

memcached のハードニング

セキュリティーリスクを軽減するには、お使いの設定に合わせて以下の手順を実行します。
  • LAN でファイアウォールを設定します。memcached サーバーがローカルネットワーク内からのみアクセスできるようにする必要がある場合は、memcached で使用されるポートへの外部トラフィックを許可しません。たとえば、デフォルトで memcached によって使用されるポート 11211 を、許可されているポートの一覧から削除します。
    ~]# firewall-cmd --remove-port=11211/udp
    ~]# firewall-cmd --runtime-to-permanent
    特定の IP 範囲がポート 11211 を使用するのを許可する firewalld コマンドは、「ゾーンを使用した受信トラフィックの管理」 を参照してください。
  • クライアントがこのプロトコルが必要でない場合には、/etc/sysconfig/memcached ファイルの OPTIONS 変数に -U 0 -p 11211 値を追加して UDP を無効にします。
    OPTIONS="-U 0 -p 11211"
  • アプリケーションと同じマシン上の単一の memcached サーバーのみを使用する場合、memcached が localhost トラフィックのみをリッスンするように設定します。/etc/sysconfig/memcachedOPTIONS-l 127.0.0.1,::1 値を追加します。
    OPTIONS="-l 127.0.0.1,::1"
  • 認証の変更が可能な場合は、SASL(Simple Authentication and Security Layer)認証を有効にします。
    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. -S の値を OPTIONS/etc/sysconfig/memcached に追加して、memcached の SASL サポートを有効にします。
      OPTIONS="-S"
    5. memcached サーバーを再起動して変更を適用します。
    6. SASL データベースで作成されたユーザー名およびパスワードを、アプリケーションの memcached クライアント設定に追加します。
  • stunnel を使用した memcached クライアントとサーバー間の通信を暗号化します。memcached は TLS をサポートしないため、回避策として、memcached プロトコルの上部に TLS を提供する stunnel などのプロキシーを使用することができます。
    stunnel が PSK(Pre Shared Keys)を使用するように設定するか、ユーザー証明書を使用する方が適切です。証明書を使用する場合、認証されたユーザーのみが memcached サーバーに到達でき、トラフィックは暗号化されます。
    重要
    トンネルを使用して memcached にアクセスする場合には、サービスが localhost でのみリッスンするか、ファイアウォールがネットワークから memcached ポートへのアクセスを阻止していることを確認します。
    詳細は、「stunnel の使用」 を参照してください。

このページには機械翻訳が使用されている場合があります (詳細はこちら)。