ネットワークプロトコルについての楽しい話-講義26 |クラウドでのネットワークセキュリティ:ローカル専制君主ではありませんが、基本的な安全性とセキュリティも必要です

関連するブログ、参照この一連のオタクの時間-ネットワークプロトコルについての何か

前のセクションで見たように、コミュニティプロパティを構築してすべての人が共有できる環境を維持するのは簡単ではありません。意識的にルールを守っている入居者全員でいいのですが、無意識な入居者と出会うと大変です。

パブリッククラウドの環境と同様に、想像以上に純粋ではありません。ゴーストで生まれたすべてのハッカーは、あらゆる場所でポートをスキャンし、起動したアプリケーションを検出して、さまざまな脆弱性があるかどうかを確認します。あちこちで泥棒がコミュニティに忍び込んでいるようなものです。窓がきつく閉まっているかどうか、カーテンが閉まっているかどうか、所有者が眠っている場合、部屋に飛び込むときなどです。

eコマースアプリケーションを組み込んだ仮想マシンを作成するとします。これはあなたにとって非常に重要なアプリケーションです。この仮想マシンのオペレーティングシステムでは、別のバックグラウンドアプリケーションが誤ってインストールされ、ポートをリッスンしており、警戒度はそれほど高くありません。

仮想マシンのポートがパブリックネットワークに開かれています。バックグラウンドアプリケーション自体が脆弱である可能性があります。ハッカーはこのポートをスキャンし、バックグラウンドアプリケーションのポートを介してマシンに侵入し、eコマースを強化できます。ウェブサイトがハッキングされました。5つ星のセキュリティドアを購入した場合、トラックは開くことができませんが、トイレの窓のドアハンドルが壊れており、泥棒がトイレから入ってきました。

したがって、パブリッククラウド上の仮想マシンの場合、必要なポートのみを開き、他のすべてのポートを閉じることをお勧めします。現時点では、セキュリティ対策を通じて唯一の入り口を守る必要があります使用される方法は、多くの場合、IPおよびポートを制御するためにACL(アクセス制御リスト、アクセス制御リスト)を使用することです。

これらのルールを設定すると、指定されたIPセグメントのみが指定されたオープンインターフェイスにアクセスできます。脆弱なバックグラウンドプロセスがある場合でも、ブロックされ、ハッカーは侵入できません。クラウドプラットフォームでは、これらのルールセットはしばしばセキュリティグループと呼ばれますセキュリティグループはどのように実装されていますか?

ネットワークパケットがマシンに入るとどうなるか

ネットワークパケットがマシンに入るとどうなるかを見てみましょう。

まずMACヘッダーを削除して、自分のものかどうかを確認します。はいの場合、IPヘッダーを削除します。ターゲットIPを取得した後、ルートの判断を開始します。ルーティング判断の前は、このノードはPREROUTINGと呼ばれていますIPが自分のものであることが判明した場合、パケットは自分のものであり、上位のトランスポート層に送信される必要があります。このノードはINPUTと呼ばれます。IPが自分のものでない場合は、転送する必要があります。このノードはFORWARDと呼ばれます。自分の場合、上位層の処理が完了した後、通常は処理結果を返します。この処理結果は送出されます。このノードはOUTPUTと呼ばれます。FORWARDOUTPUTのどちらでも、ルーティング判定後に発生します。最後のノードはPOSTROUTINGです

プロセス全体を図に示します。 
ここに画像の説明を挿入
パッケージ全体の処理は元のプロセスのままですが、なぜこれら5つのノードに特別な注意を払う必要があるのでしょうか。

Netfilterフレームワークはiptablesを実装します

Linuxカーネルには、Netfilterと呼ばれるフレームワークがあるためです。これらのノードにフック関数を挿入できます。これらの関数は、データパケットを傍受し、データパケットに介入できます。例えば、いくつかの変更を行い、その後、TCP / IPプロトコルスタック処理するかどうかの決定を踏襲し、またはあなたは、プロトコル・スタックにそれを返すことができる、つまり、ACCEPT ;アウトやフィルター、全く伝送ではありませんDROP ;ありQUEUEは、Aに送信されましたユーザーモードプロセス。

これは理解が難しくなります。内部負荷分散によく使用されます。つまり、データはターゲットアドレス1とターゲットアドレス2にしばらく渡され、ターゲットアドレスの数と重みが変わる場合があります。多くの場合、プロトコルスタックはこのような複雑なロジックを処理できません。このデータを引き継ぎ、独自のロジックを実装する関数を作成する必要があります。

