例が添付の図において説明されている、本開示のいくつかの実施形態に対する言及を、これから詳細に行う。使用可能であればどこででも、類似または同様の参照番号を、図において使用してよく、類似または同様の機能を指し示してよいことに留意されたい。図は、もっぱら説明の目的で、本開示の実施形態を描写している。当業者は、本明細書で説明される開示の本質または得られる便益から逸脱することなく、本明細書で説明される構造および方法の代替的実施形態が使用されてよいことを、以下の説明から容易に認識するであろう。
本開示は、ハッカーがバックエンドデータセットにアクセスすることを防御する、および任意のデータセットへの進行中のアクセスを防御する、システムプラットフォームに関する。より詳細には、本発明は、より高度なセキュリティソリューションのために、無権限リソースへのエスカレートするアクセスを止めることができる。
一実施形態においては、データセンタのためのセキュリティプラットフォームが、開示される。セキュリティプラットフォームは、時間の特定の測定基準に基づいたローリング方式で、自らを継続的および反復的に再構築する。ローリングセキュリティは、時間の短い期間のうちにサーバソフトウェアを自動的に置き換えて、オペレーティングシステムまたはアプリケーションにおいて見出されるいかなる構成またはホールも完全に一掃し、それによって、いかなるサーバへのアクセスも時間の短い期間に制限する。例えば、この時間は、10秒ほどの短さ、または数時間ほどの長さとすることができる。一実施形態においては、標準的な構成は、再構築どうしの間をデフォルトで10分とする。ハッカーは、ハッキングを知り、バックエンドにおけるアーキテクチャがどのようなものかを解明し、サーバに不正侵入し、さらなるアクセスのためにルートキットをインストールしようと試みるのに、そのようなほんの短い間しか有さない。したがって、サーバの置き換えが非常に頻繁に生じるので、ハッカーがハッキングを完了しようと試みることは、無意味である。ハッカーが、パスワードまたは公開鍵基盤(PKI)鍵を発見する時までには、オペレーティングシステム(OS)は、新しいパスワードおよび鍵とともに、置き換えられようとしている。
システムは、限定することなく、時間の短い期間内に、OS、アプリケーション、コンテンツ、データ、およびキャッシュを含む、デバイス上のソフトウェアスタック全体を置き換えることができる。システムは、本物のユーザおよびハッカーユーザの両方を途切れなく管理するために、ネットワーク内の複数のデバイス(例えば、ロードバランサ、ファイアウォールなど)と完全に統合されることができる。他の実施形態においては、セッションカウント、接続カウント、一意的センサトリガ、および他のセキュリティ表示が、再構築をトリガするために使用されることができる。他の実施形態においては、セッションは、絶縁された環境内に動的に含められることができ、セッションの時間は、絶縁された環境内において実行されているハッキングを調べるために、拡張されることができる。
システムは、動的にアプリケーション平均セッションカウンタおよび時間を調べ、再構築タイミングを動的に調整することができ、またはより厳格なセキュリティポリシを可能にするために、手動構成を有することができる。システムは、任意の単一のセッションがフロントエンドアプリケーションおよびデータセットに接続されることができる時間を制限して、いかなるシステムに対する長期間リモートアクセスを防止する。
図1Aは、実施形態による、ローリングセキュリティのためのセキュリティ保護されたデータセンタのコンポーネントを有する、ネットワーク接続された通信システムのブロック図である。システムは、いくつかのクライアントデバイス105と、ネットワーク110と、ルータ115と、フロントエンドファイアウォール120A〜Cと、ロードバランサ125A〜Cと、フロントエンドサーバグループ130A〜Dと、バックエンドファイアウォールまたはロードバランサ132A〜Cと、バックエンドサーバグループ135A〜Dと、ストレージシステム140A〜Dと、セキュリティサーバ148とを含む。ルータ、ファイアウォール120、ロードバランサ125、フロントエンドサーバ130、ファイアウォール132、バックエンドサーバ135、およびストレージシステム140は、データセンタのコンポーネントであってよい。図1Aにおいては、限られた数のデバイスだけが示されているが、他の実施形態においては、より多数のデバイス(例えば、5つ以上のフロントエンドサーバグループ)が、存在してよい。
クライアントデバイス105は、とりわけ、スマートフォン、タブレットコンピュータ、ラップトップコンピュータ、およびデスクトップコンピュータなどの、コンピューティングデバイスとすることができる。ユーザは、タッチスクリーンまたはマウスおよびキーボードなどの、インターフェースを通して、クライアントデバイス105のソフトウェアと対話する。クライアントデバイス105は、ユーザによって制御されて、フロントエンドサーバグループ130によってホストされる様々なアプリケーションとのアプリケーションセッションおよび接続を確立する。
ルータ115は、ネットワーク110とデータセンタ内の残りのコンポーネントとの間のネットワークトラフィックをルーティングする。フロントエンドファイアウォール120は、適用されるルールセットを使用して、着信および発信ネットワークトラフィックを制御する、ハードウェアベースのファイアウォールデバイスである。ファイアウォールは、データセンタの内部ネットワークと外部ネットワーク110との間に、障壁を確立する。ロードバランサ125は、多数のフロントエンドサーバグループ130の間にネットワークトラフィックを分散させる。ロードバランサは、いずれか1つの特定のフロントエンドサーバグループ130にかかる負担を減らすことによって、アプリケーションの能力および信頼性を向上させる。
各フロントエンドサーバグループ130は、いくつかの物理フロントエンドサーバを含む。サーバは、1または複数のプロセッサを含むことができるサーバクラスのコンピューティングデバイスであり、オペレーティングシステムを実行する。サーバは、いくつかのソフトウェアアプリケーションをホストする。クライアント105は、フロントエンドサーバによってホストされるアプリケーションとのネットワーキング接続およびアプリケーションセッションを確立することができる。セキュリティ目的で、各サーバグループは、ある時間が満了した後、ローリングされること(すなわち、サーバグループを再構築することによって)ができ、サーバグループは、時間差方式で、ローリングされることができる。サーバグループが、ローリングされたときでさえも、アプリケーションが、依然として、クライアントデバイス105に利用可能であるように、同じアプリケーションのコピーが、複数のサーバグループ130によってホストされる。一実施形態においては、全部で9つのフロントエンドサーバグループ130が、存在し、各フロントエンドサーバグループ130は、数千のフロントエンドサーバを含む。
バックエンドファイアウォール132は、適用されるルールセットを使用して、フロントエンドサーバグループ130とバックエンドサーバグループ135との間のトラフィックを制御する、ハードウェアベースのファイアウォールデバイスまたは仮想ファイアウォールである。各バックエンドサーバグループ135は、1または複数のバックエンドサーバを含む。バックエンドサーバは、ストレージシステム140内に記憶されたデータへのアクセスを可能にする。バックエンドサーバは、フロントエンドサーバグループ130によってホストされるアプリケーションによって要求されると、ストレージシステム140にデータを記憶し、ストレージシステム140からデータを取り出す。バックエンドサーバの例は、SQLデータベースへのアクセスを提供するSQLサーバである。
セキュリティサーバ148は、フロントエンドサーバグループ130のローリング動作を調整する、セキュリティ制御モジュール150を含む。具体的には、セキュリティ制御モジュール150は、定期的な時間差のある間隔で、フロントエンドサーバグループ130の再構築を反復的に開始する。サーバの再構築は、サーバのハードドライブイメージを公知の好ましい置き換えイメージで置き換えることによって、オペレーティングシステム(OS)、アプリケーション、コンテンツ、およびキャッシュを含む、サーバのソフトウェアスタック全体を置き換えることを含むことができる。サーバの再構築は、サーバのファームウェアを置き換えることを含むこともできる。再構築は、これらの動作に加えて、他の動作を含んでもよい。再構築どうしの間の時間は、10秒ほどの短さ、または数時間ほどの長さとすることができる。他の実施形態においては、標準的な再構築時間は、デフォルトで10分である。
定期的および頻繁にサーバを反復的に再構築することは、ハッカーにハッキングを短い時間(例えば、5秒未満)のうちに完了することを強いるが、応答時間およびアップロード時間は、通常、より長い時間を必要とするので、それは、ほぼ不可能である。例えば、DNSサーバの場合、DNSサーバは、新しいOSおよびDNSデータベースキャッシュを用いて、10秒おきに再構築されることができる。この状況においては、ハッカーは、プロトコルをハッキングし、キャッシュスプーフィングによって偽データをアップロードするための時間を有さない。ハッカーによってアップロードされたいずれの悪意あるコードも、また、排除される。サーバに結び付けられたあらゆるものが、置き換えられ、外部からリモートでOSに働きかけることを不可能にする。同時に、標準的なカスタマ要求のために必要とされるすべてのコンテンツは、正しく供給される。これは、今日のソフトウェアにおいて見出されるいかなるホールも完璧に解決する。
セキュリティ制御モジュール150は、また、各フロントエンドサーバグループ(例えば、130A)の再構築を、他のフロントエンドサーバグループ(例えば、130B)に関して、時間的にずらすことによって、ローリングベースで再構築を開始する。各フロントエンドサーバグループ130は、サーバグループ130がいつオンラインになり、トラフィックに対するサービスを開始するかについての時間差手法を生成して、異なる時刻にユーザセッションに対するサービスを開始する。セッションがそこから開始し、終了するプロセスは、すべて、単一のサーバ、またはサーバのグループ130内で生じる。これは、グループ内における簡単なロードバランシングを可能にするばかりでなく、セッションの終了がグループ内で生じることも可能にする。サーバグループ130内のサーバは、それらのOSを同時に置き換えるが、その間に、他のサーバグループ130が、ちょうどオンラインになっており、新しいユーザセッションに対するサービスを行っている。サーバグループ130を再構築するためのタイムフレームは、サーバグループ130内のアプリケーションの機能性に応じて、多様なものとすることができる。
セキュリティ制御モジュール150は、また、ロードバランサ125と通信し、ロードバランサ125が、新しいOSインストールのためにシャットダウンされているサーバグループを知り、それによって、ロードバランサ125が、オンラインであるサーバグループ130だけにネットワークトラフィックを分配することを可能にするようにする。セキュリティ制御モジュール150は、サーバグループ130がいつシャットダウンのための準備を開始するかを示すための情報を、ロードバランサ125に送信することができる。それに応答して、ロードバランサ125は、サーバグループ130をオフラインにし、サーバグループ130との新しい接続が確立されることを防止する。サーバグループ130が、ひとたび再構築されると、セキュリティ制御モジュール150は、サーバグループ130が新しい接続を受け入れる準備を整えたことを示す情報を、ロードバランサ125に送信することができる。それに応答して、ロードバランサ125は、サーバグループ130をオンラインに戻し、サーバグループ130との新しい接続が確立されることを可能にする。
セキュリティ制御モジュール150は、サーバグループ130を再構築するとき、サーバグループ130のパスワードを変更することもできる。頻繁なパスワード変更は、サーバ上でパスワード攻撃を行うことを不可能にする。
セキュリティ制御モジュール150は、ソフトウェア、ハードウェアとして、またはハードウェアおよびソフトウェアの組み合わせとして、実施されることができる。他の実施形態においては、セキュリティ制御モジュール150は、セキュリティサーバ148以外のデータセンタの1または複数のコンポーネントにわたって分散させることができる。
図1Bは、別の実施形態による、ローリングセキュリティのためのセキュリティ保護されたデータセンタのコンポーネントを有する、ネットワーク接続された通信システムのブロック図である。図1Bは、今度は、フロントエンド仮想マシン(VM)グループ160と、ハイパーバイザ190とを含むということを除いて、図1Aに類似している。各VMグループ160は、1または複数のVMを含む。VMは、コンピュータサーバのエミュレーションなど、コンピュータシステムのエミュレーションである。各VMは、自らの仮想ディスクに接続されてよい。VMは、本明細書では、仮想サーバと呼ばれることがある。
ハイパーバイザ190は、VMグループ160を生成し、管理する。各ハイパーバイザ190は、自らの物理フロントエンドサーバ159上に配置されてよく、同じ物理フロントエンドサーバ上に配置されたVMのグループ160を制御してもよい。例えば、ハイパーバイザ190AおよびVMグループ160Aは、単一の物理サーバ159A上に配置される。
この実施形態においては、セキュリティ制御モジュール150は、フロントエンドVMグループ160(すなわち、仮想サーバグループ)の再構築を定期的に開始することによって、ネットワーク接続された通信システムにローリングセキュリティを提供する。VMグループ160が再構築されているときであってさえも、アプリケーションが常にオンラインであるように、複数のVMグループ160が同じアプリケーションのコピーをホストする。VMの再構築は、VMの状態を元の公知の好ましい状態に回復することを含むことができる。再構築は、以下でより詳細に説明される。
それ以外は、セキュリティ制御モジュール150の動作は、図1Aに関連して説明されたものと同じである。一実施形態においては、ネットワーク接続された通信システムは、定期的な時間差ベースで再構築される、物理サーバグループおよび仮想サーバグループの両方を含んでよい。
図1Cは、さらなる実施形態による、ローリングセキュリティのためのセキュリティ保護されたデータセンタのコンポーネントを有する、ネットワーク接続された通信システムのブロック図である。図1Cは、今度は、サーバ159上に配置された、コンテナグループ960と、コンテナエンジン990とを含むということを除いて、図1Bに類似している。
各コンテナグループ960は、オペレーティングシステムレベルの仮想化のために使用される、1または複数のソフトウェアコンテナを含む。ソフトウェアコンテナは、単一のパッケージ内にバンドリングされた、アプリケーション、それの従属物、ライブラリ、およびバイナリを含む。ソフトウェアコンテナは、同じサーバ159上の他のソフトウェアコンテナと、オペレーティングシステム(図示されず)を共用する。ソフトウェアコンテナは、オペレーションシステムのカーネル内でインスタンス化され、アプリケーションのインスタンスを仮想化する。ソフトウェアコンテナは、リソースのブロック内に入れられるアプリケーションまたはサービスの迅速な生成を可能にする。コンテナは、コアOSからのコアライブラリファイルを共用することができるので、コンテナの配備は、高速である。ソフトウェアコンテナは、コンテナエンジン990によって管理される。一実施形態においては、ソフトウェアコンテナ960は、DOCKERコンテナであり、またはオープンコンテナプロジェクト規格に準拠している。
この実施形態においては、セキュリティ制御モジュール150は、コンテナグループ960の再構築をローリングベースで定期的に開始することによって、ネットワーク接続された通信システムにローリングセキュリティを提供する。コンテナグループ960のいくつかが再構築されているときであってさえも、アプリケーションが常にオンラインであるように、同じアプリケーションのコピーが、複数のコンテナグループ960内に含まれる。コンテナは、コンテナを公知の好ましい状態に回復することによって、再構築されることができる。再構築は、以下でより詳細に説明される。それ以外は、セキュリティ制御モジュール150の動作は、図1Aおよび図1Bに関連して説明されたものと同じである。一実施形態においては、コンテナの再構築は、物理サーバおよび仮想マシンを再構築するよりも効率的であることができる。例えば、コンテナは、〜30秒で回復され、配備されることができる。対照的に、サーバおよび仮想マシンの再構築は、はるかに長くかかることができる。コンテナのローリングは、物理サーバおよびVMのローリングよりも容易であることができるが、それらは、共用されるコアOSファイルの使用に起因する、より高いリスクを有する。ハイパーバイザアーキテクチャも、リスクを有するが、OSは、各VMに占有されるので、そのことが、コンテナプラットフォームと比較して、リスクを低減させる。物理サーバをローリングするときは、ハッカーは、サーバハイジャックを行うのに、サーバのBIOSレベル制御を有する必要があり、またはハッカーは、リモート管理ツールアクセスを必要とするので、リスクは、やはりより低い。
本明細書の説明は、主として物理サーバまたは仮想マシンのローリングに重点が置かれることがある。しかしながら、本明細書で説明されるローリングセキュリティの原理は、物理サーバ、仮想マシン、またはコンテナのローリングに適用可能である。
図2Aは、実施形態による、フロントエンドサーバ200のブロック図である。フロントエンドサーバ200は、図1Aのフロントエンドサーバグループ130に属するフロントエンドサーバを表してよい。フロントエンドサーバ200は、いくつかのソフトウェアアプリケーション250A〜Cと、OS152と、ファームウェア154と、フロントエンドセキュリティモジュール156とを含む。OS152の例は、とりわけ、LINUXおよびMICROSOFT WINDOWS(登録商標)を含む。アプリケーション250は、OS152の上で実行される。ファームウェア154は、プログラム可能なメモリチップ内に記憶されたソフトウェアを含む。
クライアントデバイス105は、アプリケーション250とのネットワーキング接続C1〜C6を確立することができる。接続は、クライアントデバイス105におけるソケットとサーバ200との間の双方向通信チャネルとして使用される。接続は、ハンドシェイクプロセスを使用して、ある時点において確立され、その後、後の時点において終了される。接続は、プロトコルによって定義されるいくつかの状態を含んでよい。接続の例は、開放型システム間相互接続(OSI)モデルのトランスポートレイヤの伝送制御プロトコル(TCP)接続である。
クライアントデバイス105は、また、接続C1〜C6上において、アプリケーション250とのアプリケーションユーザセッションS1〜S6を確立する。ユーザセッションは、与えられたアプリケーションのための2つ以上の通信エンティティ間の対話的な情報交換である。ユーザセッションは、ある時点において確立され、その後、後の時点において終了される。ユーザセッションの間、1または複数のメッセージが、セッションのために確立された接続上において、各方向に送信されてよい。一実施形態においては、アプリケーションセッションは、トランスポートレイヤの上位に存在するOSIセッションレイヤのセッションである。
一例においては、クレジットカード認証セッション(例えば、S1、S2)は、ユーザが、クライアントデバイス105Aにおいて、クレジットカードをリーダに通したときに、開始されることができ、クライアントデバイス105Aは、クレジットカード支払いアプリケーション250Aとの接続およびセッションを確立する。クレジットカード支払いアプリケーション250Aは、クライアントデバイス105Aと通信して、クライアントデバイス105Aからクレジットカード番号および請求金額を獲得する。クレジットカード支払いアプリケーション250は、その後、バックエンドサーバ135を介して、データベース140にアクセスし、クレジットカード番号が、支払いを処理するのに十分な信用を有するかどうかを決定する。クレジットカード支払いアプリケーション250は、その後、はい/いいえ応答をクライアントデバイス105Aに提供する。接続およびセッションは、その後、応答をクライアントデバイス105Aに提供した後、終了される。
別の例においては、ウェブフォームセッション(例えば、S3、S4)は、ユーザが、クライアント105Bにおいて、URLをブラウザに入力したときに、開始されることができる。クライアントデバイス105Bは、ウェブサイト250Bとのセッションを確立する。クライアントデバイス105Bは、ウェブサイト250Bとのセッションを確立する。サーバ200は、複数のセッションを処理していてよい。サーバ200は、セッション毎に時間カウンタを開始する。ユーザは、セッションが閉じる前に、フォームに記入するためのxの時間を有する。ウェブフォームデータを記入するのにかかる時間のため、異なるサーバが、最初のセッションからのフォーム提出を処理してよい。
さらなる例においては、オンラインバンキングセッション(例えば、S5、S6)は、ユーザが、クライアントデバイス105Bにおいて、モバイルバンキングアプリケーションを開いたときに、開始されることができ、クライアントデバイス105Bは、オンラインバンキングアプリケーション250Cとの接続およびセッションを確立する。オンラインバンキングアプリケーション250Cは、クライアントデバイス105Bと通信して、クライアントデバイス105Bから認証情報を獲得する。ひとたび認証されると、クライアントデバイス105Bは、勘定残高を要求し、預金のための小切手のコピーをアップロードし、他のバンキング要求を行うことができる。バンキングアプリケーション250Cは、バックエンドサーバ135を介して、データベース140内に記憶された勘定情報にアクセスして、これらの要求を処理することができる。接続およびセッションは、セッションの最後に、最終的に終了される。
フロントエンドセキュリティモジュール156は、セキュリティ制御モジュール150と通信して、ローリングセキュリティを実施するためのセキュリティ情報を送信および受信することができる。セキュリティモジュール156は、フロントエンドサーバ200の再構築を開始するためのコマンドを受信することができる。コマンドは、再構築のためのテンプレートとして使用されるべき、公知の好ましいマスタソフトウェアイメージである、ゴールデンイメージの名前を含むことができる。セキュリティモジュール156は、その後、コマンドに従って、OS152、アプリケーション、および/またはファームウェア154の置き換えなどを行うことによって、フロントエンドサーバ200を再構築する。OS152、アプリケーション250、および/またはファームウェア154は、サーバ200上の既存のソフトウェアをゴールデンイメージで上書きすること、サーバ200上の既存のソフトウェアを削除し、ゴールデンイメージから新しいソフトウェアをサーバ200上にコピーすることなどによって、置き換えられることができる。ゴールデンイメージは、サーバ200内のディスク上にローカルに、またはネットワーク上の他の場所に記憶されることができる。
変化する再構築時刻を用いる異なる再構築技法が、使用されることができる。一実施形態においては、単一のゴールデンイメージが、複数のサーバ200を再構築するために、使用されることができる。ゴールデンイメージからのデータが、フロントエンドサーバ200上にコピーされることができ、その後、OS152またはアプリケーション250を構成するために、後処理構成が、各フロントエンドサーバ200上で実行される。例えば、サーバのための一意名およびサーバのためのIPアドレスを確立するために、異なるスクリプトが、各フロントエンドサーバ200上で実行されてよい。一実施形態においては、各フロントエンドサーバ200に固有および一意の複数のゴールデンイメージが、存在してよい。ゴールデンイメージからのデータは、後処理構成の必要なしに、それぞれのサーバ上にコピーされることができ、そのことが、短縮再構築時刻を短縮する。
別の実施形態においては、データ差分技法が、フロントエンドサーバ200を再構築するために使用される。具体的には、フロントエンドサーバ200のソフトウェアのデータブロックまたはファイルは、ゴールデンイメージのデータブロックまたはファイルと比較されることができる。異なるデータブロックまたはファイルだけが、ゴールデンイメージから回復される。ブロックまたはファイルベースの差分を利用することによって、ローカルディスク、リモートSANディスク、NASディスクを介した、事前構成されたOSおよびアプリケーション構成の迅速な配備が、可能である。他の再構築技法が可能であってよく、依然として、本開示の範囲内に包含されることに留意されたい。
一実施形態においては、再構築が標準的な予期された構成であること、および状態が良好な知られた構成であることを検証するために、様々なハッシュもしくは暗号化モデル、またはブロック状態比較が、再構築されたソフトウェアイメージに適用されることができる。例えば、再構築ソフトウェアは、再構築が予期された通りに実行されたことを検証するために、ハッシュ値を計算され、その後、ゴールデンイメージのハッシュと比較されることができる。
一実施形態においては、フロントエンドセキュリティモジュール156は、改ざんに対する防御のために、再構築の間、フロントエンドサーバ200をロックダウンセキュリティモードに置く。再構築の間、フロントエンドセキュリティモジュール156は、セキュリティサーバ148のセキュリティ制御モジュール150との通信以外の、何らかのポートへのいかなるトラフィックもブロックするパーミッションを有する、それの内部ファイアウォールアクセス制御リスト(ACL)を設定してよい。ACLは、ネットワークポートを使用することを許可された特定のエンティティを伴う、ネットワークポートのリストとすることができる。他のサードパーティアプリケーションは、コンプライアンスの状態の検証のために、必要に応じて、アクセスを与えられてもよい。
セキュリティモジュール156は、また、OS152のパスワードを変更するためのコマンドを受信し、その後、コマンドに従って、パスワードを置き換えることができる。一実施形態においては、セキュリティ情報は、インテリジェントなプラットフォーム管理インターフェース(IPMI)を介して伝達される。
図2Bは、実施形態による、VM204を用いるフロントエンドサーバ202のブロック図である。フロントエンドサーバ202は、図1Bに属するフロントエンドサーバ159を表してよい。フロントエンドサーバ202は、いくつかのVM204と、ハイパーバイザ208と、OS152と、フロントエンドセキュリティモジュール156Aとを含む。各VMは、仮想化OS206と、アプリケーション250とを含む。
フロントエンドセキュリティモジュール156Aは、フロントエンドモジュール156に類似しているが、今度は、VM204を再構築するためのコマンドに応答して、VMを再構築する。VM204の再構築は、図2Aに関して説明された再構築に類似しており、やはり、VM204を生成するために、VM204のゴールデンイメージを利用すること、データ差分を利用すること、および/またはVM204を再構築した後、再構築検証を実行することができる。
図2Cは、実施形態による、コンテナ292を用いるフロントエンドサーバ290のブロック図である。フロントエンドサーバ290は、図1Cに属するフロントエンドサーバ159を表してよい。フロントエンドサーバ290は、いくつかのコンテナ292と、コンテナエンジン294と、OS152と、フロントエンドセキュリティモジュール156Bとを含む。各コンテナは、仮想化アプリケーション250を含む。
フロントエンドセキュリティモジュール156Bは、フロントエンドモジュール156に類似しているが、今度は、コンテナ292を再構築するためのコマンドに応答して、ローリングベースでコンテナ292を再構築する。コンテナ292の再構築は、図2Aに関して説明された再構築に類似しており、やはり、コンテナ292を生成するために、コンテナ292のゴールデンイメージを利用すること、データ差分を利用すること、および/またはコンテナ292を再構築した後、再構築検証を実行することができる。
図3は、実施形態による、ローリングサーバグループの図である。4つのサーバグループ130A〜130Dのローリング動作が、図3に示されている。他の実施形態においては、図3に示されるローリング動作は、VMグループ160およびソフトウェアコンテナグループ960のローリングにも適用可能である。
各サーバグループ130は、異なるローリングセキュリティモード、すなわち、(1)通常動作モード、(2)シャットダウン準備モード、および(3)再構築モードで動作する。通常動作モードの間、サーバグループ130は、新しいユーザセッションおよび接続を受け入れ、それらにサービスを行う。シャットダウン準備モードの間、サーバグループ130は、新しいセッションおよび接続を受け入れない。既存のセッションおよび接続は、終了することを許可される。一実施形態においては、ロードバランサ125は、特定のサーバグループ130が、シャットダウン準備モードに入ろうとしており、新しいセッションおよび接続を受け入れていないことを通知されてよい。ロードバランサ125は、新しいセッションおよび接続が行われることができる実行可能なサーバグループ130から、サーバグループ130を削除することによって応答する。再構築モードの間、サーバグループ130は、サービスから除外され、サーバグループ130のソフトウェアを置き換えることによって再構築される。モードは、60秒おきなど、定期的に反復される。
サーバグループ130は、異なるサーバグループの再構築が異なる時刻に開始されるように、ローリング方式で動作させられる。例えば、サーバグループ130Aは、1:00:50に再構築され、サーバグループ130Bは、1:01:00に再構築され、サーバグループ130Cは、1:01:10に再構築され、サーバグループ130Dは、1:01:20に再構築される。再構築時刻は、互いに10秒だけずらされている。再構築時刻をずらすことは、サーバグループ130によってホストされるアプリケーションのために、新しい接続およびユーザセッションを受け入れるための、サービス中であり利用可能なサーバグループ130が、常に少なくとも1つ存在することを保証する。言い換えると、通常動作モードにあるサーバグループ130が、常に少なくとも1つ存在する。
一実施形態においては、ハッカーの存在を示すセキュリティ条件がトリガされた場合、サーバグループ130についてのシャットダウン準備モードは、延期されてよい。セキュリティ条件は、例えば、セッションが、疑わしいIPと関連付けられる場合、またはあまりにも長くセッションを開いたままにしてある場合、トリガされてよい。その状況においては、セキュリティ制御モジュール150は、ハッカーのアクションをより良く理解するために、セッションの高度な分析、セッションの封じ込め、およびセッションの記録を実施してよい。あるいは、セキュリティ条件がトリガされた場合、セキュリティモジュール150は、ハッキングされたセッションが検出されたハッキングされたサーバを、サーバグループ130から取り除いてよい。その後、サーバグループ130のローリングが中断されないように、新しいサーバが、ハッキングされたサーバの代わりに、ホットスワップされる。
図4は、実施形態による、セキュリティ制御モジュール130のブロック図である。セキュリティ制御モジュール130は、通信モジュール405と、ローリングタイミングモジュール410と、ローリング制御モジュール415と、パスワード変更モジュール420とを含む。他の実施形態においては、セキュリティ制御モジュール130は、図4に示されていない追加のモジュールを有してよい。
ローリングタイミングモジュール410は、(本明細書では一括して「ローリングエンティティグループ」と呼ばれる)物理サーバグループ130、VMグループ160、またはコンテナグループ960が、通常動作モード、シャットダウン準備モード、および再構築モードなどの異なるモードにいつ入るべきかについてのずらされたタイミングを示す、ローリングタイミング情報を維持する。タイミング情報は、ローリングエンティティグループと、各ローリングエンティティグループがいつ異なるモードに入るべきかについての特定の時刻とのリストを含む、タイミングスケジュールの形式を取ってよい。以下の表は、タイミングスケジュールの例である。
表の第1列は、サーバグループを識別する。第2列は、サーバグループがいつ通常動作モードに入るべきかについての開始時刻を識別する。第3列は、サーバグループがいつシャットダウン準備モードに入るべきかを識別する。第4列は、再構築プロセスがいつ開始すべきかを識別する。
他の実施形態においては、タイミング情報は、タイミングスケジュールの代わりに、最大時間限界の形式を取ってよい。例えば、タイミング情報は、ローリングエンティティグループの最大稼働時間、通常動作モードの最大持続時間、シャットダウン準備モードの最大持続時間、および/または再構築モードの最大持続時間を含んでよい。タイミング情報は、ローリングエンティティグループどうしの間のずらされた遅れの長さを記述する情報を含んでもよい。
ローリングモードのためのローリングタイミング情報は、ユーザによって手動で設定されてよい。別の実施形態においては、タイミング情報は、サーバ上における以前のアプリケーションセッションまたは接続の持続時間を監視し、監視された持続時間を含むアプリケーションプロファイルを生成することによって、機械学習されてよい。持続時間の統計的尺度(例えば、平均持続時間、最大持続時間)が、監視された持続時間から決定されることができる。統計的尺度は、その後、各ローリングモードの最大持続時間を決定するために、乗数倍される(例えば、8×、10×)。その結果、再構築どうしの間の時間は、ローリングエンティティグループが再構築される前に、新しいユーザセッションおよび接続が確立され、完了するのに十分なものとなる。例えば、ユーザセッションが、6秒の長さになる傾向にある場合、この値は、8倍されて、定期的な再構築どうしの間に48秒の持続時間をもたらしてよく、それは、セッション持続時間よりもはるかに長い。
ローリング制御モジュール415は、上で説明されたローリングタイミングスケジュールまたは最大時間限界などのローリングタイミング情報に従って、ローリングエンティティグループのローリング動作を制御する。ローリング制御モジュール415は、ローリングタイミング情報を使用して、サーバグループがいるべきローリングモードを決定する。ローリング制御モジュール415は、その後、図3に示されたようなローリング方式でローリングエンティティグループを動作させる制御コマンドを、通信モジュール405を介して、ロードバランサ125およびローリングエンティティグループに送信する。ローリングエンティティグループが、制御されたずらされた時刻にローリングされることを保証するために、各ローリングエンティティグループに対するコマンドは、他のローリングエンティティグループに対するコマンドに関して、時間的にずらされてよい。
通常動作モードを開始するために、ローリング制御モジュール415は、通常動作開始コマンドをロードバランサ125に送信してよい。コマンドは、特定のローリングエンティティグループを識別し、そのローリングエンティティグループのための通常動作モードが開始すべきであることも示す。ロードバランサ125は、識別されたローリングエンティティグループとのセッションおよび接続が確立されることを可能にすることによって、コマンドに応答する。一実施形態においては、通常動作開始コマンドは、通常動作が開始される適切なローリングエンティティグループに送信されてもよい。
シャットダウン準備モードを開始するために、ローリング制御モジュール415は、シャットダウン準備開始コマンドをロードバランサ125に送信してよい。コマンドは、特定のローリングエンティティグループを識別し、そのローリングエンティティグループのためのシャットダウン準備モードが開始すべきであることも示す。ロードバランサ125は、識別されたローリングエンティティグループとのいかなる新しいセッションおよび接続も確立されないようにすることによって、コマンドに応答する。ローリングエンティティグループの既存のセッションおよび接続は、完了することを許可される。一実施形態においては、シャットダウン準備開始コマンドは、ローリングエンティティグループのための適切なサーバに送信されてもよい。
再構築を開始するために、ローリング制御モジュール415は、再構築開始コマンドを、再構築されるべきローリングエンティティグループと関連付けられた適切なフロントエンドサーバに送信してよい。コマンドは、再構築のために使用されるべき、公知の好ましいソフトウェアイメージの名前を含むことができる。それに応じて、ローリングエンティティグループは、公知の好ましいソフトウェアイメージを用いて再構築されることができる。再構築がひとたび完了されると、ローリング制御モジュール415は、適切なフロントエンドサーバから再構築確認情報を受信してもよい。
加えて、再構築に先立って、ローリング制御モジュール415は、データを、ローリングエンティティグループから別個のストレージドライブにコピーすることができる。データの変更について監視し、他のサーバにわたる大域的な比較のための変更のインライン分析を行うために、機械学習が、使用されることができる。これは、エンティティがオンラインであった間に、ハッカーによってOS、アプリケーション、またはファイルに対して行われた、すべての変更の理解を可能にする。再構築状態およびタイミングを学習する機械は、重要であるが、より高度な学習を可能にするための、ハッキングされた状況を制圧する再構築状態の遅れは、ローリング制御モジュール415を介して管理されるシステム制御の一部でもある。ローリング制御モジュール415は、ハッカーの能力を知り、新しい攻撃についてより多く知るための、より多くのデータの学習および収集を意図して、ハッカーにサービスし続けるために、ローカルサーバグループ、ルータ115、およびファイアウォール120と通信することもできる。
パスワード変更モジュール420は、サーバグループ130のためのパスワード変更を開始する。パスワードは、とりわけ、OS、データベース、またはアプリケーションパスワードとすることができる。パスワードは、ローリングタイミング情報によって示されるように、再構築毎に変更されることができ、または特定のタイムスタンプで(すなわち、ある間隔で)再構築されることができる。パスワード変更の頻度は、ローリングエンティティグループ再構築の頻度と同じであること、または異なることができる。一実施形態においては、パスワード変更モジュール420は、新しいパスワードを生成し、そのパスワードをサーバに送信することによって、パスワード変更を開始することができる。別の実施形態においては、パスワード変更モジュール420は、パスワード変更コマンドをサーバに送信することによって、パスワード変更を開始することができる。サーバは、その後、コマンドに応答して、新しいパスワードを生成する。数々のアルゴリズムのうちのいずれかが、パスワードを生成するために使用されることができる。一実施形態においては、タイムスタンプは、パスワードを生成するために使用される要素の1つである。
通信モジュール405は、ネットワーク接続された通信システムにおいて、サーバ、ロードバランサ125、および他のデバイスと通信する。通信モジュール405は、ローリングする時間差方式でローリングエンティティグループを動作させるローリングセキュリティコマンドを送信してよい。通信モジュール405は、ローリングエンティティグループにおいてパスワード変更を開始するコマンドを送信してよい。通信モジュール405は、ネットワーク接続された通信システムにおいて、デバイスから他のタイプの情報を受信してもよい。
図5は、実施形態による、ローリングセキュリティの方法についてのフローチャートである。ステップ505において、ローリングエンティティグループによってホストされるアプリケーションのための以前の接続またはユーザセッションが、監視される。持続時間が、アプリケーションプロファイル内に記憶される。十分な情報がひとたび収集されると、異なるローリングエンティティグループがいつ再構築されるべきかについてのずらされたタイミングなど、ローリングエンティティグループの異なるローリングセキュリティモードについてのずらされたタイミングを記述する、ローリングタイミング情報を生成するために、以前の接続またはユーザセッションについての持続時間が、使用される。
ステップ510において、セキュリティ制御モジュール150は、ローリングタイミング情報によって指定されるタイミングで、第1のローリングエンティティグループの通常動作を開始する。ステップ512において、セキュリティ制御モジュール150は、ローリングタイミング情報によって指定されるタイミングで、ローリングエンティティグループのシャットダウン準備モードを開始する。ステップ514において、セキュリティ制御モジュール150は、ローリングタイミング情報によって指定されるタイミングで、第1のローリングエンティティグループの再構築を開始する。加えて、セキュリティ制御モジュール150は、同時に、第1のローリングエンティティグループのパスワード変更を開始する。ステップ510〜ステップ514は、定期的な間隔などで、継続的に反復する。
ステップ520において、セキュリティ制御モジュール150は、ローリングタイミング情報によって指定されるタイミングで、第2のローリングエンティティグループの通常動作を開始する。ステップ522において、セキュリティ制御モジュール150は、ローリングタイミング情報によって指定されるタイミングで、第2のローリングエンティティグループのシャットダウン準備モードを開始する。ステップ524において、セキュリティ制御モジュール150は、ローリングタイミング情報によって指定されるタイミングで、第2のローリングエンティティグループの再構築を開始する。加えて、セキュリティ制御モジュール150は、同時に、第2のローリングエンティティグループのパスワード変更を開始する。ステップ520〜ステップ524は、定期的な間隔などで、継続的に反復する。
他のローリングエンティティグループが、ステップ510〜ステップ514およびステップ520〜ステップ524と類似の方式で、制御されてもよい。加えて、各ローリングエンティティグループについて、再構築、通常動作モード、およびシャットダウン準備モードの開始は、他のローリングエンティティグループに関して、時間的にずらされる。セキュリティモードの時間差は、図3に示されるローリングセキュリティをもたらす。
図6は、一実施形態による、ファイアウォール120、ルータ115、ロードバランサ125、クライアントデバイス105、フロントエンドサーバ130もしくは159、バックエンドサーバ135、またはセキュリティサーバ148などの、コンピューティングデバイスのハードウェアアーキテクチャを示している。一実施形態においては、コンピューティングデバイスは、バス601を通して互いにデータおよび制御信号を交換する、プロセッサ602、メモリ603、ストレージモジュール604、入力モジュール(例えば、キーボードおよびマウスなど)606、ディスプレイモジュール607、ならびに通信インターフェース605などのコンポーネントを含む、コンピュータである。ストレージモジュール604は、1または複数の非一時的コンピュータ可読記憶媒体(例えば、ハードディスクまたはソリッドステートドライブ)として実施され、本明細書で説明されるローリングセキュリティ機能を実施するために、メモリ603と連携して、プロセッサ602によって実行されるソフトウェア命令640(例えば、モジュール)を記憶する。オペレーティングシステムソフトウェアおよび他のアプリケーションソフトウェアは、プロセッサ602上で動作するために、ストレージモジュール604内に記憶されてもよい。
本明細書で説明されるローリングセキュリティは、フロントエンドサーバ130、仮想マシン160、およびコンテナ960だけに限定されない。他の実施形態においては、ローリングセキュリティは、ファイアウォール120、ロードバランサ125、スイッチ、バックエンドサーバ135、およびバックエンドストレージ140などの、データセンタ内のコンピューティングシステムの他のグループを定期的に再構築するために使用されることができる。加えて、本明細書で説明されるモジュールの機能は、単一のモジュール内に組み合わされてよく、または追加のモジュール間で分散されてよい。
他の実施形態においては、本明細書で説明されるローリングセキュリティは、一般的なソフトウェア機能性を提供する、データセンタ外のコンピューティングシステムの他のグループに適用されてよい。コンピューティングシステムは、デスクトップ、ラップトップ、iパッド、iフォン、ならびに乗物(自動車、列車、飛行機)内のコンピューティングシステム、および発電所、発電機内のコンピューティングシステムなどとすることができる。飛行機の例においては、飛行機は、いくつかの並列フライト制御システムを含んでよく、それらの各々は、飛行機に対するフライト制御を提供することができる。時間差ベースのフライト制御システムのローリングは、少なくとも1つのフライト制御システムが常にオンラインであることを保証しながら、フライト制御システムがハッキングされることを防御することができる。
本開示を読むことで、当業者は、ローリングセキュリティのためのさらなる追加の代替的設計を理解することができる。したがって、本開示の特定の実施形態および適用が示され、説明されたが、本開示は、本明細書で開示された通りの構成およびコンポーネントに限定されないことが理解されるべきである。当業者に明らかであり得る様々な修正、変化、および変形が、添付の特許請求の範囲において定義される本開示の主旨および範囲から逸脱することなく、本明細書の本開示の方法および装置の配置、動作、および細部に施されてよい。