AWSにおけるJPCERT/CC発行「memcachedのアクセス制御に関する注意喚起」の対応方法

2018.02.28

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

2018/03/01更新 Amazon EC2に11211/tcpの制限の説明を追加

ども、大瀧です。
昨日、JPCERT/CCよりmemcachedのアクセス制御に関する注意喚起が発表されました。

ここでは、インターネットにおいて11211/udpポートへのアクセストラフィックが増加しており、これに応答するサーバーが攻撃の踏み台にされたり、memcachedが保持する情報が漏洩する可能性を指摘しています。 memcachedは、一般的にはWebアプリケーションのサーバー間でキャッシュデータを保持する目的で利用するためインターネットにポートを開放する必要はありません。またUDPのほかにTCPもサポートし、TCPの方が良く使われますしIPアドレス偽装にも耐性があるので、TCPを利用することが推奨されます。

AWSでの対応

AWSでmemcachedサーバーを立てるためには、以下のサービスを利用します。

  • Amazon ElastiCache
  • Amazon EC2

それぞれについて、アクセス制御の考え方と対応方法を示します。

Amazon ElastiCache

ElastiCacheは、memcacheないしRedisクラスタを提供するマネージドサービスです。通常のクラスタ構成ではインターネットからのアクセスが不可能な構成(プライベートネットワークであるAmazon VPC内に配置され、グローバルIPを持たない)ため、今回の注意喚起の対象ではなく対応は必要ありません。開発や検証目的でインターネットからのアクセスをNATで転送する構成がドキュメントにはあるので、この構成になっていないかを確認すれば十分でしょう。

ちなみに、注意喚起にあるUDPでのアクセスは特にドキュメントに記述にありませんが手元で検証した限りではUDPアクセスが可能でした。ドキュメント通りにクラスタを構成する限りではセキュリティグループに11211/udpの許可ルールは入らないため、実害はないと思われます。

Amazon EC2

EC2はLinuxやWindowsの仮想マシンを提供するサービスで、仮想マシンにmemcachedを導入することでmemcachedサーバーとして稼働させることができます。ElastiCacheと同様、外部からのアクセスはセキュリティグループによる制御が可能ですので、インターネットからの11211/udpポートを許可リストから外せばOKです。また、memcachedの起動オプションからUDPを無効にする対応(-U 0)も有効でしょう。

11211/tcpポートもインターネットへの公開は控え、想定するクライアントのIPアドレスからの接続のみを許可するようセキュリティグループを設定しましょう。memcachedにはクライアントの認証/認可の仕組みがありませんので、「接続できる=データの走査や追加/削除が可能」ということになります。

memcached本家の対応

以下のTwitterの様子から、最新バージョン(1.5.6)ではデフォルトでUDPが無効になる変更が入ったようです。

@chibieggさん、@dormandoさんGood Jobですね!

まとめ

memcachedのアクセス制御に関する注意喚起について、11211/udpポートをインターネットに公開しないための対応方法をご紹介しました。意図して公開する構成は稀だと思いますので、設計や設定にミスがないから今一度確認いただければと思います。