このNetfilterフレームワークがあることは素晴らしいことです。これらのフック関数を実装できる限り、IP転送プロセス中にいつでもこのプロセスに介入できます。

よく知られている実装は、カーネルモジュールip_tablesです。ルールに従ってパケットを処理できるように、これらの5つのノードに機能を埋め込みます。機能に応じて、接続追跡(conntrack)パケットフィルタリング(fi​​lter)ネットワークアドレス変換(nat)、およびデータパケット変更(mangle)の 4つのカテゴリに分類できますその中で、接続追跡は他の機能に依存する基本機能です。他の3つは、パケットフィルタリング、変更、およびネットワークアドレス変換を実装できます。

では、ユーザモード、あなたが知っている必要がありますあり、クライアントプログラムのiptablesのカーネルコマンドラインルールの介入で、。カーネルの機能は、テーブルとチェーンの概念であるiptablesのコマンドラインに対応しています。 
ここに画像の説明を挿入
iptablesテーブルは4つのタイプに分かれています:raw-> mangle-> nat-> filter。これらの4つの優先度は順番下げられ、 rawは一般的に使用されないため、主な機能は他の3つのテーブルに実装されています。各テーブルに複数のチェーンを設定できます。

フィルターテーブルはフィルター機能処理し、主に3つのチェーンを含みます。

  • 入力チェーン:ターゲットアドレスがローカルであるすべてのデータパケットをフィルタリングします。
  • FORWARD chain:このマシンを通過するすべてのデータパケットをフィルタリングします。
  • 出力チェーン:このマシンで生成されたすべてのデータパケットをフィルタリングします。

