アクセス制御に関する注意喚起が出ていました。11211/udp)が開放されていないかの確認方法についてメモしておきます。memcached開放により起きる問題はじめに、memcachedのポートを外部から接続可能にしてしまうと何が問題か整理しましょう。内部情報の漏洩1つはすぐに思い付くことですが、内部情報の漏洩です。memcachedは認証の無いプロトコルであるため(正確にはあるけど、誰も(?)使ってない)、外部から接続できれば即キャッシュ上の値を取得することができます。"localhost:11211”セッション情報を外部から取得可能となってしまいます。その他、キャッシュに乗っている値を根こそぎ取得できてしまいます。Attackの踏み台となる2018年2月現在は、情報漏洩よりもこちらの被害が問題視されています。UDPはコネクションレスであり送信元偽装が容易なため、リクエストに対してレスポンスが大きいプロトコルは、偽装した送信元(=攻撃先)への「跳ね返り」によりDDoS攻撃に利用できます。数年前には、ntpのmonlist機能でこのようなDDoSが指摘され、攻撃者に利用されてしまいました。攻撃に関する注意喚起)memcachedで「リクエストに対してレスポンスが大きい」ことですぐ思いつくのは、状態表示をおこなうstatsコマンドでしょう。6...(略)...END上記の例のように、statsというコマンドだけで大量のレスポンスが得られます。memcachedはCRLFを改行とみなすので、この例は律儀にprintfで"\r\n"を付けてます。(詳しい操作は念のため伏せますが)外部からmemcachedが操作可能ならば、適当なkeyにとても長い値をsetして、送信元を偽装したUDP通信でgetするだけで、大きいレスポンスを偽装先へ送りつけることができます。AttackによるDDoSへ踏み台として荷担してしまうことになります。0」というオプションを付加します。ファイルの「OPTIONS」に記述します。0"この「-U」は本来はUDPの待ち受けポートを指定するオプションなのですが、manに記載の通り、ゼロを指定するとUDPのLISTEN自体をOFFにします。ポート開放の確認memcachedは、TCP・UDPともに11211ポートがデフォルトで利用されます。通常はTCPしか使われないため、UDPは明示的に意識しない限り使うことはないでしょう。1.5.6からはUDPはデフォルトでは無効らしい)、特にUDPのフィルタは見落としがちです。ここからは、外部へ本当にポート開放していないかを確認する方法を記述します。こちらに書いた手法はポートスキャンに当たるため、必ず自らが管理するホストのみに行い、第三者のホスト・ネットワークをスキャンすることの無いようにしてください。nmapを利用ポート確認ならば、まず思いつくのはnmapでしょう。TCPポートがopenしているか確認するだけならば、SYNスキャン(-sS)するだけで十分です。出力は-oNオプションでテキストに落としておくと良いでしょう。ここでは192.168.2.0/24をスキャンし、オプションには-nを付けて逆引きしないようにしています。192.168.2.0/24出力にはclosedやfilteredのものも混じるので、openを検索します。latency)....(略)...TCPを1ポートだけのポートスキャンならば、相当広いネットワーク帯であっても数秒〜数分で終わるでしょう。11211/tcpの開放チェックは簡単ですが、UDPとなると少々やっかいです。周知の通り、UDPのポートスキャンは往々にして不正確で、nmapのUDPスキャンオプションである-sUしただけでは次のように「open|filtered」となり見逃してしまいます。secondsこのためnmapによるUDPスキャンの場合は、少々応答時間が増えますが、-sVでバージョン検出を付加すると正しくOpenを判断してくれます。secondsこの際、パケットキャプチャしてみると、以下のようにUDP上で「stats」コマンドを打っていることが分かります。UDPスキャンはとても遅いスキャンです。対象UDPポートから応答が無い場合、上記のオプションのままではタイムアウト待ちとなり1分以上かかるのが普通です。discoveryを行わない)、--host-timeout(何秒であきらめるか)を同時に指定して高速化を図ると良いでしょう。192.168.2.67日本語のmanではhost-timeoutの引数は「ミリ秒」と書かれていますが、この記述は古く、現在の単位は「秒」です。3秒というのはアグレッシブすぎる気もしますが、元々memcachedは高速応答しないと意味がないプロトコルのため、こんなもんでしょう。ちなみにnmapでもっと詳細情報を得たい場合、memcached-infoというnseスクリプトが利用できます。本当にちょこっと確認したいだけならば、nc(netcat)が便利です。以下のように11211に接続できるかどうかで、ポート開放を判断できます。2.0.21-stable...(略)...なおnc(netcat)にはUDPモードもありますが、コマンドラインからUDPで接続してTCP同様に手でコマンドを打っても正しく動作しません。次のようにstatsコマンドを組み立てる必要があります。11211を参考にさせて頂きました。その他のツール類memcached-toolを利用memcached-toolは、Perlで書かれたmemcached操作ツールです。https://github.com/memcached/memcached/blob/master/scripts/memcached-tool単独のスクリプトなので、このファイル1つをダウンロードしてPerlで実行するだけで気軽に試せます。接続はTCPのみサポートしているため、UDPの確認はできません。引数なしで実行するとヘルプが出ます。values...(略)...便利なのは、dumpコマンドです。これを実行すると現在キャッシュされている全てのkeyと値を出力してくれます。1000123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789root@kali:~#shodan個別のホスト探索にはあまり適しませんが、世界中のホストがどの程度11211/tcpを開放しているかは、shodanで確認できます。https://www.shodan.io/search?query=port%3A11211「port:11211」というクエリで検索できます。このクエリはログインしていないと利用できませんが、アカウント作成自体は無料です。関する罪」の情報公開請求をしました月別アーカイブはてなブログをはじめよう!ozumaさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。