natテーブルは主にネットワークアドレス変換を扱い、Snat(データパケットの送信元アドレスを変更する)Dnat(データパケットの宛先アドレスを変更する実行できます

  • PREROUTINGチェーン:パケットがファイアウォールに到達したときに宛先アドレスを変更できます。
  • 出力チェーン:ローカルで生成されたデータパケットのターゲットアドレスを変更できます。
  • POSTROUTINGチェーン:パケットがファイアウォールを離れるときに、パケットの送信元アドレスを変更します。

マングルテーブルは、主にデータパッケージを変更するためのものです。

  • PREROUTINGチェーン。
  • INPUTチェーン。
  • フォワードチェーン;
  • 出力链;
  • POSTROUTINGチェーン。

iptablesのテーブルとチェーンが上記のプロセス図に追加され、次の図とプロセスが形成されます。
ここに画像の説明を挿入

  1. データパケットが入ると、高度なマングルテーブルのPREROUTINGチェーン。ここで、必要に応じてデータパケットヘッダーの内容を変更した後、natテーブルのPREROUTINGチェーンに入ることができますここで、必要に応じてDnat、つまりターゲットアドレス変換を行うことができます。
  2. 経路判定に入る場合は、ローカルに入るのか転送するのかを判断する必要があります。
  3. ローカルの場合は、INPUTチェーンに入り、条件付きフィルタリングによってエントリを制限します。
  4. 次に、マシンに入り、次にOUTPUTチェーンに入り、条件に従ってフィルターをかけ、ローカルのままにします。
  5. 転送の場合は、FORWARDチェーンに入り、条件付きフィルタリングに基づいて転送をフィルタリングします。
  6. 次に、POSTRAOUTINGチェーンに入ります。ここで、Snatを実行して、ネットワークインターフェイスを離れることができます。

iptablesコマンドを使用すると、特定のセキュリティ戦略をクラウドに実装できます。たとえば、前の覗き見イベントを処理できます。まず、すべてのドアを閉じます。

iptables -t filter -A INPUT -s 0.0.0.0/0.0.0.0 -d X.X.X.X -j DROP

-sはソースIPアドレスセグメントを示し、-dはターゲットアドレスセグメントを示し、DROPは破棄されたことを示します。つまり、それがどこから来たかに関係なく、私のマシンにアクセスしたい場合、すべて拒否され、誰も入りません。

しかし、壊れているとわかった場合は、sshは入力できなくなり、リモートで操作できなくなり、開くことができます。

iptables -I INPUT -s 0.0.0.0/0.0.0.0 -d X.X.X.X -p tcp --dport 22 -j ACCEPT

このマシンがWebサービスを提供している場合は、ポート80も開く必要があります。もちろん、いったん開いた後、このポート80は十分に保護する必要がありますが、規制の観点から開く必要があります。

iptables -A INPUT -s 0.0.0.0/0.0.0.0 -d X.X.X.X -p tcp --dport 80 -j ACCEPT

このようにして、他のすべてのアカウントがブロックされ、セキュリティドアにアクセスできます。セキュリティドアが5つ星である限り、より安全です。

これらのルールは仮想マシンで構成でき、iptablesを自分でインストールします。ただし、仮想マシンの数が非常に多く、構成する必要がある場合は、ユーザーにとって非常に面倒です。クラウドプラットフォームで作業の一部を行うことはできますか?

iptablesはクラウドプラットフォームフィルタリングアクセスを実装し、セキュリティグループを作成します

もちろんです。クラウドプラットフォームでは、通常、1つ以上の仮想マシンが特定のセキュリティグループに属することが許可されており、異なるセキュリティグループに属する仮想マシン間のアクセスと、仮想マシンへの外部ネットワークアクセスは、セキュリティグループでフィルタリングする必要があります。 
ここに画像の説明を挿入
たとえば、次の図では、一連のWebサイトを作成します。これらはすべてTomcatのフロントエンドであり、ポート8080を外部に開放します。データベースはMySQLを使用し、ポート3306を開きます。

操作とメンテナンスを容易にするために、2つのセキュリティグループを作成し、Tomcatが常駐する仮想マシンをセキュリティグループに配置します。セキュリティグループポートでは、任意のIPアドレス0.0.0.0/0がポート8080へのアクセスを許可されていますが、sshのポート22の場合、管理者ネットワークセグメント203.0.113.0/24のみがアクセスを許可されています。

MySQLが存在する仮想マシンをセキュリティグループBに配置します。セキュリティグループBでは、セキュリティグループAのマシンのみがポート3306へのアクセスを許可されていますが、sshのポート22の場合、管理者ネットワークセグメント203.0.113.0/24へのアクセスも許可されています。

これらのセキュリティグループルールは、セキュリティグループ内の各仮想マシンに自動的に配布できるため、多数の仮想マシンのセキュリティポリシーを制御できます。このバッチ配信はどのように行われますか?この写真を覚えていますか? 
ここに画像の説明を挿入
両方のVMはタップネットワークカードを介してブリッジに接続されていますが、ブリッジはレイヤー2であり、2つのVMは自由に相互に通信できるため、これらのiptablesルールを均一に構成する場所が必要です。

追加のブリッジを追加し、このブリッジでiptablesルールを構成し、このブリッジのユーザーインターフェイスで構成されたルールを配置できます。次に、各マシンでエージェントを実行して、ユーザーが設定したセキュリティグループをiptablesルールに変更し、このブリッジで設定します。

セキュリティ問題が解決され、iptablesは本当に強力です!忙しくないでください。iptablesにはフィルターの他にnatがあり、この機能も非常に重要です。

iptablesがクラウドプラットフォームネットワークアドレス変換を実装

前の章で述べたように、クラウドプラットフォームを設計するときは、仮想マシンと物理ネットワークの間のネットワークを分離する必要がありますが、仮想マシンは物理ネットワークを通じて外部と通信する必要があるため、物理ネットワークの外にある必要があります。そのときに、ネットワークアドレス変換を実行します。つまり、natです。これは、iptablesで実行できます。

IPヘッダーに送信元IPアドレスと宛先IPアドレスが含まれていることを学習しました。どちらも他のアドレスに変換できます。送信元IPアドレスをSnatとして変換し、宛先IPアドレスをDnatとして変換します。

この問題について考えたことはありますか?TCPアクセスは次々と発生し、自宅のWIFIに接続するIPアドレスはプライベートネットワークIP 192.168.1.xです。ホームルーターを介して163のWebサイトにアクセスした後、Webサイトの結果はどのようにしてラップトップに到達しますか?確かに192.168.1.xを渡すことはできません。これはプライベートネットワークIPであり、パブリックネットワークのポジショニング機能がなく、このネットワークセグメントを使用している多くの人々、大勢の人がいます。どうすればあなたを見つけることができますか?

したがって、自宅から163のWebサイトにアクセスすると、ルーターの出口でSnatを実行し、オペレーターの出口もSnatになる可能性があります。これにより、最終的にプライベートネットワークのIPアドレスがパブリックネットワークのIPアドレスに変換され、163 WebサイトはこのパブリックIPアドレスを介して結果を返し、ラップトップに到達するまでNATを返します。

クラウドプラットフォームの仮想マシンもこのようなものです。プライベートネットワークのIPアドレスしかありません。外部ネットワークポートに到達すると、Snatを実行してコンピュータールームのネットワークIPに変換し、データセンターを離れるときにパブリックネットワークIPに変換します。 
ここに画像の説明を挿入
ここで質問があります。外部ネットワークポートでSnatを実行すると、すべてコンピュータルームネットワークIPに変換されますか、それとも各仮想マシンがコンピュータルームネットワークIPに対応し、最終的にパブリックネットワークIPに対応しますか?前述のように、パブリックネットワークIPは非常に高価で、仮想マシンも多数あります。もちろん、それぞれに個別のコンピュータールームネットワークとパブリックネットワークIPを設定することはできないため、この種のSnatは特別な種類のSnat、MASQUERADE(アドレス変装)です。

このようにして、すべての仮想マシンはコンピュータールームネットワークとパブリックネットワークのIPアドレスを共有し、外部ネットワークポートから送信される仮想マシンはすべてこのIPアドレスに変換されます。それから別の質問が来て、すべてがパブリックIPになりました。163のWebサイトが結果を返したとき、それは誰で、NatはどのプライベートIPになりますか?

これは、Netfilterの接続追跡(conntrack)機能です。TCPプロトコルの場合、必ず最初に接続を確立します。「送信元/宛先IP +送信元/宛先ポート」を使用して接続を一意に識別できます。この接続はconntrackテーブルに配置されます。当時、このマシンは163のWebサイトを要求しており、送信元アドレスはパブリックIPアドレスへのSnatでしたが、接続レコードはまだconntrackテーブルにあります。163 Webサイトがデータを返すと、正しいプライベートIPアドレスを見つけるためのレコードが見つかります。

これは、仮想マシンがクライアントとして機能する場合です。仮想マシンがサーバーとして機能する場合はどうなりますか?つまり、163のWebサイトが仮想マシンに展開されている場合はどうなるのでしょうか。

現時点では、このWebサイトの固定物理ネットワークIPアドレスとパブリックIPアドレスを構成する必要があります。このとき、SnatルールとDnatルールの設定を表示する必要があります。

外部アクセスが入ると、外部ネットワークポートがパブリックネットワークIPアドレスをDnatルールを介してプライベートネットワークIPアドレスに変換し、仮想マシンに到達します。仮想マシンには163のWebサイトが含まれています。結果が返されます。プライベートIPアドレスを、割り当てられた固定パブリックIPアドレスに変換します。

同様のルールは次のとおりです。

  • 送信元アドレス変換(Snat): iptables -t nat -A -s 私网IP -j Snat --to-source 外网IP
  • 宛先アドレス変換(Dnat): iptables -t nat -A -PREROUTING -d 外网IP -j Dnat --to-destination 私网IP

これまでのところ、iptablesは違法な覗き見プライバシーの問題を解決しています。

まとめ

このセクションではこれですべてです。まとめましょう。

  • クラウドでのセキュリティポリシーの一般的な方法は、iptablesのルールを使用することです。その5つの段階、PREROUTING、INPUT、FORWARD、OUTPUT、POSTROUTINGを覚えておいてください。
  • iptablesはraw、mangle、nat、filterの4つのテーブルに分かれています。セキュリティ戦略は主にフィルターテーブルで実装され、仮想ネットワークと物理ネットワークアドレスの変換は主にnatテーブルで実装されます。

最後に、私はあなたに2つの思考質問を残しておきます。

  1. このセクションでは、iptablesのフィルター機能とnat機能に焦点を当てます。iptablesは、QUEUEを使用して負荷分散を実現することもできます。その方法を知っていますか?
  2. このセクションでは、クラウドの盗用の問題についてのみ説明します。正当なユーザーであるにもかかわらず、ネットワークチャネルを意識的に捕捉していない場合、どの戦略を採用する必要がありますか?
公開された40元の記事 ウォンの賞賛1 ビュー5349

おすすめ

転載: blog.csdn.net/aha_jasper/article/details/105575699